SeetaFace Alignment
Вместо прямого применения глубокой сети, SeetaFace Alignment реализует подход Coarse-to-Fine Auto-encoder Networks (CFAN), который каскадирует несколько Stacked Auto-encoder Networks (SANs) для постепенного приближения к точным местоположениям лицевых ориентиров. Детали алгоритма можно найти в нашей статье ECCV-2014 CFAN. Выпущенный SeetaFace Alignment обучен на более чем 23 000 изображений и может точно определять пять лицевых ориентиров, то есть два центра глаз, кончик носа и два угла рта. Обратите внимание, что эта реализация немного отличается от описанной в соответствующей статье: для повышения скорости каскадируются только две стадии (более 200 кадров в секунду на настольном процессоре I7).
SeetaFace Alignment реализован для работы на CPU без зависимости от каких-либо сторонних библиотек. В настоящее время он протестирован только на Windows, но не включает никаких специфичных для Windows заголовков. Версии для других платформ, например Linux, будут выпущены в будущем. Открытый исходный код выпущен под лицензией BSD-2 (см. LICENSE), что означает, что коды могут свободно использоваться как для академических целей, так и для промышленных продуктов.
Для оценки производительности SeetaFace Alignment были проведены эксперименты на AFLW, следуя протоколу, опубликованному в [3]. Средние ошибки выравнивания, нормализованные межзрачковым расстоянием, показаны на следующем рисунке. Как вы можете видеть, наш SeetaFace Alignment достигает большей точности по сравнению с сравнительными методами.
Где LE, RE, N, LM, RM обозначают левый центр глаза, правый центр глаза, кончик носа, левый угол рта и правый угол рта соответственно.
[1] Xuehan Xiong, Fernando De la Torre. Supervised descent method and its applications to face alignment. CVPR 2013
[2] Yi Sun, Xiaogang Wang, Xiaoou Tang. Deep Convolutional Network Cascade for Facial Point Detection. CVPR 2013
[3] Zhanpeng Zhang, Ping Luo, Chen Change Loy, Xiaoou Tang. Facial Landmark Detection by Deep Multi-task Learning. ECCV 2014
Что касается скорости, требуется около 5 миллисекунд на лицо, чтобы предсказать 5 лицевых точек, учитывая ограничивающую рамку лица, предоставленную SeetaFace Detector, работающим на одном процессоре Intel 3.4 ГГц i7-3770 без параллельных вычислений.
*.h
в include
.*.cpp
в src
, кроме тех, которые находятся в src/test
.SEETA_EXPORTS
: (Проект) Свойства -> Свойства конфигурации -> C/C++ -> Препроцессор -> Определения препроцессора.Решение Visual Studio 2013 представлено в подкаталоге examples.
mkdir build
Скопируйте «библиотеку обнаружения лиц» и «face_detection.h» в каталог «build» для создания тестового примера.
cd build
cmake ..
make
Если всё пройдёт успешно, перейдите к тестированию программы. Примечание: перед тестированием необходимо скопировать модель обнаружения лица seeta_fd_frontal_v1.0.bin в каталог «build».
cd ..
./build/fa_test
Результаты выравнивания сохраняются в «result.jpg».
Эта версия разработана для обнаружения пяти лицевых ориентиров, а именно двух центров глаз, кончика носа и двух углов рта.
Чтобы обнаружить эти лицевые ориентиры, следует сначала создать объект seeta::FaceAlignment
с путём к файлу модели.
seeta::FaceAlignment landmark_detector("seeta_fa_v1.1.bin");
Затем можно вызвать PointDetectLandmarks(ImageData gray_im, FaceInfo face_info, FacialLandmark *points)
для обнаружения ориентиров.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )