Your AI powered learning assistant

3D-учебник по глубокому обучению с помощью Pytorch3d

Introduction

00:00:00

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

Heterogeneous Batching

00:01:00

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

3D Operators

00:01:40

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

Differential Renderer

00:03:56

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

pytorch3d.datasets

00:04:33

PyTorch3D предлагает набор данных из ShapeNet с 13 категориями и 24 различными точками обзора для каждого объекта, что упрощает процесс глубокого обучения. Он включает в себя такие утилиты, как метод icosphere, который упрощает создание сферы и превращение ее в целевые объекты, устраняя необходимость загружать сферы из OBJ-файлов. Кроме того, пользователи могут легко создавать такие формы, как торы, не изобретая заново существующие методы. Для практического понимания возможностей PyTorch3D рекомендуется ознакомиться с учебными пособиями.

Google Colab: Deform a source mesh to form a target mesh using 3D loss functions

00:05:54

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

Loss functions/regularizers: Chamfer distance, edge loss, laplacian smoonthing, normal consistency

00:06:52

Расстояние между фасками, потеря краев, сглаживание по методу Лапласа и нормальная согласованность - это ключевые функции потери, используемые для обеспечения сходства облаков точек во время оптимизации формы. Регуляризаторы помогают поддерживать гладкую структуру сетки на протяжении всего процесса. Настройка включает использование графического процессора для ускорения обработки; в противном случае процессор работает медленнее, но функционально. Сетка dolphin будет загружена в качестве целевого объекта, в то время как исходная сетка sphere будет создана с определенными параметрами, которые влияют на ее гладкость и количество вершин.

Using Stochastic Gradient Descent for Optimization loop

00:08:58

Оптимизация формы сетки с помощью стохастического градиентного спуска Для оптимизации используется стохастический градиентный спуск со скоростью обучения 1,0 и импульсом 0,9, при этом основное внимание уделяется таким параметрам, как потеря фаски и веса кромок, для контроля гладкости сетки. Этот процесс включает преобразование сетки в облака точек путем выборки фиксированных точек как из целевой (dolphin), так и из исходной (sphere) сетки, что позволяет рассчитать расстояние между ними для получения потерь, таких как потеря краев и нормальная согласованность. Эти различные потери объединяются с использованием заранее определенных весов, которые существенно влияют на конечную форму; их корректировка может привести к получению менее гладких поверхностей или неровных краев.

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

Opening the reconstructed mesh in Blender (Dolphin)

00:13:38

Если открыть восстановленную сетку dolphin в Blender, то обнаружится большое сходство с исходной формой сферы. Регулируя параметры потерь, в частности, устанавливая другие значения на ноль, сохраняя при этом потери на фаске активными, можно наблюдать значительные изменения в визуальном результате. Эксперименты с этими значениями демонстрируют их влияние на качество конечной модели; устранение некоторых потерь приводит к получению непривлекательного изображения дельфина. В следующем уроке мы перенесем акцент с использования целевых сеток на использование 2D-фотографий для оптимизации 3D-объектов с помощью методов API PyTorch и дифференциальных методов рендеринга.

Trying Pytorch3D's visualization tools for Plotly

00:16:00

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

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

Fit a mesh using Pytorch3D's differential renderer

00:22:27

Использование синтетических данных для эффективного обучения Используя дифференциальный рендерер Pytorch3D, сетка cow с текстурой загружается из OBJ-файла для создания синтетических наборов данных. Цель состоит в том, чтобы сгенерировать несколько 2D-изображений коровы с разных точек зрения и использовать эти изображения для глубокого 3D-обучения, не полагаясь на дорогостоящие наземные модели. Этот подход использует множество доступных 2D-данных вместо дорогостоящих аннотированных 3D-объектов.

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

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

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

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