Atlas: Как реконструировать 3D сцену из набора изображений

в 15:30, , рубрики: 3D ML, 3d графика, atlas, CV, deep learning, искусственный интеллект

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

Представляю метод 3D-реконструкции сцены (процесс создания трехмерной модели объекта на основе двухмерных изображения или видео), который основан на линейной регрессии, усеченной знаковой функции расстояния (TSDF) (Рассмотрим в следующем пункте) из набора RGB-изображений с заданными позициями (для каждого изображения известны параметры камеры, включая её позицию и ориентацию в пространстве). Обычно подходы по 3D реконструкции опираются на карты глубины перед оценкой 3D сцены. Мы же предполагаем, что прямая регрессия в 3D более эффективна. 2D-CNN извлекает признаки из каждого изображения независимо, которые затем проецируются и аккумулируются (собираются) в воксельном объеме с использованием внутренних (Фокусное расстояние, Центр проекции, Коэффициенты искажения) и внешних (Позиция, Ориентация) параметров камеры. После 3D-CNN уточняет накопленные признаки и предсказывает значения TSDF.

TSDF

Если вы знакомы с таким принцип, то можете пропустить этот пункт и перейти к основной части статьи. Если нет, то к вашему вниманию TSDF (Truncated Signed Distance Function - усечённая функция расстояния со знаком). Однако прежде чем перейти к ее обсуждению, поговорим о SDF (Signed Distance Function). В первую очередь это функция которая описывает расстояние от точки до определенной поверхности или объекта в трехмерном пространстве.

Обозначим:

  • ( Omega ) — множество точек, образующих объект;

  • ( deltaOmega) — точки, лежащие на поверхности объекта;

  •  (dleft(x,yright))— евклидова метрика, то есть расстояние от точки ( x ) до точки ( y ).

Скрытый текст

Евклидова метрика d=sqrt{left(x_2-x_1right)^2+left(y_2-y_1right)^2}

И так же имеем определение:

dleft(x,deltaOmegaright)=inf_{yindeltaOmega}{d}left(x,yright)

То есть мы будем искать наименьшее расстояние до об]екта сравнивая множества точек об]екта.

Тогда определим

Atlas: Как реконструировать 3D сцену из набора изображений - 8

Если точка находится внутри объекта, функция присваивает положительное значение, и отрицательное, если снаружи.

Хорошо в этом мы разобрались, однако у нас TSDF, что не слишком усложняет задачу, потому что мы просто отсекаем часть данных, и допустим работает в диапазоне [-1;1]

Atlas: Как реконструировать 3D сцену из набора изображений - 9

Где sng(x) – это функция знака:

Atlas: Как реконструировать 3D сцену из набора изображений - 10
Atlas: Как реконструировать 3D сцену из набора изображений - 11

Введение

Atlas: Как реконструировать 3D сцену из набора изображений - 12

На рисунке представлено графическое изображение метода обработки данных. Слева показан **Feature Volume** (объем признаков), где признаки из изображений проецируются и накапливаются в объем. Посередине представлен **TSDF Volume** (объем TSDF), который проходит через процесс уточнения с использованием 3D CNN (сверточная нейронная сеть). Справа изображен **Labeled Mesh** (сетчатая модель с метками), созданная на основе TSDF, которая также может содержать семантические метки. Рисунок иллюстрирует последовательность обработки данных от признаков до финальной модели.

В этой работе мы отмечаем, что карты глубины часто представляют собой промежуточные представления, которые затем сливаются с другими картами глубины в полную 3D модель. В связи с этим предлагаем метод, который принимает последовательность RGB-изображений и напрямую предсказывает полную 3D модель в обучаемом в end-to-end режиме (модель обучается одновременно, без разделения на отдельные этапы от начала до конца). Это позволяет сети объединять больше информации и лучше усваивать геометрические приоритеты о мире, что приводит к значительно лучшим реконструкциям. Более того, это снижает сложность системы, устраняя такие этапы, как выбор кадров, а также уменьшает необходимые вычислительные затраты, распределяя их на всю последовательность.

