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

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

Как только мы обнаружим лицевые ориентиры, мы можем получить доступ к координатам через (landmarks [0] .parts () [i] .x, landmarks [0] .parts () [i] .y), где i - индекс, чтобы рассчитать это соотношение. На изображении ниже показано, где каждый ориентир Dlib расположен на лице.

В нашем базовом детекторе мы будем использовать координаты x точек 49, 55, 3 и 15 для вычисления отношения.

Установление порога - экспериментальный процесс, я пробовал разные изображения, и у меня получилось 0,36. Вы можете сделать его более или менее чувствительным, но чем выше он, тем больше он будет подвержен ошибкам.

Ниже вы найдете объяснение кода и ссылку для загрузки модели, чтобы вы могли попробовать ее сами!

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