Расширенное издание Евангелия отаку DeepFake! Трехмерная реконструкция лица на основе сети карт местоположения

Google искусственный интеллект Python компьютерное зрение
Редактор отдела планирования | Натали
Автор | Фавио Васкес
Переводчик | Хао И
Редактор | Наталья
Руководство по передовой ИИ:Сеть карт положения (PRN) — это сквозной метод решения плотных перестановок и трехмерной реконструкции лица с использованием совместной регрессии. Эта статья является введением к 36-й статье AI Frontline. Мы кратко объясним метод PRN и представим его применение в компьютерном зрении. Наконец, мы приложим открытый исходный код и метод работы. Приходите и попробуйте!

Для более качественного контента, пожалуйста, обратите внимание на паблик WeChat "AI Frontline", (ID: ai-front)

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

За последнее десятилетие многие важные группы, занимающиеся исследованиями в области компьютерного зрения, добились значительных успехов в трехмерной реконструкции лица и выравнивании лица. Главным из них является применение в этом отношении сверточных нейронных сетей как разновидности искусственной нейронной сети. Однако из-за несовершенства используемой для картирования 3D-модели лица реконструируемое пространство ограничено, что приводит к неудовлетворительному эффекту большинства методов 3D-реконструкции лица.

Сеть карты местоположения (PRN)

На приведенном выше рисунке показана структура 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-