Метод основывается на двух основных направлениях: многовидном стерео, основанными на стоимости объема (одним словом мы просто создаем карту глубины) и уточнении усеченной signed distance функции (TSDF). Многовидное стерео использует объем стоимости с использованием плоского сканирования для создания 3D моделей из 2D изображений, снятых под разными углами. Здесь эталонное изображение (то есть будем отталкиваться от него) деформируется на целевое изображение (то есть будем всячески менять наше эталонное изображение, чтобы оно лучше соответствовало форме и углам целевого изображения) для каждого из фиксированного набора плоскостей глубины и складывается в 3D объем стоимости. Глубина вычисляется, принимая аргумент минимума по плоскостям. Эту процедуру делают более устойчивой, извлекая особенности изображения с помощью CNN и фильтруя объем стоимости с помощью другой CNN перед принятием аргумента минимума.

Уточнение TSDF начинается с объединения карт глубины от датчика глубины в начальный воксельный объем с использованием слияния TSDF, при котором каждый воксель хранит усеченное знаковое расстояние до ближайшей поверхности. Обратите внимание, что из этого неявного представления можно извлечь триангулированную сетку (меш), находя поверхность нулевого пересечения (обнаружение границ объектов) с помощью алгоритма marching cubes. Методы уточнения TSDF принимают этот шумный и неполный TSDF в качестве входных данных и уточняют его, пропуская через сеть 3D свёрточного кодировщика-декодировщика.

Метод

Наш метод принимает на вход последовательность RGB-изображений произвольной длины, каждое из которых имеет известные параметры камеры и позицию. Эти изображения проходят через 2D CNN для извлечения признаков. Затем признаки проецируются в 3D воксельный объем и накапливаются с использованием скользящего среднего. Как только признаки изображения были объединены в 3D, мы регрессируем TSDF напрямую, используя 3D CNN (см. рис.). Мы также экспериментируем с добавлением дополнительного выходного слоя для предсказания семантической сегментации.

Схема метода, использующие 2D и 3D CNN для анализа последовательности изображений.

Схема метода, использующие 2D и 3D CNN для анализа последовательности изображений.

- Сначала из изображений извлекаются признаки с помощью 2D CNN, которые затем проектируются в 3D объем.

- Эти объемы аккумулируются и передаются через 3D CNN для регрессии TSDF (Truncated Signed Distance Function) и совместного предсказания 3D семантической сегментации сцены.

Построение объема признаков

Пусть ( I_t in R^{mathbb{3} times h times w} ) — это изображение в последовательности из t RGB изображений. Где I_t это конкретное изображение с mathbb{3} каналами(red,green,blue) h – высотой и w – шириной. Мы извлекаем признаки (F_t=Fleft(I_tright)in R^{ctimes htimes w}) с помощью стандартной 2D сверточной нейронной сети, где F_t это функция для извлечения признаков, а ( c ) — это размерность признаков(число каналов). Эти 2D признаки затем проецируются в 3D объем вокселей, учитывая известные параметры камеры. Рассмотрим объем вокселей (Vin R^{ctimes Htimes Wtimes D}) где D – это глубина:

Vleft(t,i,j,kright)=F_tleft(t,hat{i},hat{j}right), with

где t это номер кадра или отметка в последовательности изображений. ( i) и ( j ) это координаты в пространстве вокселей, которые соответствуют двумерным проекциям ширины и высоты. Они представляют собой положение вокселя в конкретном слое объёма. А ( k ): это координата глубины, которая указывает слой в объёме вокселей. И ( hat{i}) и (hat{j}): это проекции в 2D, которые соответствуют двумерным координатам на изображении. Эти координаты определяют, какие пиксели из изображения (I_t) используются для заполнения вокселей.

Atlas: Как реконструировать 3D сцену из набора изображений - 28

где (P_t) и (K_t)— это внешняя (определяет, где расположена камера и как она направлена) и внутреняя (определяет, как камера "видит" мир.) матрицы для изображения (t) соответственно, (Pi) — это перспектива. Здесь left(i,j,kright) — это координаты вокселей в мировом пространстве, а left(hat{i},hat{j}right)— это пиксельные координаты в пространстве изображения. Обратите внимание, что это означает, что все воксели вдоль луча камеры заполнены теми же признаками, соответствующими этому пикселю.

