Изменения

Перейти к: навигация, поиск

Карта глубины

3359 байт добавлено, 23:18, 18 января 2021
Нет описания правки
'''Карта глубины''' (англ. depth map) — это изображение, на котором для каждого пикселя, вместо цвета, храниться хранится его расстояние до камеры.<ref name="def">Alexey Kurakin "Основы стереозрения"[https://habr.com/ru/post/130300/]</ref>
В компьютерной 3D-графике и [[Компьютерное зрение|компьютерном зрении]] карта глубины представляет собой изображение или канал изображения, содержащий информацию о расстоянии поверхностей объектов сцены от точки обзора.
Карта глубины может быть получена с помощью '''специальной камеры глубины''', а так же может быть построена по '''стереопаре изображений''', а так же с помощью [[Нейронные сети, перцептрон|'''нейронных сетей''']].
 
== Использование нейронных сетей ==
 
Существует множество решений данной проблемы, использующих нейроные сети, приведём пару примеров таких решений.
 
=== Построение с помощью капсульных нейронных сетей ===
== Построение с помощью специальных камер глубин ==
Собственно значения глубины обратно пропорциональны величине смещения пикселей.
== Использование нейронных сетей ==
 
Существует множество решений данной проблемы, использующих нейроные сети, приведём пару примеров таких решений.
 
=== Построение с помощью свёрточных нейронных сетей ===
Используем [[Сверточные нейронные сети|сверточные нейронные сети]] для построения карты глубины следующим образом:
 
* '''Создаем карту смещений''': Используя 2 изображения с камер, близко расположенных друг у другу, создаем карту различий <math>y</math>, точно так же как в методе построения по стереопаре.
 
* '''Функция потерь''': определим [[Функция потерь и эмпирический риск|функцию потерь]], для предсказанной карты <math>\hat y</math>, math>d_i = log y_i - log \hat y_i</math>, <math>\lambda \in [0, 1]</math> и <math>n </math> - количество пикселей. Гиперпараметр <math>\lambda</math>, нужен для того, чтобы функция потерь меньше росла, при большом количестве пикселей, предсказание для которых достаточно близко к реальному. Например, если <math>\lambda = 0</math>, то мы просто придём к оптимизации в [[Регуляризация|L2]].
 
<math>L(y, \hat y) = \frac{1}{n} \sum\limits_{i} d^2_i - \frac{\lambda}{n^2}(\sum\limits_{i} d_i)^2</math>
 
* '''Обучение сверточной нейронной сети''': далее идёт обычное обучение нейронной сети по карте различий, путем обратного распространения ошибки оптимизируя, заданную выше функцию потерь.
 
 
По итогу, по обученной нейронной сети, мы можем создавать карту глубины, не проводя расчётов для поиска, карт смещения, и имя только 1 изображения объекта или пространства.
 
=== Построение с помощью капсульных нейронных сетей ===
 
=== Построение с помощью DenseNet ===
 
'''DenseNet'''<ref name="DenseNet">Оригинальная статья описывающая DenseNet [https://arxiv.org/abs/1611.09326]</ref> - это свёрточная нейронные сеть, в которой выход каждого из слоев, подаётся на вход всем слоям, которые лежат ниже.
 
Принцип обучения будет тот же, что и в обычной свёрточной сети, но теперь мы попытаемся найти новую функцию потерь, которая минимизирует разницу значений глубины, а также компенсирует искажения высокочастотных деталей изображения.
== См. также ==
* Dmitriy Vatolin "Камеры глубины — тихая революция" [https://habr.com/ru/post/457524/]
 
* Ibraheem Alhashim, Peter Wonka "High Quality Monocular Depth Estimation via Transfer Learning" [https://arxiv.org/pdf/1812.11941.pdf]
 
* David Eigen, Christian Puhrsch, Rob Fergus "Depth Map Prediction from a Single Imageusing a Multi-Scale Deep Network [https://arxiv.org/pdf/1406.2283.pdf]
Анонимный участник

Навигация