1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/mirrors-seetafaceengine

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README.md 6.2 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 26.11.2024 08:05 3cf48f9

SeetaFace Alignment

License

Описание

Вместо прямого применения глубокой сети, 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 достигает большей точности по сравнению с сравнительными методами.

aflw_nrmse

Где 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 без параллельных вычислений.

Создание общей библиотеки с Visual Studio

  1. Создайте проект dll: Новый проект -> Visual C++ -> Win32 Консольное приложение -> DLL.
  2. (Необязательно) Создайте и переключитесь на платформу x64.
  3. Добавьте файлы заголовков: все файлы *.h в include.
  4. Добавьте исходные файлы: все файлы *.cpp в src, кроме тех, которые находятся в src/test.
  5. Определите макрос SEETA_EXPORTS: (Проект) Свойства -> Свойства конфигурации -> C/C++ -> Препроцессор -> Определения препроцессора.
  6. Постройте.

Решение Visual Studio 2013 представлено в подкаталоге examples.

Сборка в Linux

mkdir build

Скопируйте «библиотеку обнаружения лиц» и «face_detection.h» в каталог «build» для создания тестового примера.

cd build
cmake ..
make

Если всё пройдёт успешно, перейдите к тестированию программы. Примечание: перед тестированием необходимо скопировать модель обнаружения лица seeta_fd_frontal_v1.0.bin в каталог «build».

cd ..
./build/fa_test

Результаты выравнивания сохраняются в «result.jpg».

Как запустить SeetaFace Alignment

Эта версия разработана для обнаружения пяти лицевых ориентиров, а именно двух центров глаз, кончика носа и двух углов рта. Чтобы обнаружить эти лицевые ориентиры, следует сначала создать объект seeta::FaceAlignment с путём к файлу модели.

seeta::FaceAlignment landmark_detector("seeta_fa_v1.1.bin");

Затем можно вызвать PointDetectLandmarks(ImageData gray_im, FaceInfo face_info, FacialLandmark *points) для обнаружения ориентиров.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/mirrors-seetafaceengine.git
git@api.gitlife.ru:oschina-mirror/mirrors-seetafaceengine.git
oschina-mirror
mirrors-seetafaceengine
mirrors-seetafaceengine
master