Обзор нейронных сетей для работы с 3D-данными

PHYGITALISM
Aug 17, 2020 · 18 min read

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

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

Разнообразие целей, которые достигаются путем интеграции ML в работу с 3D-данными, порождает перспективную полноценную синергию этих направлений. Мы, команда PHYGITALISM, уделяем много внимания этой сфере и хотели бы поделиться нашим опытом и взглядами на то, как эти направления дополняют друг друга.

В этой статье мы подробно коснемся трех основных направлений, инструментарий которых помог нам упростить рабочие процессы, создать интересные проекты и проводить необычные эксперименты:

  1. Работа с изображениями, анимацией и видео;
  2. Преобразование изображений и видео в 3D-формат;
  3. Работа с трехмерными объектами.

Среди направлений второстепенной значимости, которым мы в будущем хотели бы уделять больше внимания, можно выделить: обучение с подкреплением (RL), обработка языка (NLP), обработка звука, работа с симуляциями и работа с сигналами.

1. Обработка файлов: изображений, анимации и видео

В данном направлении используемые нами инструменты и сети позволяли упростить работу с изображениями и видео, преобразовывать стили и текстуры. Первое, о чем мы хотели бы рассказать, это сегментация объектов.

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

Instance Segmentation позволяет накладывает своеобразную маску, повторяющую форму объекта на фотографии.

Мы экспериментировали с Instance Segmentation в рамках реализации проекта, чтобы обрезать фон для создания маски. Сеть определяла, где находится человек на фотографии (при этом выделяя основного, находящегося непосредственно перед камерой), и убирала остальные объекты на фотографии.

Среди технологий, позволяющих работать с форматами и преобразовывать их, мы экспериментировали со Style transfer и pix2pix.

Style Transfer обрабатывает изображения и видео и меняет их внешний вид и стиль. Это своеобразная стилизация картинки под любые вкусы, которая может обрабатывать как статичные форматы, так и анимации и видео в real-time.

Преобразовывать изображения можно совершенно в разные стили: например, добавить обычной фотографии эффект рисованного красками портрета.

Подробнее узнать об этом алгоритме вы можете, посмотрев видео:

Применение подобной технологии переноса стиля нашли в игровой индустрии — была использована автоматическая обработка поверхностей, позволяющая преобразовывать графику игр королевского режима Fortnite в Players Unknown’s BattleGrounds.

Выглядело это следующим образом:

Интересную разработку, связанную с эффектом рисования и переносом стилей также сделали исследователи из Университета Тюбингена. Они научили нейронную сеть воспроизводить загруженное изображение в стилях известных художников:

Использование технологии Style Transfer позволяет упростить работу художникам, так как получаются достаточно красивые примеры, которые не требуют долгой работы (за исключением подготовительных этапов сбора данных).

Преобразование image-to-image или pix2pix используют для трансформации одной картинки в другую: на вход дается input image и на ее основе генератор должен сгенерировать изображение. С помощью этой сети можно, например, преобразовать снимок со спутника в карту:

Или нарисовать контур любого предмета или существа, например, котика, и на выходе получить изображение животного :) :

Попробовать создать своего котика с помощью нейронной сети можно тут.

С ее помощью можно преобразовывать фотографии, менять освещение на них и получать реалистичные изображения на выходе:

Использование pix2pix позволяет упростить задачу создания похожих объектов по примеру одного объекта, взятого за основу, как это делают в играх при создании “скинов”.

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

Распознавание позы человека является одной из задач, которая может найти широкое применение в различных индустриях, где взаимодействие с человеком требует представления о том, как человек двигается и какие действия он совершает.

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

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

Существует несколько инструментов для распознавания поз, и среди них мы хотели бы остановиться на PoseNet.

PoseNet работает на базе web. С ее помощью можно распознать минималистичный скелет человека. Для этого входное изображение подается через сверточную нейронную сеть, в которой применяется алгоритм декодирования — здесь происходит оценка позы, содержащей 17 ключевых точек-опоры для создания силуэта. Стоит отметить, что технология не распознает личность человека — алгоритм распознает только то, где находятся основные суставы человека, и по ним ставит опорные точки.

PoseNet может показывать силуэты нескольких человек одновременно и работает в real-time.

Почитать статью на Medium о работе PoseNet, из которой мы взяли эти примеры, можно тут :)

Задачи с генерацией новых кадров в основном направлены на адаптацию изображений и видео под определенные требования. С помощью нейронных сетей можно создавать полноценные лица и генерировать их движения, как, например, в deep-fake видео:

или убирать те или иные элементы с фотографий:

Нейронные сети позволяют также улучшать изображения и видео благодаря достройке кадров. Яркими примерами могут послужить SuperResolution и SuperSloMo.

SuperResolution позволяет увеличить разрешение изображения с потенциальным качеством до 4K.

Ключевым фактором при обработке изображения здесь являются вводные данные, на которых будет обучаться нейронная сеть. В связи с этим, при недостаточном количестве изображений или их несовпадения по семантике, нейронная сеть может давать недостаточно качественные результаты.

Вот пример обработки изображения с улучшением качества в два раза нейронной сетью, которая добавила детализированность деревьям, крыше и окнам здания:

А вот пример обработки изображения человека:

В экспериментах с этой нейронной сетью мы обнаружили, что инструмент не может анализировать, что именно изображено на фотографии. Так, например, в первом примере нейронная сеть удачно сгенерировала дополнительные пиксели и не видно потери деталей. На второй фотографии результат несколько хуже — присутствуют заметные артефакты на коже.

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

SuperSloMo строит промежуточные кадры, позволяет, например, увеличить продолжительность видео и достичь эффекта slow-mo с хорошей раскадровкой.

Хороший пример от NVIDIA, как простое замедление видео и обработка видео SuperSloMo дают совершенно разные результаты по качеству:

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

В области развития CV, MV и 3D ML мы также проводили недавно исследование, в котором аккумулировали все существующие подходы и технологии:

Специальные инструменты позволяют добавлять различные эффекты изображениям и добиваться нужной картинки или видео, подстраиваясь под любые задачи и желания. Наибольшее применение такие нейронные сети находят в искусстве, однако так же обладают большим потенциалом использования в различных сферах, при интеграции с другими технологиями, например AR/VR.

Нейронная сеть, обученная на множестве картин, позволяет воссоздать эффект рисования, когда мазки кисти формируют конечное изображение.

Инструмент не просто повторяет любое произведение, а по сути перерисовывает его с нуля, проанализировав цветовые пятна. Эти пятна берутся за основу “мазков” кисти, которые постепенно появляются на полотне, в результате создается эффект рисования картины.

Эту нейросеть мы использовали в нашем проекте для Artlife Fest — уже третий год совместно мы меняем опыт взаимодействия с картинами с помощью дополненной реальности.

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

Нейронная сеть от NVIDIA GauGan превращает наброски и зарисовки в фотореалистичные изображения. Она позволяет рендерить изображения в Unity и VR, что открывает возможности для ее использования в самых разнообразных областях, в том числе в помощь дизайнерам, разработчикам и архитекторам. Для работы с GauGan не требуются глубокие технические знания, в результате чего любой желающий может легко создать сцены.

Попробовать создать вашу собственную сцену вы можете тут.

В рамках работы над арт-проектом Artlife Fest 2020 года мы использовали оригинальную картину Карлы Босх как референс — отрисовали ее очертания в GauGan и засинхронизировали полученный и промежуточный варианты с начальным, экспортировав полученное видео в AR.

Мы также создали прототип, который позволяет использовать этот инструмент в VR. Более подробно о решении можно прочитать по ссылке.

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

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

Также есть инструменты, например, Substance Alchemist от Adobe, которые позволяют удобно работать с текстурами, тенями и цветом и значительно упрощают процесс обработки изображений.

Подводя краткий итог, можно сказать, что нейронные сети при работе с изображениями, анимациями и видео позволяют:

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

2. Преобразование из 2D в 3D

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

Для восстановления маски лица и модели человека используются инструменты, позволяющие распознать 3D-структуру лица и 3D-модель человека по изображению или видео.

Так, нейронная сеть PRNet позволяет выстроить 3D-модель лица после сканирования, на основании которого строятся характерные точки и по ним трансформируется сетка лица.

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

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

Алгоритм вытаскивает скрытые 3D-воксели и 2D свойства из одного изображения. Из собранных данных алгоритм составляет геометрические фигуры.

Последние разработки улучшили работу этой нейронной сети, и теперь PIFuHD позволяет воссоздать 3D-модели более высокого качества:

Мы проводили эксперимент с созданием модели по фотографии Уилла Смита, с помощью Mixamo добавили анимации и конвертировали в AR модель:

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

Вот так выглядят качественные результаты анализа изображений с видео: 1 ряд показывает скриншоты с видео, 2 ряд — как сеть видит меш тела, 3 ряд — как сеть достраивает модель, предсказывая объемную форму тела.

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

Результат нашего эксперимента

Глубокая нейронная сеть Occupancy Network позволяет решать задачи не только восстановления объектов из 2D в 3D, но и улучшать качество существующих 3D моделей. Это универсальный инструмент, который потенциально сможет преобразовывать не только простые, но и сложные модели.

Эта сеть выполняет три основные задачи:

  • преобразование изображений и видео в 3D;
  • увеличение разрешения вокселей;
  • реконструкция полигональной модели из области точек.

Основное применение Occupancy Network заключается в более простом переносе реальных физических объектов в цифровую среду, поскольку эта сеть позволяет быстрее создать начальные варианты моделей, которые требуют лишь дальнейшей доработки, а для каких-то задач — быть использованы в исходном виде.

Для создания эффекта глубины на фотографии мы тестировали нейронную сеть KenBurns, которая генерирует у исходного изображения карту глубины и вырезает по маске людей и объекты, что в итоге помогает создать gif-изображение эффектом параллакса.

Изображение взято из этой статьи

Эта сеть достраивает недостающее изображение, в связи с чем ее можно использовать не только для эффекта приближения, но и для движения вбок.

Пример на картине Рукие Гарип

Этот эффект часто используют в презентациях и во время создания слайд-шоу.

В качестве инструментов для создания 3D-моделей по изображениям мы использовали Intel RealSense, Azure Kinect и RTAB-Map:

1. Intel RealSense — самая миниатюрная 3D-камера высокого разрешения, которая может записывать до миллиона точек пространственных данных в секунду. 2.Azure Kinect — комплект разработчика и периферийное устройство для ПК, который включает датчик глубины, массив с 7 микрофонами, 12-Мп RGB видеокамеру, акселерометр и гироскоп для сенсорной ориентации и пространственного слежения. 3. RTAB-Map — библиотека с реализацией определенных алгоритмов.

Используя эти инструменты, можно воссоздать 3D-модели путем сканирования пространства, что значительно ускоряет работу. В рамках нашего проекта “Уроки Аушвица” мы экспериментировали с различными способами создания Volumetric Video с применением описанных выше инструментов, и с нашим опытом вы можете познакомиться в серии статей:

Суммируя все вышеописанные опыты, мы можем сказать, что нейронные сети, преобразовывая изображения, анимации и видео в 3D-объекты, помогают:

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

3. Обработка 3D-данных

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

  • Работа с 3D-объектами

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

Картинка взята с этого источника :)

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

По аналогии с 2D можно сегментировать объекты в 3D с помощью Instance Segmentation. Нейронная сеть может выделять объекты в 3D-сценах:

Такая технология пока работает не в real-time, но позволяет максимально приблизиться к онлайн-сканированию. Многие такие сцены при этом создаются с помощью сканирования реальных объектов и комнаты или по фотографиям:

Исследование Университета Мюнхена

С примером работы Instance Segmentation в 3D вы можете также ознакомиться в этом видео:

