Цзяньчжу Го, Сяньгью Чжу, Ян Ян, Фан Ян, Чжэнь Лей и Стэн З. Ли. Код репо принадлежит и поддерживается Цзяньчжу Го .

[Обновления]
2021.7.10 : запустить 3ddfa_v2 онлайн на Gradio.2021.1.15 : Заимствуйте реализацию оценивания с плотной головкой для более быстрого рендеринга сетки (ускорение около 3x, 15 мс-> 4 мс), см. Utils/render_ctypes.py для получения подробной информации.2020.10.7 : Добавьте оценку задержки полного трубопровода в Latency.py, только что запускается с помощью python3 latency.py --onnx , для получения подробной информации см. Оценку задержки.2020.10.6 --onnx2020.10.2 : Добавьте поддержку Onxruntime, чтобы значительно уменьшить задержку вывода параметров 3DMM , просто добавьте действие --onnx при запуске demo.py , см. В деталях см. Tddfa_onnx.py.2020.9.20 : Добавьте функции ply включая оценку позы obj сериализации pose2020.9.19 : Добавить PNCC (прогнозируемый нормализованный код координат), функции отображения текстуры УФ, см. pncc , параметры uv_tex в demo.py. Эта работа расширяет 3DDFA, названную 3DDFA_V2 , под названием «Быстрый, точный и стабильный 3D -выравнивание лица», принятое ECCV 2020. Дополнительный материал здесь. На приведенном выше GIF показана демонстрация веб -камеры результата отслеживания, в сценарии моей лаборатории. Это репо является официальной реализацией 3DDFA_V2.
По сравнению с 3DDFA 3DDFA_V2 достигает лучшей производительности и стабильности. Кроме того, 3DDFA_V2 включает в себя Fast Detector Face Detector вместо DLIB. Простая трехмерная рендера, написанная C ++ и цинтоном, также включена. Этот репо поддерживает OnNxruntime, а задержка регрессии параметров 3DMM с использованием основы по умолчанию составляет около 1,35 мс/изображение на процессоре с одним изображением в качестве ввода. Если вы заинтересованы в этом репо, просто попробуйте в этом Google Colab ! Добро пожаловать по ценным вопросам, PR и дискуссиям?
См. TEDS.TXT, протестированные на платформах MacOS и Linux. Пользователи Windows могут ссылаться на FQA для строительства. Обратите внимание, что этот репо использует Python3. Основными зависимостями являются Pytorch, Numpy, OpenCV-Python и Onnxruntime и т. Д. Если вы запускаете демо с флагом --onnx для ускорения, вам может потребоваться сначала установить libomp , то есть, brew install libomp на MacOS.
git clone https://github.com/cleardusk/3DDFA_V2.git
cd 3DDFA_V2sh ./build.sh # 1. running on still image, the options include: 2d_sparse, 2d_dense, 3d, depth, pncc, pose, uv_tex, ply, obj
python3 demo.py -f examples/inputs/emma.jpg --onnx # -o [2d_sparse, 2d_dense, 3d, depth, pncc, pose, uv_tex, ply, obj]
# 2. running on videos
python3 demo_video.py -f examples/inputs/videos/214.avi --onnx
# 3. running on videos smoothly by looking ahead by `n_next` frames
python3 demo_video_smooth.py -f examples/inputs/videos/214.avi --onnx
# 4. running on webcam
python3 demo_webcam_smooth.py --onnxРеализация отслеживания - это просто выравнивание. Если голова позирует> 90 ° или движение слишком быстрое, выравнивание может потерпеть неудачу. Порог используется для трюка, чтобы проверить состояние отслеживания, но он нестабилен.
Вы можете обратиться к Demo.ipynb или Google Colab для пошагового учебного пособия по работе на неподвижном изображении.
Например, запуск python3 demo.py -f examples/inputs/emma.jpg -o 3d даст результат ниже:

Другой пример:

Запуск на видео даст:

