Извлечение ориентира лица в OpenCV 3.0. Может ли кто-нибудь предложить какие-нибудь хорошие библиотеки с открытым исходным кодом, которые позволят мне извлекать ориентиры лица?

В настоящее время я использую OpenCV3.0 с надеждой, что смогу создать программу, которая делает 3 вещи. Во-первых, находит лица в прямом эфире. Во-вторых, извлекает расположение ориентиров лица с помощью ASM или AAM. Наконец, использует SVM для классификации выражений лиц людей в видео.

Я провел достаточное количество исследований по этому вопросу, но нигде не могу найти наиболее подходящую библиотеку AAM или ASM с открытым исходным кодом для выполнения этой функции. Также, если возможно, я хотел бы иметь возможность обучить AAM или ASM извлекать определенные ориентиры лица, которые мне нужны. Например, все пронумерованные точки на картинке ниже: www.imgur.com/XnbCZXf

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

Заранее спасибо за любые ответы, все советы приветствуются, чтобы помочь мне вместе с этим проектом.


person EiiNHERJii1991    schedule 15.04.2015    source источник
comment
Правила dlib. вы также можете передать его cv::Mat и Rect для обнаружения.   -  person berak    schedule 15.04.2015
comment
@berak Интересно, почему такой хороший инструмент не был более популярен, но потом я увидел, что он есть в Сан-Франциско.   -  person dashesy    schedule 18.08.2015
comment
@berak после дополнительных копаний кажется, что теперь он находится на GitHub (github.com/davisking/dlib) даже хотя некоторые ссылки на их веб-сайте по-прежнему указывают на SF, это отлично.   -  person dashesy    schedule 18.08.2015
comment
Привет, @dashesy, есть ли шанс отправить мне свой адрес электронной почты? Я хотел бы обсудить с вами Computer Vision (если возможно). Спасибо!   -  person Roi Mulia    schedule 24.05.2016


Ответы (4)


В комментариях я вижу, что вы решили обучить свой собственный детектор ориентиров лица с помощью библиотеки dlib. У вас было несколько вопросов относительно того, какой обучающий набор dlib использовал для создания предоставленной ими модели «shape_predictor_68_face_landmarks.dat».

Некоторые указатели:

  • The author (Davis King) stated that he used the annotated images from the iBUG 300-W dataset. This dataset has a total of 11,167 images annotated with the 68-point convention. As a standard trick, he also mirrors each image to effectively double the training set size, ie 11,167*2=22334 images. Here's a link to the dataset: http://ibug.doc.ic.ac.uk/resources/facial-point-annotations/
    • Note: the iBUG 300-W dataset includes two datasets that are not freely/publicly available: XM2VTS, and FRGCv2. Unfortunately, these images make up a majority of the ibug 300-W (7310 images, or 65.5%).
    • The original paper only trained on the HELEN, AFW, and LFPW datasets. So, you ought to be able to generate a reasonably-good model on only the publicly-available images (HELEN,LFPW,AFW,IBUG), ie 3857 images.
      • If you Google "one millisecond face alignment kazemi", the paper (and project page) will be the top hits.

Вы можете узнать больше о деталях процедуры обучения, прочитав раздел комментариев к этому сообщению в блоге dlib. В частности, он кратко обсуждает выбранные им для обучения параметры: http://blog.dlib.net/2014/08/real-time-face-pose-estimation.html

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

Надеюсь, это поможет!

person ekim    schedule 08.07.2015
comment
Я тренировался на 60 изображениях, используя уменьшенный набор маркеров — хотелось бы думать, что я добросовестно относился к соответствующим факторам, и изображения были хорошими, но, тем не менее, результаты были плохими… Однако не принимайте многого из комментария. , я не знаю, чего я не знаю о реализации процесса. - person Lamar Latrell; 04.04.2016

AAM и ASM довольно старая школа, и результаты немного разочаровывают.

Большинство трекеров лицевых ориентиров используют каскад патчей или глубокое обучение. У вас есть DLib, который довольно хорошо работает (+лицензия BSD) с этим демо, что-то другое на github или куча API, таких как этот один, который можно использовать бесплатно.

Вы также можете взглянуть на мой проект с использованием C++/OpenCV. /DLib со всеми функциями, которые вы указали, и отлично работает.

person Tom A    schedule 15.04.2015
comment
Большое спасибо за ваш подробный ответ, я чувствую, что знаю, в каком направлении мне нужно идти сейчас. большое спасибо. - person EiiNHERJii1991; 16.04.2015
comment
Я только что скачал и протестировал вашу программу, и я очень впечатлен. В настоящее время у меня очень хорошо работает распознавание лиц с использованием OpenCV. Не могли бы вы указать мне, что мне нужно делать дальше, используя DLib для отслеживания моих лицевых ориентиров в видео (аналогично сетке, которая отображается, когда в вашей программе выбрана модель 1). И самое главное, как я мог извлечь координаты этих значений? заранее спасибо, буду признателен за любые советы и помощь. - person EiiNHERJii1991; 16.04.2015
comment
Проверьте документ и демонстрацию, но вам нужно преобразовать мат opencv в формат dlib, а затем использовать прямоугольник лица, изображение и модель в функции dlib, чтобы получить ориентиры лица. - person Tom A; 16.04.2015
comment
Извините, что снова вас беспокою, но я начал отслеживать ориентиры лица в своей собственной программе с прямой трансляции с веб-камеры, используя shape_predictor_68_face_landmarks.dat. Однако мне было интересно, можно ли изменить это, чтобы более точно отразить несколько ориентиров, которые я хотел бы отслеживать на изображении, указанном выше? Или что мне нужно сделать, чтобы достичь этих результатов. Еще раз спасибо за ваше время и помощь. - person EiiNHERJii1991; 16.04.2015
comment
Не волнуйтесь, я нашел примеры того, как обучать такие файлы данных, и скоро попробую сам. Я буду использовать свои собственные изображения с лицами для обучения. В примере используются 4 изображения с отмеченными лицами и еще 5 изображений с отмеченными лицами для тестирования. Вы случайно не знаете, сколько изображений, содержащих сколько лиц, для обучения и тестирования является оптимальным? или я должен точно имитировать те, которые используются для обучения исходных файлов? Не волнуйтесь, если вы либо не знаете, либо не чувствуете мотивации отвечать дальше, я уже достаточно вас достала :) - person EiiNHERJii1991; 16.04.2015
comment
Я никогда не тренировал модель, но насколько я знаю, вам нужно 100-1000 обучающих изображений. Удачи :) - person Tom A; 16.04.2015

  • Попробуйте Stasm4.0.0. Это дает примерно 77 баллов на лице.
person Sagar Patel    schedule 14.12.2015

Советую использовать библиотеку FaceTracker. Он написан на C++ с использованием OpenCV 2.x. Вы не разочаруетесь в этом.

person Kornel    schedule 17.04.2015