Карта глубины — различия между версиями
(→Построение с помощью капсульных нейронных сетей) |
Frak (обсуждение | вклад) (→Мотивация) (Метки: правка с мобильного устройства, правка из мобильной версии) |
||
Строка 5: | Строка 5: | ||
== Мотивация == | == Мотивация == | ||
− | Карта глубины изображения содержит в себе информацию о расстоянии между различными объектами или частями объектов, представленных на данном изображении. Эта информация может быть полезна | + | Карта глубины изображения содержит в себе информацию о расстоянии между различными объектами или частями объектов, представленных на данном изображении. Эта информация может быть полезна во многих областях. |
+ | |||
+ | * Для создания 3D-сенсеров. Они способны строить трёхмерную картину своего окружения, используются для [[Оценка положения|ориентации]] автономного робота в пространстве. | ||
+ | |||
+ | * Для систем, использующих технологии дополненной и виртуальной реальности. Например, камеры, которые фиксируют действия пользователя при игре в видеоигру, использующую технологию виртуальной реальности. | ||
+ | |||
+ | * Нельзя не отметить, беспилотные автомобили, которые так же используют карты глубин для ориентации на дороге. | ||
+ | |||
+ | * Для обработки фотографий. Например, карты глубин используют для размытия фона на фотографии, чтобы добиться более чёткого выделения на ней человека<ref name="expls">Примеры из "Research Guide for Depth Estimation with Deep Learning"[https://www.kdnuggets.com/2019/11/research-guide-depth-estimation-deep-learning.html]</ref>. | ||
== Методы построения карты глубины == | == Методы построения карты глубины == |
Версия 20:47, 20 января 2021
Карта глубины (англ. depth map) — это изображение, на котором для каждого пикселя вместо цвета хранится его расстояние до камеры.[1]
В компьютерной 3D-графике и компьютерном зрении карта глубины представляет собой изображение или канал изображения, содержащий информацию о расстоянии поверхностей объектов сцены от точки обзора.
Содержание
Мотивация
Карта глубины изображения содержит в себе информацию о расстоянии между различными объектами или частями объектов, представленных на данном изображении. Эта информация может быть полезна во многих областях.
- Для создания 3D-сенсеров. Они способны строить трёхмерную картину своего окружения, используются для ориентации автономного робота в пространстве.
- Для систем, использующих технологии дополненной и виртуальной реальности. Например, камеры, которые фиксируют действия пользователя при игре в видеоигру, использующую технологию виртуальной реальности.
- Нельзя не отметить, беспилотные автомобили, которые так же используют карты глубин для ориентации на дороге.
- Для обработки фотографий. Например, карты глубин используют для размытия фона на фотографии, чтобы добиться более чёткого выделения на ней человека[2].
Методы построения карты глубины
Карта глубины может быть получена с помощью специальной камеры глубины, по стереопаре изображений, а также с помощью нейронных сетей.
Построение с помощью специальных камер глубин
- ToF-камеры (англ. Time of Flight). Данный метод основан на измерении задержки света. Фактически нам нужно измерить задержку, с которой свет возвращается в каждую точку. Либо, если у нас несколько сенсоров с разным временем накопления заряда, то, зная сдвиг по времени относительно источника для каждого сенсора и снятой яркости вспышки, мы можем рассчитать сдвиг и, соответственно, расстояние до объекта, причем увеличивая количество сенсоров — увеличиваем точность.
- Структурированные световые камеры (aнгл. Structured light camera). Это один из самых старых и дешёвых способов построить карту глубин. Основная идея крайне проста. Ставим рядом проектор, который создает, например, горизонтальные (а потом вертикальные) полоски и рядом камеру, которая снимает картину с полосками. В некоторых вариантах используются псевдослучайный набор точек (MS Kinect). Проекторы обычно работают в инфракрасном спектре, очевидно, чтобы не мешать пользователям. Поскольку камера и проектор смещены друг относительно друга, то и полоски также будут смещаться пропорционально расстоянию до объекта. Измеряя это смещение, мы можем рассчитывать расстояние до объекта. Вполне понятны проблемы, с которыми можно столкнуться при использовании этого метода: это необходимость настройки и калибровки проектора, и проблема того, что нам нужно относительно благоприятное освещение. К примеру, солнце может засветить полосы, и что-то распознать будет тяжело.
Построения карты глубины по стереопаре
Идея, лежащая в основе построения карты глубины по стереопаре, очень проста. Для каждой точки на одном изображении выполняется поиск парной ей точки на другом изображении. А по паре соответствующих точек можно выполнить триангуляцию и определить координаты их прообраза в трехмерном пространстве. Зная трехмерные координаты прообраза, глубина вычисляется как расстояние до плоскости камеры.
Парную точку нужно искать на эпиполярной[3] линии. Соответственно, для упрощения поиска изображения выравнивают так, чтобы все эпиполярные линии были параллельны сторонам изображения (обычно горизонтальны). Более того, изображения выравнивают так, чтобы для точки с координатами соответствующая ей эпиполярная линия задавалась уравнением . Тогда для каждой точки, соответствующую ей парную точку, нужно искать в той-же строчке на изображении со второй камеры. Такой процесс выравнивания изображений называют ректификацией (rectification).
После того, как изображения ректифицированы, выполняют поиск соответствующих пар точек. Для каждого пикселя одной картинки с координатами корреляция окрестностей пикселей. В результате получается карта смещений, пример которой приведен на рис. 2.
выполняется поиск пикселя на другой картинке. При этом предполагается, что пиксель на второй картинке должен иметь координаты , где d — величина называемая смещением. Поиск соответствующего пикселя выполняется путем вычисления максимума функции отклика, в качестве которой может выступать, например,Собственно значения глубины обратно пропорциональны величине смещения пикселей.
Использование нейронных сетей
Существует множество решений данной проблемы, использующих нейронные сети. Приведём пару примеров таких решений.
Построение с помощью свёрточных нейронных сетей
Используем сверточные нейронные сети для построения карты глубины следующим образом:
- Создаем карту смещений: используя 2 изображения с камер, близко расположенных друг к другу, создаем карту различий, точно так же как в методе построения по стереопаре.
- "Ищем реальную карту глубины для обучения": с помощью карты смещений, можем построить карту глубины вышеописанным способом. Также допустимы другие способы построения карты глубины для обучения нейронной сети.
- Функция потерь: определим функцию потерь, для предсказанной карты , , и - количество пикселей. Где и это гиперпараметр , который нужен для того, чтобы функция потерь меньше росла при большом количестве пикселей, предсказание для которых достаточно близко к реальному. Например, если , то мы просто придём к оптимизации в L2. [4]
- Обучение свёрточной нейронной сети: далее идёт обычное обучение нейронной сети по карте различий путем обратного распространения ошибки, оптимизируя заданную выше функцию потерь.
В итоге, по обученной нейронной сети мы можем создавать карту глубины, не проводя расчётов для поиска карт смещения и имея только изображение объекта или пространства. [5]
Также возможно использование усложнённых архитектур свёрточных нейронных сетей типа DenseNet.
DenseNet[6] — это свёрточная нейронные сеть, в которой выход каждого из слоев подаётся на вход всем слоям, лежащих ниже.
Построение с помощью капсульных нейронных сетей
Свёрточные нейронные сети способны регистрировать только наличие какого-либо объекта на картинке, не кодируя его ориентацию и положение. Но капсульные нейронные сети (англ. Capsule Neural Network) лишены этого недостатка.
"Капсульная нейронная сеть" состоит из капсул или групп нейронов, чтобы идентифицировать закономерности в изображении. Эта информация поступает в виде векторов, содержащих ориентацию и положение узоров на изображении, которое затем принимается капсулами более высокого уровня. Капсулы более высокого уровня обрабатывают эту информацию из нескольких капсул более низкого уровня и впоследствии выдают прогноз. Капсулы одного уровня не имеют связей друг с другом и вычисляют информацию независимо друг от друга. Капсулы образуются путем разделения выходных данных из свёрточного слоя. Мы делим наш трехмерный вектор на капсулы методом "нарезания" таким образом, чтобы в каждой капсуле была информация о каждом пикселе, т.е. по трехмерной координате.
Состояние нейронов капсульной нейронной сети внутри изображения фиксирует свойство области или объекта внутри изображения: его положение и ориентацию.
Использование капсульной нейронной сети аналогично с использованию обычных свёрточных сетей, описанному выше. В целом, данная сеть показывает более точные результаты предсказания глубины.
См. также
Примечания
- ↑ Alexey Kurakin "Основы стереозрения"[1]
- ↑ Примеры из "Research Guide for Depth Estimation with Deep Learning"[2]
- ↑ Информация о эпиполярной геометрии[3]
- ↑ David Eigen, Christian Puhrsch, Rob Fergus "Depth Map Prediction from a Single Imageusing a Multi-Scale Deep Network" стр. 5
- ↑ Реализация, основанная на свёрточных нейронных сетях [4]
- ↑ Оригинальная статья описывающая DenseNet [5]
- ↑ "Design and Investigation of Capsule Networks for Sentence Classification" Figure 2. [6]
Источники информации
- Р.А. Чугунов, А.Д. Кульневич, С.В. Аксенов "Методика построения карт глубины стереоизображения с помощью капсульной нейронной сети" [7]
- Alexey Kurakin "Основы стереозрения" [8]
- Dmitriy Vatolin "Камеры глубины — тихая революция" [9]
- Ibraheem Alhashim, Peter Wonka "High Quality Monocular Depth Estimation via Transfer Learning" [10]
- David Eigen, Christian Puhrsch, Rob Fergus "Depth Map Prediction from a Single Imageusing a Multi-Scale Deep Network [11]
- Sunil Prakash, Gaelan Gu "Simultaneous Localization And Mapping with depth Prediction using Capsule Networks for UAVs" [12]