Представляем PyTorch3D: библиотеку с открытым исходным кодом для глубокого 3D-обучения

МЕНЮ


Искусственный интеллект
Поиск
Регистрация на сайте
Помощь проекту
Архив новостей

ТЕМЫ


Новости ИИРазработка ИИВнедрение ИИРабота разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика

Авторизация



RSS


RSS новости


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

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

PyTorch3D недавно стал катализатором в работе Facebook AI по созданию Mesh R-CNN, который добился полной реконструкции 3D-объектов из изображений сложных внутренних пространств. Мы объединили PyTorch3D с нашей высоко оптимизированной библиотекой распознавания 2D, Detectron2, чтобы успешно продвинуть понимание объекта в третье измерение. Функции PyTorch3D для обработки вращений и 3D-преобразований также были центральными в создании C3DPO, нового метода обучения ассоциациям между изображениями и 3D-фигурами с использованием менее аннотированных обучающих данных.

Исследователи и инженеры могут аналогичным образом использовать PyTorch3D для широкого спектра исследований 3D глубокого обучения - будь то 3D-реконструкция, настройка связки или даже 3D-рассуждение-для улучшения задач распознавания 2D. Сегодня мы делимся нашей библиотекой PyTorch3D здесь и открываем источник нашей кодовой базы Mesh R-CNN здесь.
PyTorch3D: более быстрое, гибкое исследование глубокого обучения 3D

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

Точно так же, как PyTorch предлагает высоко оптимизированные библиотеки для задач распознавания 2D, PyTorch3D оптимизирует обучение и вывод, предоставляя возможности дозирования и поддержки 3D-операторов и функций потери.

Структура данных для хранения и манипулирования пакетами треугольных сеток

Поскольку 3D-сетки содержат набор координат вершин и индексов граней, они создают несколько проблем при пакетной обработке 3D-сеток различных размеров. Чтобы решить эту проблему, мы создали Meshes-структуру данных для пакетной обработки гетерогенных сеток в приложениях глубокого обучения. Эта структура данных позволяет исследователям быстро преобразовывать базовые данные сетки в различные представления, чтобы сопоставить операторы с наиболее эффективным представлением данных. PyTorch3D предоставляет исследователям и инженерам гибкость для эффективного переключения между различными представлениями представления и доступа к различным свойствам сеток.

Эффективные операции на треугольных сетках

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

Дифференцируемый сетчатый визуализатор

Рендеринг-это основная часть компьютерной графики, которая преобразует 3D-модели в 2D-изображения. Это естественный способ преодолеть разрыв между свойствами 3D-сцены и пикселями 2D-изображения. Однако традиционные механизмы рендеринга не дифференцируются, поэтому они не могут быть включены в конвейеры глубокого обучения. Недавно несколько академических исследовательских проектов (таких как OpenDR, Neural Mesh Renderer, Soft Rasterizer и redner) показали, как построить дифференцируемые рендеры, которые полностью интегрируются с глубоким обучением.

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

В PyTorch3D мы написали эффективный модульный дифференцируемый визуализатор. Наша реализация состоит из составных блоков, что позволяет пользователям легко расширить рендерер для поддержки пользовательских эффектов освещения или затенения. Вычислительно тяжелый этап растеризации имеет параллельные реализации в PyTorch, C++ и CUDA, а также комплексные тесты для проверки корректности. Как и все другие операторы в PyTorch3D, наш рендерер поддерживает гетерогенные пакеты данных, опираясь на нашу сетчатую структуру данных. Вы можете найти глубокое погружение в реализацию рендерера и различных модулей, доступных в документации PyTorch3D.

Толкая вперед 3D понимание

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

В Facebook AI мы будем постоянно улучшать и расширять операторов, которых мы предоставляем в PyTorch3D, и мы приветствуем вклад сообщества в создание этого ресурса.


Источник: ai.facebook.com

Комментарии: