Как наилучшим образом настроить константы распознавания лица (то есть порог)? - PullRequest
0 голосов
/ 21 декабря 2018

Я создал рабочую программу распознавания лиц, но время от времени она может: 1) Не определять лицо / обнаруживать лишнее лицо как лицо.2) Когда у него появляется знакомое лицо, он может узнать, что это новый человек, или узнать, что новое незнакомое лицо - это кто-то другой.

Эти две проблемы ложных положительных и истинных отрицательных значений связаны с такими константами, как параметры cascade.detectMultiScale: scaleFactor, minNeighbors, minSize, maxSize.И в face_recognizer num_components, порог.

Итак, мой вопрос: как мне найти оптимальные значения для этих параметров?

1 Ответ

0 голосов
/ 21 декабря 2018

Экспериментально вы должны выполнить поиск по сетке.Поэтому, если у вас есть метки (правильные значения полей и т. Д.), Вы можете выполнять поиск в сетке таким образом, чтобы определить набор гиперпараметров, которые вы хотите настроить, и проверить каждую возможную комбинацию из них, чтобы найти наилучший.

Например, в face_recognizer вы можете попробовать и поэкспериментировать с порогом следующим образом:

for threshold in [0.5, 0.6, 0.7, 0.8, 0.9]:
    for image in the trainset:
      res = face_recognizer(image, threshold=threshold)
      assert (res==label)

Если вы хотите проверить более одного гиперпараметра, вы можете просто добавить еще один цикл for:

for param_1 in [value_1, value_2...]:
  for param_2 in [value_1, value_2...]:
    for image in the trainset:
      res = face_recognizer(image, threshold=threshold)
      assert (res==label)

Вы можете добавить столько гиперпараметров, сколько хотите.Вам просто нужно сохранить средние потери и ошибки с соответствующими значениями гиперпараметров.Таким образом, вы можете выбрать лучшие из них после поиска по сетке и выбрать окончательную модель (параметры) с этим.

...