14 декабря 2016 г.

jarvis

«Слушай, чё ты гонишь, у меня телефон/фотоаппарат лица определяет!» - скажет внимательный читатель и будет прав. В отличие от нейросетей, тут произошел прорыв: в 2001 году появился Viola–Jones object detection framework, который позволил анализировать картинки на предмет лиц в реальном времени. И он, разумеется, есть в OpenCV (cvHaarDetectObjects). У алгоритма вагон недостатков. Он чувствителен к смене освещения, повороту лица по любой оси, выдаёт кучу ложных срабатываний, но он БЫСТРЫЙ. Ну, как быстрый… Всё от параметров зависит. Поскольку учить свой детектор я пока не готов, то возьмём те, которые идут в комплекте с OpenCV. Тут главное что? Сразу найти в том же комплекте пример. Поскольку в примере – правильные параметры. Например, кажется разумным взять «haarcascade_frontalface_default». Он же default. Но в примере, почему-то, haarcascade_frontalface_alt. Который, как выясняется, ложных лиц меньше видит. Но медленнее. Кто бы мог подумать. В этот раз я конкретно загнался и заставил комп заниматься тем, для чего его придумали – вычислениями. К счастью, детектор параметрами небогат, а разумные их значения ограниченны. На картинке вы видите результат прогона scaleFactor для размера окна 50х50. Нам нужно, чтобы количество синих лиц было не меньше, чем у значения из примера (1.3), а красная скорость – выше. То есть, оба столбика должны быть положительными. Легко заметить, что такое значение ровно ОДНО – 1.4. И даёт оно +0.5% по лицам и +10% по скорости. Всё остальное или лиц не видит, или работает медленно. Есть ещё интересный диапазон 1.625 – 1.725, который при незначительном уменьшении количества найденных лиц даёт до +40% по скорости. Только на практике выясняется, что там лиц мало, а мусора – много. Так что используйте значения из примера – не прогадаете #Jarvis

Комментариев нет:

Отправить комментарий