Обнаружение особенностей лица с использованием OpenCV Haar-каскадов

Я использую Java с OpenCV Библиотека для обнаружения Face,Eyes а также Mouth с помощью Laptop Camera,

Что я сделал до сих пор:

  1. Захват видеокадров с использованием VideoCapture объект.
  2. детектировать Face с помощью Haar-Cascades,
  3. Разделите Face область в Top Регион и Bottom Область, край.
  4. Ищи Eyes внутри Top область, край.
  5. Ищи Mouth внутри Bottom область, край.

Проблема, с которой я сталкиваюсь:

  • Сначала видео работает нормально, и вдруг оно замедляется.

Основные вопросы:

  1. Работают ли резолюции Высших Камер лучше для Каскада Хаара?

  2. Нужно ли снимать видеокадры в определенном масштабе? например (100px X100px)?

  3. Делать Haar-Cascades работать лучше в Gray-scale Изображений?

  4. Разные условия освещения имеют значение?

  5. Что делает метод detectMultiScale(params) точно делать?

  6. Если я хочу пойти на дальнейший анализ для Eye Blinking, Eye Closure Duration, Mouth Yawning, Head Nodding а также Head Orientation обнаружить усталость (сонливость) с помощью Support Vector Machineкакие-нибудь советы?

Ваша помощь ценится!

1 ответ

Решение

Следующая статья даст вам представление о том, что происходит под капотом, я очень рекомендую прочитать статью.

Работают ли резолюции Высших Камер лучше для Каскада Хаара?

Не обязательно, cascade.detectMultiScale имеет параметры для настройки для различной ширины ввода, сценариев высоты, как minSize а также maxSize, Это необязательные параметры. Однако, вы можете настроить их, чтобы получить надежные прогнозы, если у вас есть контроль над размером входного изображения. Если вы установите minSize к меньшему значению и игнорировать maxSize тогда он будет работать и для изображений с меньшим и высоким разрешением, но производительность пострадает. Кроме того, если вы теперь представляете, как получается, что нет разницы между изображениями в высоком и низком разрешении, то вам следует учитывать, что cascade.detectMultiScale Внутреннее масштабирование изображений до более низких разрешений для повышения производительности, поэтому определение maxSize а также minSize Важно избегать ненужных итераций.

Нужно ли снимать видеокадры в определенном масштабе? например (100px X100px)

Это в основном зависит от параметров, которые вы передаете cascade.detectMultiScale, Лично я думаю, что 100 x 100 будет слишком мал для меньшего обнаружения лица в кадре, так как некоторые функции будут полностью потеряны при изменении размера рамки до меньших размеров, и cascade.detectMultiScale сильно зависит от градиентов или особенностей входного изображения.

Но если входной кадр имеет только грань в качестве основной части, и нет никаких других меньших граней, висящих позади, то вы можете использовать 100 X 100, Я проверил несколько образцов лица размером 100 x 100 и это сработало довольно хорошо. И если это не так, то 300 - 400 Ширина px должна работать хорошо. Однако вам нужно будет настроить параметры для достижения точности.

Работают ли каскады Хаара лучше в серых изображениях?

Они работают только в полутоновых изображениях.

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

Разные условия освещения имеют значение?

Может быть, в некоторых случаях в значительной степени Хаар-функции являются инвариантами освещения.

Если вы рассматриваете различные условия освещения при съемке изображений под зеленым или красным светом, то это может не повлиять на обнаружение. Особенности haar (так как они зависят от оттенков серого) не зависят от цвета RGB входного изображения. Обнаружение в основном зависит от градиентов / особенностей входного изображения. Таким образом, если на входном изображении достаточно различий в градиентах, например, брови имеют меньшую интенсивность, чем лоб, и т. Д., То все будет работать нормально.

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

Что именно делает метод detectMultiScale (params)?

Я думаю, если вы прочитали article К этому времени вы должны хорошо это знать.

Если я хочу пойти на дальнейший анализ глазного моргания, продолжительности закрытия глаз, зевания рта, киваний головы и ориентации головы, чтобы обнаружить усталость (сонливость) с помощью машины опорных векторов, какие-либо советы?

Нет, я не буду предлагать вам выполнять этот тип обнаружения жестов с помощью SVM, так как было бы крайне медленно запускать 10 различных каскадов для определения текущего состояния лица, однако я бы порекомендовал вам использовать некоторую среду обнаружения лицевых ориентиров, такую ​​как Dlib, Вы можете искать и другие фреймворки, потому что размер модели dlib составляет почти 100 МБ, и он может не соответствовать вашим потребностям, если вы хотите перенести его на мобильное устройство. Таким образом, ключом является ** Определение лица лица **, как только вы пометите анфас, вы можете сделать выводы, например, если рот открыт или глаза мигают, и он работает в режиме реального времени, поэтому обработка вашего видео выиграла. много страдаю.

Другие вопросы по тегам