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

Недавно я пытался обнаружить человеческие лица на кадрах Игры престолов. Я был удивлен, увидев, что наиболее широко используемые методы не очень хорошо себя зарекомендовали.

Сначала я попробовал Каскадный детектор OpenCV HaaR, затем Фронтальный детектор лица Dlib HOG. В обоих случаях это работало хорошо только в идеальных случаях (фронтальное лицо, отсутствие странного освещения, отсутствие окклюзии). В реальном сценарии это означает бесполезность.

Затем я наткнулся на эту ссылку, которая рекламировала Детектор лиц OpenCV DNN как производительный. Результат был лучше, чем у детектора OpenCV HaaR Cascade и фронтального детектора лица Dlib HOG, но все же не очень хорошо на моих кадрах Игры престолов. Затем я понял, что да, обнаружение человеческого лица — академически решенная проблема во многих наборах данных, но многие из этих наборов данных еще не отражают истинное дикое разнообразие, которое вы можете иметь во многих кадрах.

Затем я погуглил, чтобы узнать, что на самом деле является современным для обнаружения человеческого лица в 2019 году. Я наконец наткнулся на это репозиторий и их сеть RetinaFace, но они не предоставили никакого Dockerfile, так что это было немного больно. установить и запустить. Я сделал Dockerfile, сделал несколько тестов, и результаты выдающиеся! На моих кадрах Игры престолов их сеть RetinaFace работает очень хорошо, даже для человеческих лиц со странными углами, окклюзией и плохим освещением.

Я создал репозиторий на Github (https://github.com/francoisruty/fruty_face-detection) с готовым Dockerfile, короткими инструкциями и предварительно обученными весами нейронной сети. Не стесняйтесь использовать его для тестирования сети RetinaFace максимум за 5 минут на любых кадрах!

Первоначально опубликовано на http://fruty.io 17 июля 2019 г.