Для более качественного контента, пожалуйста, обратите внимание на паблик WeChat "AI Frontline", (ID: ai-front)
Представьте себе в будущем, когда мы разговариваем удаленно, через голографическую проекцию, вы можете почувствовать, что говорящий человек находится прямо перед вами. А теперь появилось похожее приложение, основанное на компьютерном зрении.
За последнее десятилетие многие важные группы, занимающиеся исследованиями в области компьютерного зрения, добились значительных успехов в трехмерной реконструкции лица и выравнивании лица. Главным из них является применение в этом отношении сверточных нейронных сетей как разновидности искусственной нейронной сети. Однако из-за несовершенства используемой для картирования 3D-модели лица реконструируемое пространство ограничено, что приводит к неудовлетворительному эффекту большинства методов 3D-реконструкции лица.
На приведенном выше рисунке показана структура PRN, зеленый прямоугольник представляет собой остаточный блок, а синий прямоугольник представляет транспонированный сверточный слой.
В недавней статье команда Яо Фэна предлагает сквозной подход, сеть карт положения (PRN), которая совместно решает плотное выравнивание и реконструкцию 3D-форм. С точки зрения выравнивания и реконструкции лица в 3D этот метод превосходит предыдущие методы для нескольких баз данных.
Более подробно, они разработали UV-картографирование положения (https://en.wikipedia.org/wiki/UV_mapping), которое представляет собой 2D-изображение, на котором записаны 3D-координаты всех облаков точек лица, в каждом UV семантическая информация сохраняется в многоугольники. Затем простая сеть кодер-декодер обучается с использованием взвешенных потерь, которые получают карту УФ-позиций из одного двумерного изображения лица.
Изображение выше является частичным результатом этого метода, нечетная строка — результат выравнивания лица (показаны только 68 точек), а четная строка — результат трехмерной реконструкции.
Вклад этой статьи заключается в основном в следующих аспектах:
Впервые задача выравнивания лица и трехмерной реконструкции лица решается сквозным способом, который не ограничен низкоразмерными пространствами.
Чтобы напрямую получить трехмерную структуру лица и плотное выравнивание, мы разрабатываем представление, называемое UV-поверхностью положения, которое записывает информацию о положении трехмерного лица и предоставляет семантическую информацию, соответствующую каждой точке в UV-пространстве.
На этапе обучения мы предлагаем маску веса, которая присваивает разные веса каждой точке на карте местоположения и вычисляет потерю веса. Эксперименты показывают, что такая конструкция помогает повысить производительность сети.
Наконец, мы предоставляем облегченную платформу со скоростью 100 кадров в секунду, которая может получать 3D-реконструкции лиц непосредственно из одного 2D-изображения лица.
В базе данных AFLW2000-3D и базе данных Florence метод обеспечивает относительное улучшение на 25% как в трехмерной реконструкции лица, так и в плотном выравнивании лица по сравнению с текущими современными методами.
Код для этого метода выполняется с использованием интерфейса Python Tensorflow. Официальный сайт проекта:https://github.com/YadiraF/PRNet . Если вы хотите протестировать эффект реконструкции лица, вам необходимо установить следующую среду:
Python 2.7 (включая библиотеки numpy, skimage, scipy)
Версия Tensorflow должна быть больше или равна 1.4.
dlib (для обнаружения лиц вам не нужно устанавливать это расширение, если вы можете указать ограничивающие рамки лиц)
opencv2 (для отображения результатов теста)
Обученную модель можно скачать здесь: Baidu Netdisk (https://pan.baidu.com/s/10vuV7m00OHLcsihaC-Adsw), Google Netdisk (https://drive.google.com/file/d/1UoE-XuW1SDLUjZmJPkIZ1MLxvQFgmTFH/view ?usp=sharing ), в настоящее время этот код все еще находится в процессе разработки, команда продолжит улучшать и предоставлять более гибкие функции в будущем.
Для выравнивания лица: Плотное выравнивание (68 точек) возможно как для видимых, так и для невидимых ключей лица.
3D-реконструкция лица: получение ключевых точек 3D-модели лица и соответствующего цвета из одного изображения. Результат можно сохранить как данные сетки с расширением .obj, которые можно загрузить непосредственно в Meshlab или Microsoft 3D Builder. Конечно, текстуры в невидимых областях будут деформированы из-за самоокклюзии.
3D-оценка позы: вместо использования только 68 ключевых точек для определения позы лица использование всех ключевых точек (более 40 000) в 3D-модели дает более точные результаты прогнозирования позы.
Глубина изображения:
Редактирование текстуры: возможно увеличение данных, для входного изображения лица можно изменить текстуру определенных областей, например, глаз:
Замена лица: замена лица на определенном изображении лицом другого человека, адаптация позы лица на этом изображении.
клонировать проект
Используйте Baidu Netdisk или Google Netdisk для загрузки обученных моделей PRN и сохранения их в пути Data/net-data.
запустить тестовый код
Протестируйте свои собственные изображения
Запустите python demo.py --help для получения дополнительной помощи.
Оригинальная бумага:
https://arxiv.org/pdf/1803.07835.pdf
Английский оригинал:
3D Face Reconstruction with Position Map Regression Networks
https://heartbeat.fritz.ai/3d-face-reconstruction-with-position-map-regression-networks-