Эти объемы признаков накапливаются за всю последовательность с использованием взвешенного скользящего среднего, аналогичного объединению TSDF, следующим образом:

Atlas: Как реконструировать 3D сцену из набора изображений - 34

Для весов мы используем бинарную маску(W_tleft(i,j,kright)in{0,1}), которая хранит информацию о том, находится ли воксель (left(i,j,kright)) внутри или вне объекта видимости камеры.

3D кодировщик-декодировщик

После того как признаки накоплены в объеме вокселей, мы используем сеть 3D кодировщика-декодировщика для уточнения признаков и регрессии выходных значений TSDF (Рис. 3). Каждый слой кодировщика и декодировщика использует набор остаточных блоков (Основная идея остаточного блока заключается в том, что он позволяет пропускать информацию и градиенты через сеть) 3x3x3. Понижение разрешения осуществляется с помощью сверточной операции 3x3x3 с шагом 2, в то время как повышение разрешения выполняется с помощью тройной интерполяции (метод интерполяции, который используется для оценки значений в трехмерном пространстве), за которой следует сверточная операция 1x1x1 для изменения размерности признаков. Размерность признаков удваивается при каждом понижении разрешения и уменьшается вдвое при каждом повышении разрешения. Все сверточные слои сопровождаются нормализацией по мини-батчам (batchnorm) и активацией ReLU. Мы также добавляем аддитивные пропускные соединения (позволяет передавать информацию из одного слоя сети в более глубокий слой, не проходя через все промежуточные слои) от кодировщика к декодировщику.

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

Архитектура 3D кодировщика декодировщика

Архитектура 3D кодировщика декодировщика
  1. **Синие блоки**: Эти блоки обозначают остаточные (residual) блоки, которые используются для обработки информации в сети.

  2. **Зеленые блоки**: Эти блоки представляют сверточные операции с шагом 2 (strided convolutions), применяемые для понижения разрешения данных.

  3. **Красные блоки**: Эти блоки обозначают тройную интерполяцию (trilinear upsampling) для повышения разрешения данных.

  4. **Стрелки**: Они указывают на пропускные соединения (skip connections) от кодировщика к декодировщику, что позволяет передавать информацию из более ранних слоев в более глубокие слои.

  5. ** Изображения**: Они показывают промежуточные выходные данные, которые получаются на разных этапах обработки

Архитектура сети предполагает, что предсказания TSDF (Truncated Signed Distance Function) происходят на различных уровнях разрешения, начиная с более грубого и уточняя его на более тонком этапе.

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

Подробности по реализации

Для реализации нашего метода мы используем ResNet50-FPN , за которым следует метод объединения с 32 выходными каналами в качестве нашей 2D основы. Наша 3D CNN состоит из пирамиды разрешения с четырьмя уровнями ( то есть мы разделяем наше изображение (640х480) на 4 уровня, где каждый следующий уровень это половина разрешения предыдущего уровня (то есть 2 уровень будет размерностью 320х240 ну и т.д.)), где мы удваиваем количество каналов каждый раз, когда уменьшаем разрешение. Кодер состоит из (1, 2, 3, 4) остаточных блоков на каждом уровне, а декодер состоит из (3, 2, 1) остаточных блоков.

Контролируя многомасштабные реконструкции TSDF производится с использованием L1 потерь по отношению к истинным значениям TSDF. Прогнозируемые и целевые значения логарифмируются перед применением L1 потерь, причем потери обратного распространения рассчитываются только для наблюдаемых векторов. Также вводится штраф за воксели с полностью вертикальной колонной, равной 1, чтобы исключить артефакты за стенами.

Для построения истинных значений TSDF выполняется слияние TSDF на каждом разрешении перед обучением. Обучение сети осуществляется с использованием 50 случайно выбранных изображений из полного последовательности. Используется размер вокселей 4 см³ с сеткой 160×160×64, что соответствует объему 6.4 × 6.4 × 2.56 метра. Во время тестирования аккумулируются объемы признаков, что позволяет работать с последовательностями произвольной длины.

В заключение.

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

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

На этом все, спасибо всем за прочтение статьи, надеюсь вам помог!

Автор: Lightcart

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js