3D реконструкция человека до и после применения наших лайфхаков
3D реконструкция человека до и после применения наших лайфхаков

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

Очевидные лайфхаки

Начнем с того, что фотограмметрией, т.е. восстановлением 3D моделей сцен на основе множества фотографий, пользуются уже не первый десяток лет для разных целей, в основном для сканирования карт местности или больших архитектурных объектов. Мы в Twin3D применяем фотограмметрию для сканирования людей, но есть и другие объекты, например, волкособы или диджейский пульт. Так какие же есть очевидные лайфхаки 3D сканирования людей?

  1. Чем больше фотографий — тем лучше. Самый очевидный лайфхак. По принципу фотограмметрии на изображения проводятся лучи из виртуальной камеры через пиксели — в итоге лучи пересекаются. Но надо найти точки, которые повторяются на разных фотографиях. Чем больше фотографий объекта, тем больше таких точек, а значит — и качество итоговой 3D модели.

  2. Между соседними фотографиями должно быть пересечение хотя бы 30% (лучше 50%). Это прямо следует из предыдущего объяснения.

  3. Если объект подвижный (а человек очень подвижный, даже когда пытается стоять смирно), то фотографировать нужно одновременно. Это самое сложное в реализации требование. Получается, что просто вращать камеру вокруг человека не самый лучший вариант (хотя кто-то пытается). Нужно поставить много камер, которые умеют одновременно фотографировать. Кстати, у нас именно такой риг из камер (картинка ниже).

  4. Использовать платный софт. Есть много бесплатных и опенсорсных софтов для 3D реконструкции, типа COLMAP или Meshroom, но по крайней мере на людях их результаты не идут ни в какое сравнение с платным софтом. Из платных мы рекомендуем (это не реклама) Agisoft Metashape или RealityCapture. У первого преимущество в том, что есть удобный питоновский API, а у второго — что он хорошо адаптирован под сканирование людей. На картинке ниже видна катастрофическая разница между бесплатным и платным софтом. Кстати, у Agisoft есть свой список советов для реконструкции людей, посмотрите.

Наш полноростовый  сканер
Наш полноростовый сканер
Тестовая сборка в MeshRoom, COLMAP, Metashape и RealityCapture соответственно
Тестовая сборка в MeshRoom, COLMAP, Metashape и RealityCapture соответственно

Неочевидные лайфхаки

Если пункты выше понятны любому, кто пытался собрать свои 3D модели и имеет опыт в фотографии, то дальше мы рассмотрим моменты, которые не лежат на поверхности и требуют некого бэкграуда в computer science и глубоком обучении. Помимо этого, их объединяет то, что не подразумевают какого-то ручного вмешательства 3D моделлера или фотографа.

Кстати до этого мы писали статью про автоматическую реконструкцию лица человека до уровня пор. Там совершенно другой сетап и другие подходы к реконструкции.

1. Background matting

Ниже — сырые фотографии с наших камер. Как видно, тут кропы тела человека на довольно сложном фоне. Не удивительно, что софт по 3D реконструкции с трудом справляется с тем, чтобы находить матчинг точек на разных фотографий: появляется шум и артефакты из-за этого сложного фона.


Сырые фотографии со сканера
Сырые фотографии со сканера

Было бы идеально убрать фон. Но как это сделать? Конечно, есть множество статей по сегментации картинок, но они в основном ориентированы на определенный обучающий датасет, и там люди обычно целиком представлены (а не куском ноги). К тому же очень желательно, чтобы убирание фона было максимально точным (с точность до мм) и быстро считалось.

К счастью, есть статья "Real-Time High-Resolution Background Matting" (Shanchuan Lin et al., CVPR 2021), в которой есть всё это: очень точное убирание фона независимо от главного объекта и быстрая скорость вычислений. И главное — доступный код с лицензией MIT.

Вот что получается после прогона на нем картинок сверху:

Фотографии после background matting
Фотографии после background matting

Приблизим и уберем текстуру объекта:

Результат background matting — убирание фона с точностью до волосков
Результат background matting — убирание фона с точностью до волосков

Результаты поразительные! Фон убирается с точностью до волосков. Теперь мы уж точно ожидаем, что 3D реконструкция должна улучшиться. Что по факту получается?

На картинке ниже мы сделали 2 модели: одну без убирания фона (слева), другую — с ним. Разница на лицо (буквально).

3D реконструкция до и после убирания фона
3D реконструкция до и после убирания фона

2. Image enhancement

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

Мы решили попробовать продукты известной в мире фотографии компании DxO, а именно DxO PureRaw (тоже не реклама). Этот софт умеет делать все выше перечисленное, а еще убирать шум с фотографий с помощью разработанной inhouse нейронной сети DeepPRIME AI. Вот что получается после его применения:

Применение DxO PureRaw
Применение DxO PureRaw

Главный вопрос: как это сказывается на итоговой модели?

Модели до и после улучшения фотографий
Модели до и после улучшения фотографий

Видим, что улучшение исходных фотографий существенно улучшает и итоговую модель.

3. Mesh denoising

Предыдущие приемы касались улучшения входных изображений для 3D реконструкции. Вопрос теперь в том, можем ли мы как-то улучшить выходы: т.е. меш или текстуру. Обычно, на выходе меш получается очень шумным, особенно если эта часть видна малым числом камер (например, нижняя часть руки).

Сырая модель руки
Сырая модель руки

Мы уже писали подробную статью про разные подходы к убиранию шума с меша: от обычных фильтров до графовых нейронных сетей — так что перейдем сразу к результатам на людях.

Применение убирания шума к модели девушки
Применение убирания шума к модели девушки

Если приглядеться к этой девушке, то можно легко заметить, что после уменьшения шума итоговый рендеринг становится гораздо приятнее, при этом детализация не пропадает. Можем также посмотреть и на нижнюю часть руки:

Чищеная модель руки
Чищеная модель руки

Заключение

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

В других статьях мы расскажем, как можно восстанавливать текстуры, как вычислять реалистичные нормали кожи, как создавать виртуальные камеры между настоящими и много других интересных вещей.