Последние разработки также позволяют не просто отсканировать окружающую среду, но и помещать в нее объекты в дополненной реальности:

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

С помощью сетей можно не только сегментировать сцену или группу объектов, но и разбивать сам элемент на части. Например, на человеке или животном размечать его части тела, или делить абсолютно любой предмет на возможные составные части:

Такой способ можно использовать для автоматизации процессов поиска или для анализа объектов для деления на специализированные категории.

Для восстановления объектов из облака точек используется нейронная сеть Occupancy Network, которая позволяет создавать полигональные модели.

На примере слева это отсканированный с помощью RGB-D камеры стул, который представляет собой набор точек. На основе этих данных сгенерирована 3D-модель стула:

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

С помощью нейронных сетей можно воссоздать позу человека в 3D, для этого можно воспользоваться Azure Kinect Body Tracking, которая позволяет отделять скелеты людей и выстраивать точки скелетов сразу нескольких человек. Или iPi Mocap Studio — программным обеспечением, которое на основе заснятых с помощью iPi Recorder данных позволяет получать качественную скелетную анимацию. Мы экспериментировали с этой технологией Motion Capture в наших проектах, в частности — в “Уроках Аушвица”.

Подробнее ознакомиться с реализацией вы можете во 2 части нашего цикла статей, посвященного проекту:

  • Работа с большими объемами 3D-данных

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

Нашей командой был создан плагин RCVS для Blender специально для выполнения этой задачи: благодаря ему можно находить в библиотеке объекты, подобные выбранному.

Об этом алгоритме мы, кстати, также написали статью:

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

Так можно визуализировать большие объемы данных в виде 2D-графика, например, на основе анализа публикаций газеты и ключевых слов, которые объединяются в группу по темам:

Источник: http://www.kennyshirley.com/LDAvis/#topic=6&lambda=0.2&term=

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

Посмотреть визуализацию вы можете в этом видео.
  • Какие еще могут быть эксперименты с 3D?

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

Интересное применение этой концепции Raymarching — это визуализация музыки. С помощью этого подхода можно делать различные деформации и отрисовывать много одинаковых объектов в реальном времени, создавая неповторимые картины.

Пример использования Raymarching в музыке:

Мы также изучали дифференциальный рендер —это система рендеринга трехмерных сцен, позволяющая строить непрерывные дифференцируемые зависимости между параметрами основных объектов сцены (освещение, текстуры, камеры и меш объектов) и их растрового отображения.

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

Подробнее о дифференциальном рендере:

О том, как дифференциальный рендеринг реализован в PyTorch3D, можно узнать в следующем ролике:

А ниже вы можете также ознакомиться с обзором задач и методов нейронного рендеринга от Массачусетского технологического института (MIT):

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

Очень скоро мы выпустим обзорную статью про инструменты работы с 3D-данными, поэтому не забывайте следить за обновлениями. :)

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

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

Выводы

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

В этой обзорной статье мы уделяли особое внимание следующим нейронным сетям и инструментам работы с файлами:

  • Instance Segmentation,
  • StyleTransfer,
  • pix2pix,
  • PoseNet,
  • Vibe,
  • SuperResolution,
  • SuperSloMo,
  • PRNet,
  • PIFu,
  • Occupancy Network,
  • KenBurns,
  • GauGan.

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

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

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

Авторы

Дарья Мухина

Creative manager

DariaWind@phygitalism.com

PHYGITALISM

Александр Крючков

Инженер-исследователь

a.kryuchkov@phygitalism.com

PHYGITALISM

PHYGITALISM

Создаем проекты на стыке XR, ML и других интерактивных…

PHYGITALISM

Создаем проекты на стыке XR, ML и других интерактивных технологий

PHYGITALISM

Written by

Мы - команда PHYGITALISM, реализуем фиджитал-проекты и много экспериментируем с XR, интерактивными технологиями и машинным обучением.

PHYGITALISM

Создаем проекты на стыке XR, ML и других интерактивных технологий