Искусственный интеллект

Использование искусственного интеллекта для создания 3D-моделей, быстро!

Как использовать код NeRF для создания 3D-моделей

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

Звучит заманчиво, правда? Из небольшого набора изображений вы можете сделать 3D-модель! Это имеет преимущества по сравнению со стандартной фотограмметрией, которая требует огромной библиотеки изображений для создания чего-либо (вам нужно иметь отснятый материал с каждого ракурса). Однако с самого начала мы обещали, что нерфы будут быстрыми, чего до недавнего времени не было. Раньше NeRFs требовалось очень много времени, чтобы научиться преобразовывать ваш набор изображений во что-то 3D.

 

 

Библиотека изображений от Daz3D studio https://www.daz3d-poser.net  

Это уже не так. Nvidia выпустила свое программное обеспечение instant NeRF, которое использует аппаратные средства графического процессора для выполнения необходимых сложных вычислений. Это сократило время, необходимое для создания модели, с нескольких дней до нескольких секунд! NVIDIA делает много захватывающих заявлений о удобстве использования и скорости программного обеспечения instant-ngp. Результаты и примеры, которые они приводят, чрезвычайно впечатляют:

 

 

Нерф-образ, который NVIDIA сделала из  лаборатории робототехники.

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

Так что же мы будем делать?

Нам нужны справочные кадры. Давайте запишем что-нибудь, что мы хотим сделать в 3D-формате!

Мы возьмем это и перенесем на неподвижные изображения. Этот процесс также пытается понять, с каких ракурсов мы записывали.

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

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

Я не буду вдаваться в подробности того, как все это работает (хотя не стесняйтесь задавать вопросы!), Но я помещу ссылки на множество ресурсов, которые я нашел полезными. Вместо этого я сосредоточусь на видео, которые я сделал, и на небольших фрагментах путешествия, на которые я наткнулся.

Мои Попытки (он же Неряшливо Выглядящий Нерф-Пастух)

Не буду врать, мне было трудно это установить. Хотя инструкции ясны, я чувствую, что когда речь заходит о конкретных версиях программного обеспечения, которые вам нужны, остается меньше места для маневра, чем подразумевается в разделе требований репозитория. Использование CUDA 11.7 или VS2022 казалось мне невозможным, но я думаю, что именно возврат к 11.6 и VS2019 помог ускорить процесс установки. У меня было много ошибок, таких как: CUDA_ARCHITECTURES пусто для target. Это вызвано тем, что CUDA не хочет хорошо работать с Visual Studio. Я действительно рекомендую это видео и этот репозиторий для дальнейшей помощи в настройке всего!

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

Попытка 1: Автомобиль Lego

Сначала я попытался сконструировать маленькую машинку Lego в офисе. Я думаю, что моим фотографическим навыкам не хватало, так как я вообще не смог создать ничего толкового. Просто странное 3D-пятно. Хотя почему? Что ж, давайте посмотрим на один из примеров, которые предоставляет нам NVIDIA. Обратите внимание на расположение камеры:

 

 

Размещение “камеры” для стандартного NeRF

Особенностью установки, которая будет хорошо тренироваться, является расположение “камер”, как указано выше. Эти камеры представляют собой ракурсы, с которых, по мнению программного обеспечения, вы смотрели, когда снимали видео. Это должен быть красивый круг. С моей первой машиной Lego все было совсем не так, а скорее сплющенный полукруг.

Попытка 2: Автомобиль Lego (но на этот раз больше!)

Пытаясь извлечь уроки из своей первой попытки, я нашел стол, который мог полностью обойти, и нашел большую машину Lego. Я тоже старался быть уверенным, что стреляю дольше, чем раньше. В итоге у меня была 1 минута плавного отснятого материала со всех ракурсов. Я обучал модель менее чем за 30 секунд. После 4 часов рендеринга в 720p это видео, которое я сделал:

 

 

Мой второй нерф — автомобиль Lego Technic!

Попытка 3: Растение

Итак, попытка 2 была лучше, по крайней мере, технически она сработала. Тем не менее, есть странный туман, и он не очень резкий. Для моей следующей попытки я также попытался снимать с более дальнего расстояния (я предположил, что туман вызван тем, что ИИ “запутался” в том, что там находится). Я попытался больше контролировать aabc_scale (показатель того, насколько велика сцена), а затем тренировал его в течение нескольких минут. После рендеринга видео выглядит следующим образом:

 

 