Больше результатов или демонстраций, чтобы увидеть: Hathaway.
| 2d Sparse | 2 -й плотный | 3d |
|---|---|---|
![]() | ![]() | ![]() |
| Глубина | PNCC | УФ -текстура |
![]() | ![]() | ![]() |
| Поза | Сериализация | Сериализация на .obj |
![]() | ![]() | ![]() |
Маговая по умолчанию является Mobilenet_v1 с размером входа 120x120, а предварительно обученным весом по умолчанию- weights/mb1_120x120.pth , показанный в Configs/MB1_120x120.yml. Этот репо предоставляет еще одну конфигурацию в Configs/MB05_120x120.yml, с расширенным фактором 0,5, который является меньше и быстрее. Вы можете указать опцию config by -c или --config . Выпущенные модели показаны в таблице ниже. Обратите внимание, что время вывода на процессоре в статье оценивается с использованием TensorFlow.
| Модель | Вход | #Парамы | #Macs | Вывод (TF) |
|---|---|---|---|---|
| Mobilenet | 120x120 | 3,27 м | 183,5 м | ~ 6,2 мс |
| Mobilenet x0.5 | 120x120 | 0,85 м | 49,5 м | ~ 2,9 мс |
Удивительно , но задержка Onnxruntime намного меньше. Время вывода на процессоре с разными потоками показано ниже. Результаты протестированы на моем MBP (I5-8259U CPU @ 2,30 ГГц на 13-дюймовом MacBook Pro), с версией 1.5.1 Onnxruntime. Номер потока устанавливается os.environ["OMP_NUM_THREADS"] , см. SPEED_CPU.PY для получения более подробной информации.
| Модель | Thread = 1 | Thread = 2 | Thread = 4 |
|---|---|---|---|
| Mobilenet | 4,4 мс | 2,25 мс | 1,35 мс |
| Mobilenet x0.5 | 1,37 мс | 0,7 мс | 0,5 мс |
Вариант onnx значительно уменьшает общую задержку процессора , но обнаружение лица все еще занимает большую часть времени задержки, например, 15 мс для изображения 720p. Регрессия параметров 3 дмм занимает около 1 ~ 2 мс для одной лица, а плотная реконструкция (более 30 000 баллов, то есть 38 365) составляет около 1 мс для одного лица. Отслеживание приложений может выиграть от быстрой скорости регрессии 3DMM, поскольку обнаружение не требуется для каждого кадра. Задержка тестируется с использованием моего 13-дюймового MacBook Pro (I5-8259U CPU при 2,30 ГГц).
По умолчанию OMP_NUM_THREADS установлен 4, вы можете указать его, установив os.environ['OMP_NUM_THREADS'] = '$NUM' или вставив export OMP_NUM_THREADS=$NUM перед запуском скрипта Python.

Что такое учебные данные?
Мы используем 300 Вт-LP для обучения. Вы можете обратиться к нашей статье для получения более подробной информации о обучении. Поскольку несколько изображений находятся в закрытых глазах в учебных данных 300 Вт-LP, достопримечательности глаз не являются точными при закрытии. Глаза часть демонстрации веб -камеры также не очень хороши.
Запуск на Windows.
Вы можете ссылаться на этот комментарий для создания NMS в Windows.
Если ваша работа или исследовательская польза от этого репо, пожалуйста, цитируйте два нагрудника ниже :) и? это репо.
@inproceedings{guo2020towards,
title = {Towards Fast, Accurate and Stable 3D Dense Face Alignment},
author = {Guo, Jianzhu and Zhu, Xiangyu and Yang, Yang and Yang, Fan and Lei, Zhen and Li, Stan Z},
booktitle = {Proceedings of the European Conference on Computer Vision (ECCV)},
year = {2020}
}
@misc{3ddfa_cleardusk,
author = {Guo, Jianzhu and Zhu, Xiangyu and Lei, Zhen},
title = {3DDFA},
howpublished = {url{https://github.com/cleardusk/3DDFA}},
year = {2018}
}
Jianzhu Guo (郭建珠 郭建珠) [Homepage, Google Scholar]: [email protected] или [email protected] или [email protected] (это электронное письмо скоро будет инвалидом).