Авторы: Цзюнь Гао, NVIDIA, Университет Торонто, Векторный институт (jung@nvidia.com) Тяньчан Шэнь, NVIDIA, Университет Торонто, Векторный институт (frshen@nvidia.com) Цзыань Ван, NVIDIA, Университет Торонто, Векторный институт (zianw@nvidia.com) Вэньчжэн Чэнь, NVIDIA, Университет Торонто, Векторный институт (wenzchen@nvidia.com) Кансюэ Инь, NVIDIA (kangxuey@nvidia.com) Дайцин Ли, NVIDIA (daiqingl@nvidia.com) Ор Литани, NVIDIA (olitany@nvidia.com) Зан Гойчич, NVIDIA (zgojcic@nvidia.com) Саня Фидлер, NVIDIA, Университет Торонто, Векторный институт (sfidler@nvidia.com) Аннотация Поскольку несколько отраслей промышленности движутся к моделированию массивных 3D-виртуальных миров, становится очевидной потребность в инструментах для создания контента, которые могут масштабироваться по количеству, качеству и разнообразию 3D-контента. В нашей работе мы стремимся обучать высокопроизводительные 3D-генеративные модели, которые синтезируют текстурированные сетки, которые могут быть напрямую использованы 3D-рендеринговыми движками, тем самым немедленно пригодными для использования в последующих приложениях. Предыдущие работы по 3D-генеративному моделированию либо лишены геометрических деталей, либо ограничены по топологии сетки, которую они могут производить, обычно не поддерживают текстуры, либо используют нейронные рендереры в процессе синтеза, что делает их использование в обычных 3D-программах нетривиальным. В этой работе мы представляем GET3D, enerative model, которая напрямую генерирует xplicit extured meshes со сложной топологией, богатыми геометрическими деталями и высокоточными текстурами. Мы объединяем недавние успехи в дифференцируемом моделировании поверхностей, дифференцируемом рендеринге, а также 2D-генеративных состязательных сетях для обучения нашей модели на основе коллекций 2D-изображений. GET3D способен генерировать высококачественные 3D-текстурированные сетки, от автомобилей, стульев, животных, мотоциклов и человеческих персонажей до зданий, достигая значительных улучшений по сравнению с предыдущими методами. Наша страница проекта: G E T 3D https://nv-tlabs.github.io/GET3D 1 Введение Разнообразный, высококачественный 3D-контент становится все более важным для различных отраслей, включая игры, робототехнику, архитектуру и социальные платформы. Однако ручное создание 3D-ассетов очень трудоемко и требует специальных технических знаний, а также навыков художественного моделирования. Одной из основных проблем является масштабирование – в то время как 3D-модели можно найти на 3D-маркетплейсах, таких как Turbosquid [ ] или Sketchfab [ ], создание множества 3D-моделей для, скажем, заполнения игры или фильма толпой персонажей, которые все выглядят по-разному, по-прежнему требует значительного времени художника. 4 3 Чтобы упростить процесс создания контента и сделать его доступным для различных (начинающих) пользователей, 3D-генеративные сети, способные создавать высококачественные и разнообразные 3D-ассеты, в последнее время стали активной областью исследований [ , , , , , , , , , , ]. Однако, чтобы быть практически полезными для текущих реальных приложений, 3D-генеративные модели в идеале должны соответствовать следующим требованиям: они должны иметь возможность генерировать формы с детальной геометрией и произвольной топологией, выходные данные должны быть текстурированной сеткой, что является основным представлением, используемым стандартными пакетами графического программного обеспечения, такими как Blender [ ] и Maya [ ], и мы должны иметь возможность использовать 2D-изображения для надзора, поскольку они более широко доступны, чем явные 3D-формы. 5 14 43 46 53 68 75 60 59 69 23 (a) (b) 15 1 (c) Предыдущие работы по 3D-генеративному моделированию были сосредоточены на подмножествах вышеуказанных требований, но ни один метод на сегодняшний день не удовлетворяет всем им (Табл. ). Например, методы, генерирующие 3D-облака точек [ , 68, 75], обычно не производят текстур и должны быть преобразованы в сетку в постобработке. 1 5 Методы, генерирующие воксели, часто лишены геометрических деталей и не производят текстур [ , , , ]. Генеративные модели на основе нейронных полей [ , ] фокусируются на извлечении геометрии, но игнорируют текстуру. Большинство из них также требуют явного 3D-надзора. Наконец, методы, которые напрямую выводят текстурированные 3D-сетки [ , ], обычно требуют предопределенных шаблонов форм и не могут генерировать формы со сложной топологией и переменным родом. 66 20 27 40 43 14 54 53 Недавно быстрый прогресс в нейронном объемном рендеринге [ ] и 2D-генеративных состязательных сетях (GAN) [ , , , , ] привел к росту 3D-осознанного синтеза изображений [ , , , , , ]. Однако эта линия работы направлена на синтез согласованных по нескольким видам изображений с использованием нейронного рендеринга в процессе синтеза и не гарантирует, что могут быть сгенерированы осмысленные 3D-формы. Хотя сетку потенциально можно получить из нижележащего представления нейронного поля с помощью алгоритма марширующих кубов [ ], извлечение соответствующей текстуры является нетривиальной задачей. 45 34 35 33 29 52 7 57 8 49 51 25 39 В этой работе мы представляем новый подход, направленный на удовлетворение всех требований практически полезной 3D-генеративной модели. В частности, мы предлагаем GET3D, enerative model для 3D-форм, которая напрямую выводит xplicit extured meshes с высокой геометрической детализацией и детализацией текстур, а также произвольной топологией сетки. В основе нашего подхода лежит генеративный процесс, который использует дифференцируемый метод извлечения поверхности [ ] и технику дифференцируемого рендеринга [ , ]. Первый позволяет нам напрямую оптимизировать и выводить текстурированные 3D-сетки с произвольной топологией, а второй позволяет нам обучать нашу модель на 2D-изображениях, тем самым используя мощные и зрелые дискриминаторы, разработанные для синтеза 2D-изображений. Поскольку наша модель напрямую генерирует сетки и использует высокоэффективный (дифференцируемый) графический рендерер, мы можем легко масштабировать нашу модель для обучения с разрешением изображений до 1024 × 1024, что позволяет нам изучать высококачественные геометрические детали и детализацию текстур. G E T 3D явной 60 47 37 Мы демонстрируем передовую производительность в области безусловной генерации 3D-форм на нескольких категориях со сложной геометрией из ShapeNet [ ], Turbosquid [ ] и Renderpeople [ ], таких как автомобили, стулья, мотоциклы, человеческие персонажи и здания. Благодаря явному представлению сетки в качестве выходных данных, GET3D также очень гибок и может быть легко адаптирован к другим задачам, включая: обучение генерации разложенных материалов и эффектов освещения, зависящих от вида, с использованием продвинутого дифференцируемого рендеринга [ ], без надзора, генерация 3D-форм на основе текста с использованием CLIP [ ] встраивания. 9 4 2 (a) 12 (b) 56 2 Связанная работа Мы рассматриваем последние достижения в области 3D-генеративных моделей для геометрии и внешнего вида, а также 3D-осознанного генеративного синтеза изображений. В последние годы 2D-генеративные модели достигли фотореалистичного качества в синтезе изображений высокого разрешения [ , , , , , , ]. Этот прогресс также вдохновил исследования в области генерации 3D-контента. Ранние подходы были направлены на прямое расширение 2D-генераторов CNN на 3D-воксельные сетки [ , , , , ], но большой объем памяти и вычислительная сложность 3D-сверток препятствуют процессу генерации в высоком разрешении. В качестве альтернативы, другие работы исследовали представления в виде облака точек [ , , , ], неявные [ , ] или октеевые [ ]. Однако эти работы в основном фокусируются на генерации геометрии и игнорируют внешний вид. Их выходные представления также требуют постобработки, чтобы сделать их совместимыми со стандартными графическими движками. 3D-генеративные модели 34 35 33 52 29 19 16 66 20 27 40 62 5 68 75 46 43 14 30 Более близкие к нашей работе Textured3DGAN [ , ] и DIBR [ ] генерируют текстурированные 3D-сетки, но они формулируют генерацию как деформацию шаблонной сетки, что мешает им генерировать сложную топологию или формы с различным родом, что может делать наш метод. PolyGen [ ] и SurfGen [ ] могут производить сетки с произвольной топологией, но не синтезируют текстуры. 54 53 11 48 41 Вдохновленные успехом нейронного объемного рендеринга [ ] и неявных представлений [ , ], недавние работы начали решать проблему 3D-осознанного синтеза изображений [ , , , , , , , , , ]. Однако нейронные сети объемного рендеринга обычно медленно запрашиваются, что приводит к длительному времени обучения [ , ] и генерации изображений ограниченного разрешения. GIRAFFE [ ] и StyleNerf [ ] улучшают эффективность обучения и рендеринга, выполняя нейронный рендеринг в более низком разрешении, а затем повышая разрешение результатов с помощью 2D CNN. Однако прирост производительности достигается за счет снижения согласованности по нескольким видам. Используя двойной дискриминатор, EG3D [ ] может частично смягчить эту проблему. Тем не менее, извлечение текстурированной поверхности из методов, основанных на нейронном рендеринге, является нетривиальной задачей. В отличие от этого, GET3D напрямую выводит текстурированные 3D-сетки, которые могут быть немедленно использованы в стандартных графических движках. 3D-осознанный генеративный синтез изображений 45 43 14 7 57 49 26 25 76 8 51 58 67 7 57 49 25 8 3 Метод Теперь мы представляем нашу структуру GET3D для синтеза текстурированных 3D-форм. Наш процесс генерации разделен на две части: ветвь геометрии, которая дифференцируемо выводит сетку поверхности произвольной топологии, и ветвь текстуры, которая производит поле текстур, которое может быть запрошено в точках поверхности для получения цветов. Последнее может быть расширено до других свойств поверхности, таких как, например, материалы (Раздел ). Во время обучения используется эффективный дифференцируемый растеризатор для рендеринга полученной текстурированной сетки в 2D-изображения высокого разрешения. Весь процесс является дифференцируемым, что позволяет осуществлять состязательное обучение на основе изображений (с масками, указывающими интересующий объект) путем распространения градиентов от 2D-дискриминатора к обеим ветвям генератора. Наша модель проиллюстрирована на рис. . Далее мы сначала представляем наш 3D-генератор в разделе , а затем переходим к дифференцируемому рендерингу и функциям потерь в разделе . 4.3.1 2 3.1 3.2 3.1 Генеративная модель 3D-текстурированных сеток Мы стремимся изучить 3D-генератор = ( ) для отображения выборки из гауссова распределения M, E G z ∈ N (0*,* ) в сетку с текстурой . z I M E Поскольку одна и та же геометрия может иметь разные текстуры, а одна и та же текстура может применяться к разным геометриям, мы выбираем две случайные входные векторы 1 ∈ R512 и 2 ∈ R512. Следуя StyleGAN [ , , ], мы затем используем нелинейные отображающие сети geo и tex для отображения 1 и 2 в промежуточные латентные векторы 1 = geo( 1) и 2 = tex( 2), которые далее используются для получения , контролирующих генерацию 3D-форм и текстур соответственно. Мы формально вводим генератор для геометрии в разделе , а генератор текстур в разделе . z z 34 35 33 f f z z w f z w f z стилей 3.1.1 3.1.2 3.1.1 Генератор геометрии Мы разрабатываем наш генератор геометрии для включения DMTet [ ], недавно предложенного представления дифференцируемой поверхности. DMTet представляет геометрию как поле знаковых расстояний (SDF), определенное на деформируемой тетраэдральной сетке [ , ], из которой поверхность может быть дифференцируемо восстановлена с помощью марширующих тетраэдров [ ]. Деформация сетки путем перемещения ее вершин приводит к лучшему использованию ее разрешения. Принимая DMTet для извлечения поверхности, мы можем производить явные сетки с произвольной топологией и родом. Далее мы кратко суммируем DMTet и отсылаем читателя к оригинальной статье для получения более подробной информации. 60 22 24 17 Пусть ( ) обозначают полное 3D-пространство, в котором находится объект, где — вершины в тетраэдральной сетке . Каждый тетраэдр ∈ определяется с использованием четырех вершин { }, с ∈ {1*, . . . , K*}, где — общее количество тетраэдров, и ∈ ∈ R3. В дополнение к своим 3D-координатам , каждая вершина содержит значение SDF ∈ R и деформацию ∆ ∈ R3 вершины от ее начальной канонической координаты. Это представление позволяет восстановить явную сетку с помощью дифференцируемого марширующего тетраэдра [ ], где значения SDF в непрерывном пространстве вычисляются путем барицентрической интерполяции их значения на деформированных вершинах ′ = + ∆ . VT , T VT T Tk T v ak , v bk , v ck , v dk k K v ik VT , v ik i v i si v i 60 si v v i v i Мы отображаем 1 ∈ R512 в значения SDF и деформации в каждой вершине через серию условных 3D-сверточных и полносвязных слоев. В частности, мы сначала используем 3D-сверточные слои для генерации объемной характеристики, обусловленной 1. Затем мы запрашиваем характеристику в каждой вершине ∈ с использованием трилинейной интерполяции и передаем ее в MLP, которые выдают значение SDF и деформацию ∆ . В случаях, когда требуется моделирование в высоком разрешении (например, мотоцикл с тонкими структурами в колесах), мы дополнительно используем объемное подразделение согласно [ ]. Архитектура сети w v i w v i VT si v i 60 После получения и ∆ для всех вершин мы используем дифференцируемый алгоритм марширующих тетраэдров для извлечения явной сетки. Марширующие тетраэдры определяют топологию поверхности внутри каждого тетраэдра на основе знаков . В частности, грань сетки извлекается, когда sign( ) /= sign( ), где обозначают индексы вершин на ребре тетраэдра, а вершины этой грани определяются линейной интерполяцией как mi,j = v 0 i sj−v 0 j si sj−si . Обратите внимание, что приведенное выше уравнение вычисляется только тогда, когда si 6= sj , поэтому оно дифференцируемо, и градиент от mi,j может быть обратно распространен в значения SDF si и деформации ∆vi . С этим представлением формы с произвольной топологией могут быть легко сгенерированы путем предсказания различных знаков si . Дифференцируемое извлечение сетки si v i si si sj i, j m i,j 3.1.2 Генератор текстур Прямая генерация карты текстур, согласованной с выходной сеткой, не является тривиальной, поскольку сгенерированная форма может иметь произвольный род и топологию. Поэтому мы параметризуем текстуру как поле текстур [ ]. 50 В частности, мы моделируем поле текстур с помощью функции , которая отображает 3D-положение точки поверхности ∈ R3, обусловленное 2, в цвет RGB ∈ R3 в этом положении. Поскольку поле текстур зависит от геометрии, мы дополнительно обуславливаем это отображение кодом геометрии 1, так что = ( *,* 1 ⊕ 2), где ⊕ обозначает конкатенацию. ft p w c w c ft p w w Мы представляем наше поле текстур с использованием триплоскостного представления, которое является эффективным и выразительным в реконструкции 3D-объектов [ ] и генерации 3D-осознанных изображений [ ]. В частности, мы следуем [ , ] и используем условную 2D-сверточную нейронную сеть для отображения латентного кода 1 ⊕ 2 в три ортогональные выровненные по осям плоскости характеристик размером × × ( × 3), где = 256 обозначает пространственное разрешение, а = 32 — количество каналов. Архитектура сети 55 8 8 35 w w N N C N C Учитывая плоскости характеристик, вектор характеристик f t ∈ R 32 точки поверхности p может быть получен как f t = P e ρ(πe(p)), где πe(p) — проекция точки p на плоскость характеристик e, а ρ(·) обозначает билинейную интерполяцию характеристик. Затем используется дополнительный полносвязный слой для отображения агрегированного вектора характеристик f t в цвет RGB c. Обратите внимание, что, в отличие от других работ по 3D-осознанному синтезу изображений, которые также используют представление нейронного поля, нам нужно только выбирать пробы из поля текстур в положениях точек поверхности (в отличие от плотных проб вдоль луча). Это значительно снижает вычислительную сложность для рендеринга изображений высокого разрешения и гарантирует генерацию согласованных по нескольким видам изображений по конструкции. 3.2 Дифференцируемый рендеринг и обучение Чтобы осуществлять надзор над нашей моделью во время обучения, мы черпаем вдохновение из Nvdiffrec [ ], который выполняет многовидовую реконструкцию 3D-объектов с использованием дифференцируемого рендерера. В частности, мы рендерим извлеченную 3D-сетку и поле текстур в 2D-изображения с использованием дифференцируемого рендерера [ ], и осуществляем надзор над нашей сетью с помощью 2D-дискриминатора, который пытается отличить изображение от реального объекта или от сгенерированного объекта. 47 37 Мы предполагаем, что распределение камер C, которое использовалось для получения изображений в наборе данных, известно. Чтобы рендерить сгенерированные формы, мы случайным образом выбираем камеру из C и используем высокооптимизированный дифференцируемый растеризатор Nvdiffrast [ ] для рендеринга 3D-сетки в 2D-силуэт, а также изображение, где каждый пиксель содержит координаты соответствующей 3D-точки на поверхности сетки. Эти координаты далее используются для запроса поля текстур для получения значений RGB. Поскольку мы работаем напрямую с извлеченной сеткой, мы можем рендерить изображения высокого разрешения с высокой эффективностью, что позволяет обучать нашу модель с разрешением изображений до 1024 × 1024. Дифференцируемый рендеринг c 37 Мы обучаем нашу модель с использованием состязательной цели. Мы используем архитектуру дискриминатора из StyleGAN [ ] и применяем ту же несатурирующую GAN-цель с R1-регуляризацией [ ]. Эмпирически мы обнаружили, что использование двух отдельных дискриминаторов, одного для RGB-изображений и другого для силуэтов, дает лучшие результаты, чем один дискриминатор, работающий на обоих. Пусть обозначает дискриминатор, где может быть либо RGB-изображением, либо силуэтом. Тогда состязательная цель определяется следующим образом: Дискриминатор и цель 34 42 Dx x где ( ) определяется как ( ) = − log(1 +exp(− )), — распределение реальных изображений, обозначает рендеринг, а — гиперпараметр. Поскольку дифференцируема, градиенты могут быть обратно распространены от 2D-изображений к нашим 3D-генераторам. g u g u u px R λ R Чтобы удалить внутренние плавающие грани, которые не видны ни на одном из видов, мы дополнительно регулируем генератор геометрии с помощью перекрестной энтропийной потери, определенной между значениями SDF соседних вершин [ ]: Регуляризация 47 где обозначает потерю бинарной перекрестной энтропии, а обозначает сигмоидную функцию. Сумма в Eq. определяется по набору уникальных ребер S в тетраэдральной сетке, для которых sign( ) /= sign( ). H σ 2 e si sj Общая функция потерь затем определяется как: где — гиперпараметр, контролирующий уровень регуляризации. µ 4 Эксперименты Мы проводим обширные эксперименты для оценки нашей модели. Сначала мы сравниваем качество 3D-текстурированных сеток, генерируемых GET3D, с существующими методами, используя наборы данных ShapeNet [ ] и Turbosquid [ ]. Затем мы анализируем наши проектные решения в разделе . Наконец, мы демонстрируем гибкость GET3D, адаптируя его к последующим приложениям в разделе . Дополнительные экспериментальные результаты и детали реализации приведены в Приложении. 9 4 4.2 4.3