Нерф, который я сделал из растения на столе в моей гостиной.

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

Попытка 4: Итак, мы становимся все лучше и лучше!

Тем не менее, я хочу один из внешних — давайте попробуем его. Я отснял чуть менее 2 минут видеоматериала за пределами своей квартиры и начал его обрабатывать. Это было особенно сложно для рендеринга / обучения. Я предполагаю, что мое значение aabc_scale было довольно высоким (8), и поэтому “лучи” рендеринга должны были выходить довольно далеко (т.Е. Количество материала, которое я хотел отобразить, было больше). Мне пришлось переключиться на 480p и снизить частоту кадров рендеринга до 10 (с 30). Это показывает, что ваш выбор настроек действительно влияет на время рендеринга. После 8 часов рендеринга я сделал это:

 

 

Нерф, которого я сделал возле своей квартиры.

Я думаю, что попытка 3 по-прежнему остается моей любимой. Я думаю, что мог бы сделать попытку 4 немного лучше. Однако перебирать версии и пробовать разные настройки рендеринга и обучения сложно, когда время рендеринга сейчас так велико. Даже настройка ракурсов камеры для рендеринга сейчас затруднена, из-за чего программа становится для меня вялой.

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

Плюсы и минусы

Я думаю, что самое впечатляющее то, что при отснятом материале продолжительностью 1-2 минуты человек, совершенно не обученный фотограмметрии (я), может создать работоспособную 3D-модель. Это требует некоторых технических ноу-хау, но как только вы все установите, оно станет гладким и простым в использовании. Преобразование видео в изображения работает хорошо, для этого предоставляются скрипты на Python. Как только они будут сделаны, ввод данных в искусственный интеллект происходит плавно.

Тем не менее, и в этом трудно винить NVIDIA, но я чувствую, что должен упомянуть об этом: для этой штуки требуется довольно мощный графический процессор. У меня в ноутбуке есть T500, и он доводит его до абсолютного предела. Обучение действительно занимает больше времени, чем заявленные 5 секунд, и попытка рендеринга в формате 1080 приводит к сбою программы (я динамически рендерил около 135 * 74). Теперь это все еще огромное улучшение по сравнению с предыдущей реализацией NeRF, которая заняла несколько дней. Я не думаю, что у всех есть 3090, который можно использовать для подобных проектов, поэтому стоит кратко упомянуть об этом. Низкая производительность затрудняла использование программы, особенно когда я пытался “полетать” камерой по кругу, чтобы настроить свои отрисованные видео. Тем не менее, трудно не быть впечатленным результатами этого процесса.

Другой проблемой, с которой я столкнулся, было нахождение render.py (что, как вы можете догадаться, жизненно важно для рендеринга видео). Очень странно, что его нет в репозитории, хотя он часто упоминается в большинстве рекламных статей и других частей документации. Мне пришлось выкопать его отсюда.

Наконец, я также хотел бы иметь возможность извлекать их в формате .obj — может быть, это уже возможно?

 

 

GIF с изображением лисы — это сделал не я, а NVIDIA. Хорошая работа, а?

Заключительные мысли и что будет дальше

Что это заставляет меня задуматься, так это DALL-E, искусственный интеллект, генерирующий изображения. Это стало невероятно популярным, отчасти из-за того, насколько легко оно доступно. Это дало людям невероятно классный пример того, на что способны модели искусственного интеллекта, и какие у них есть ограничения. Это вошло в поп-культуру (или, по крайней мере, широко представлено в моем Твиттере), когда люди создают свои собственные странные картинки и делятся ими. Я мог бы представить, что нечто подобное происходит и с этой технологией. Вирусный потенциал веб-сайта, который может позволить абсолютно любому загрузить видео и создать 3D-модель, которой вы могли бы поделиться со своими друзьями, огромен. Почти неизбежно, что в конце концов кто-то это сделает.

Лично я с нетерпением жду возможности поэкспериментировать с этим еще. Я хочу иметь возможность создавать суперреалистичные модели, а затем загружать их в AR / VR. Оттуда вы могли бы проводить встречи в этом пространстве — разве это не было бы забавно? Поскольку вам нужна только камера на вашем телефоне, большая часть оборудования, необходимого для этого, уже находится в руках пользователей.

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

Источник: towardsdatascience.com

Источник

Добавить комментарий

Кнопка «Наверх»