Привет, Хабр! Очень часто в Интернете встречаю следующий вопрос: «Какое готовое решение для распознавания лиц лучше использоватьЭ» Итак, я выбрал с Github 5 решений, которые мне показались хорошими, относительно новыми и простыми в использовании, и мне хотелось бы сравнить их между собой.
Всем, кому интересно, что из этого получилось, добро пожаловать в разрез!
Суть эксперимента
Для начала я отобрал на Kaggle фотографии из различных датасетов, содержащих лица, и сформировал свой собственный датасет. Я постарался сделать набор данных максимально разнообразным.В полученном датасете присутствуют люди в очках, курящие, в шапках, разных возрастов и национальностей, с бородами, и самое главное, все фотографии были не самого высокого разрешения, на которых лица были слегка размыты, или я делал это размытие с помощью библиотека OpenCV. Полученные фотографии были разделены на 5 классов, в каждом по 50 фотографий:
- dummy face – в этой папке собраны лица статуй, персонажей Симпсонов, персонажей аниме, Барби;
- лица в масках;
- лица, сфотографированные в профиль;
- белокожие;
- темнокожий.
Я старалась обозначить так, чтобы подбородок, лоб и щеки попадали в ограничивающую рамку.
Последние две части лица не обязательно могут быть включены полностью:
После разметки я прогнал фотографии по каждому из алгоритмов и рассчитал следующие показатели: пересечение через объединение, точность и полноту.
Вы можете прочитать об этих показателях здесь И здесь .
Уточню, что в данном случае найденное лицо является истинно положительным, не найденное лицо — ложноотрицательным, а ложноположительное (условно, когда машина распознала лицо) — ложноположительным.
Я также рассчитал скорость алгоритма.
Ну а теперь перейдем к самим решениям!
RetinaFace
И начну, пожалуй, с самого лучшего алгоритм на основе таких показателей, как «Пересечение через объединение», точность и полнота.
Как вы можете видеть в файле readme этого репозитория, эффективность его обнаружения потрясающая:
Кроме того, с помощью этого репозитория можно находить ключевые точки лица, выравнивать и распознавать лица.
Результат работы этого алгоритма на моих данных показан в таблице ниже:
Facenet-pytorch
Следующий метод немного хуже по показателям машинного обучения, чем предыдущее решение, но на порядок выше по скорости обработки.Этот алгоритм также имеет возможность запуска на графическом процессоре, что ускоряет работу алгоритма примерно на 40% и потребляет около 1 ГБ видеопамяти (цифры, указанные в таблице ниже, являются результатом запуска алгоритма на центральном процессоре).
Результаты представлены ниже:
ДБФейс
Этот решение в описании проекта, как и первое решение, показывает впечатляющие результаты:На деле оно оказалось немного хуже по метрикам машинного обучения, чем первое решение, но гораздо лучше по скорости:
Распознавание лица
Данный решение — один из самых популярных, судя по звездам на Github, но точно не лучший:Думаю, нынешнее решение может быть настолько популярным, потому что помимо распознавания лиц есть много других полезных функций: возможность находить ключевые точки лица, распознавать лица, работать в режиме реального времени + разработка ведется уже довольно давно.
много времени.
Ультра-легкий-быстрый-универсальный-детектор лица-1 МБ
алгоритм работает очень быстро, что негативно сказалось на других метриках.Этот алгоритм также имеет возможность запуска на графическом процессоре, но я не увидел никакой разницы во времени выполнения алгоритма.
Вот результаты, которые мне удалось получить:
Заключение
Все результаты были получены с использованием стандартных параметров.Конечно, если бы мы могли настроить некоторые параметры, мы могли бы увидеть еще лучшие результаты.
Исходный код с реализацией каждого алгоритма и расчетом метрик я выложил на Гитхаб .
Там же доступны наборы данных и разметка.
Хочу отметить, что все эксперименты проводились на Ubuntu. Я также готов принять пул-реквесты с вашими решениями и результатами! Теги: #Машинное обучение #python #машинное+обучение #Обработка изображений #OpenCV #распознавание лиц
-
Интернет – Это Беда
19 Oct, 24 -
Sennheiser Hd 228: Что Это За Кот В Мешке?
19 Oct, 24 -
Нездоровая Конкуренция Между
19 Oct, 24 -
Команда Компас
19 Oct, 24