Журнал / герои

Построение 3D-моделей по снимку со смартфона

Как машинное обучение помогает сканировать тело человека — и зачем это нужно.

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

Ахмедхан Шабанов, выпускник кафедры анализа данных ФИВТа МФТИ и разработчик в In3D, рассказал Академии о том, как изменилась компьютерная графика с приходом машинного обучения и почему нейросети сложно обрабатывать изображения людей с бородой и усами.

Учёба в МФТИ и ШАД

В 2015 году я поступил в МФТИ на факультет радиотехники и кибернетики — но этого мне оказалось мало. От друзей в вузе я слышал, что в ШАД сильные преподаватели, дружное сообщество студентов и много разнообразных курсов: можно попробовать себя в разных областях и выбрать ту, которая тебе ближе. 

Я выбрал направление Data Science, и всё оказалось ровно так, как я себе представлял. А на одном из семинаров по глубинному обучению познакомился со своим будущим начальником и научным руководителем Дмитрием Ульяновым. К учёбе я сразу подошёл серьёзно и жёстко планировал время. Его не всегда хватало для того, чтобы выполнять задания на полный балл, но я старался и в результате закрывал большую часть курсов на отлично. Так как я прошёл в ШАД, то смог перейти на кафедру анализа данных в ФИВТ МФТИ и поступить в магистратуру. 

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

Компьютерное зрение и 3D-графика — довольно популярные темы, поэтому в этих областях каждый год появляются новые технологии и идеи. Например, учёные из Google Research и университетов Бёркли и Сан-Диего недавно описали, как создавать 3D-модели объектов с помощью неявных нейронных функций. 

Компьютерная графика появилась давно, ещё в 70-е годы прошлого века. И с тех пор много где используется: в играх, в виртуальной или дополненной реальности. Когда в эту область пришло машинное обучение, появились методы, которые выдают впечатляющие результаты: 3D-модели становятся всё более реалистичными и их становится всё проще строить. Есть гипотеза, что появление AR-очков, над которыми сейчас работают Apple, Facebook, Microsoft и другие корпорации, будет иметь такое же влияние на жизнь человека, как и появление телефона. А компьютерная графика играет важнейшую роль в продуктах, разработанных для этой платформы. 

Виртуальные примерочные и 3D-модели тела человека

В стартапе In3D, куда меня позвал Дима Ульянов из ШАД, мы занимаемся разработкой моделей, которые позволяют строить реалистичные 3D-реконструкции тела человека для виртуальных примерочных. Чтобы примерить вещь перед покупкой и понять, как она будет сидеть вживую, покупателю нужно только включить камеру и покрутиться перед смартфоном в полный рост. А нейросеть на основе этой записи реконструирует модель его тела и накладывает на неё одежду.

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

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

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

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

Дипломная работа и одна из задач стартапа

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

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

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

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

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