Оценка глубины с помощью глубоких нейронных сетей, часть 1

Проводя опрос с моим коллегой Махмуд Селми о современных методах использования глубоких нейронных сетей для оценки карт глубины по 2-мерным изображениям, мы решили вести мини-блоги, которые, как мы надеемся, принесут пользу любой, кто знаком с NN, несмотря на область, в которой он их применяет, при условии, что НИКАКИХ предыдущих знаний в этой области не было.

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

Ввод:

Двухмерное RGB-изображение.

Вывод:

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

Функция потерь:

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

Где:

D = журнал (прогнозируемая карта глубины)

D * = log (наземная карта глубины)

d =D - D*

di = Di - D * i = разница между прогнозируемой и реальной глубиной для пикселя i

n = общее количество пикселей

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

Итак, мы знакомы с первым членом, который равен 1 / n * сумме разницы между log Di и log D * i для всех i в диапазоне от первого пикселя до последнего пикселя n. Это можно просто назвать среднеквадратичной ошибкой (также известной как ошибка L2). Он измеряет только среднее отклонение между предсказанием глубины каждого пикселя и глубиной истины.

А как же второй срок ?!

Давайте посмотрим, какова его цель, а затем перейдем к тому, как ее достичь.

используя эту визуализацию этих предсказанных и наземных карт глубины.

По человеческим оценкам, этот результат считается почти идеальным.

Однако стандартная среднеквадратическая ошибка будет большой из-за того, что цветовой диапазон каждого изображения масштабируется отдельно.

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

Но как этого добиться с помощью этого члена функции затрат?

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

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

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

Мы говорили о числах, так что давайте разберемся с интуицией на другом примере.

Подумав об этом, мы можем фактически обнаружить, что это приводит к предпочтению обученной сети, которая имеет отклонения в прогнозах, а не базовой истине, которая сохраняет отношения относительной глубины между всеми пикселями изображения (для простоты рассмотрим прогноз Di = 2D * i для каждого пикселя i), чем другая обученная сеть, которая идеально предсказывает некоторые пиксели, скажем, объекта X в середине изображения, в то время как другой объект Y, по прогнозам, находится ближе к камере, чем X, хотя на самом деле он находится дальше по глубине. Хотя без этого термина, вторая сеть будет предпочтительнее, особенно если Y - небольшой объект (то есть: представлен небольшим количеством пикселей).

Хотя первая сеть предсказывала глубину, масштабированную на 2 больше, чем наземная истина, она сохранила относительные отношения глубины между X и Y, предсказав, что Y дальше, чем X. И наша новая потеря выбрала этот первый случай, придав ему меньшую стоимость.

Это то, чего мы стремимся достичь… yaaaay!

Основываясь на этом, к функции затрат добавляется новый член следующего вида:

Недавно добавленный термин сравнивает градиенты изображения предсказания с наземной истинностью, наказывая внезапное изменение (в любом направлении в 2-м пространстве) разницы между предсказанной и наземной истинными картами. Таким образом, если пиксели i и являются двумя соседними пикселями, этот термин заставляет разницу между di и dj быть как можно более минимальной, а значения карты глубины ведущего пикселя i и j должны быть почти равными, если их истинная истинность равна (то есть: пиксели i и j имеют одинаковую глубину) и меняются, если их основные истинные значения были разными (т. е. пиксели i и j имеют разную глубину). Это способствует тому, чтобы прогнозы имели не только близкие значения, но и схожую локальную структуру. Экспериментально установлено, что выходные данные лучше соответствуют градиентам глубины без ухудшения измеренных характеристик L2, что приводит к более точным прогнозам.

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

В следующем блоге (часть 2) мы намерены подробно изучить различные архитектуры для достижения этой области, а затем еще один, богатый кодом реализации и иллюстрациями.

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

На этот пост сильно повлияли следующие статьи:

1) Прогнозирование глубины, нормалей поверхности и семантических меток с помощью общей многомасштабной сверточной архитектуры

2) Прогнозирование карты глубины на основе одного изображения с использованием многомасштабной глубинной сети

Со мной можно связаться: Linkedin