2016-09-09 1 views
3

Я использую лобный детектор лица Dlib для обнаружения лиц в изображениях; однако он не может обнаруживать лица размером менее 80 на 80 пикселей.Обнаружение лобных поверхностей лобового края для небольших лиц

пример Dlib в face_detection_ex.cpp пересчитывает входное изображение, используя pyramid_up() увеличить размеры лица. Однако это делает алгоритм намного медленнее, потому что ему придется искать на большем изображении.

Интересно, знает ли кто-нибудь решение этой проблемы.

ответ

5

Детектор лица Dlib обучен обработке 80x80 лиц. Если вы хотите обнаружить более мелкие грани, у вас есть два пути:

  1. увеличить разрешение увеличить лицо. вы можете использовать pyramid_up или любой другой способ вшей cv :: resize. И вы можете увеличить resultion не 2x, но можешь быть 1.5x будет достаточно - это на вас
  2. поезда нового детектора лица, которое будет работать на малых гранях - dlib есть образцы для тренировочного процесса

И следующего ваши Вопрос - это функция детектора лица. Да, это зависит от разрешения, и если вы хотите обнаружить 20x20 лиц на изображении 13 MP - это будет медленным. Для того, чтобы заставить его работать быстро у вас есть эти опции:

  1. уменьшить количество пикселей, которые должны быть обработаны с помощью детектора - использовать правильный масштаб и область интереса
  2. использование полутоновых изображений
  3. reduce the amount of scale changes at scanning process
  4. использовать рекомендации от FAQ. Могу только добавить, что код MinGW/GCC работает примерно на 20% быстрее, чем MSVC, а код Android/ARM не использует инструкции SIMD
  5. для видео: apply motion detection и обнаруживать только измененные области (обрезать их вручную и обнаруживать в обрезанной области), а также запускать кадры в отдельных потоках, чтобы потреблять все ядра ЦП
+0

Я попытался обучить детектор лица без повышения качества изображений, чтобы я мог обнаруживать меньшие лица. Я попробовал его в файле примера «* fhog_object_detector_ex.cpp *». Я прокомментировал две строки upsampling ('upsample_image_dataset') и уменьшил размер окна обнаружения до 40x40. Однако он не способен обнаруживать большую часть граней в тестовых изображениях. Не могли бы вы рассказать мне, где моя ошибка? – mhaghighat