Lift: Преобразование Изученных Инвариантных Признаков



LIFT: преобразование изученных инвариантных признаков



Введение

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

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

Пришло время написать об еще одном павшем бойце в войне традиционного видения против глубокого обучения.

Многие годы в задаче поиска локальных особенностей изображений (так называемых ключевых точек) доминировал алгоритм SIFT (Scale-invariant Feature Transform), предложенный еще в 1999 году.

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

Итак, встречайте новый алгоритм поиска локальных признаков — LIFT (Learned Invariant Feature Transform).



Потребность в данных



LIFT: преобразование изученных инвариантных признаков

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

Итак, давайте посмотрим, на что способны искусственные детекторы/дескрипторы характерных точек:

  • Инвариантность к местоположению на картинке.

  • Инвариантность к углу поворота.

  • Масштабная инвариантность.

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

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

Но синтетика плоха, потому что всегда есть какие-то ограничения на точность моделирования.

реальные случаи.

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

Например, при 3D-реконструкции сцены, снятой с разных ракурсов, мы делаем что-то вроде этого:

  • Для каждого изображения сцены находим специальные точки.

  • Находим соответствия между особыми точками на разных изображениях.

  • Но на основе этой информации мы рассчитываем пространственное положение каждого кадра (параметризуемое через

    LIFT: преобразование изученных инвариантных признаков

    те.

    вращение и перемещение относительно начала координат).

  • С помощью процедуры триангуляции находим трехмерные положения всех особых точек.

  • Использование обширной оптимизации, т.е.

    Регулировка комплекта (чаще всего алгоритм, полученный на основе метода Левенберга-Марквардта), мы получаем более точную информацию о расположении точек в пространстве.

  • Все виды постобработки.

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

В качестве побочного продукта работы такого алгоритма мы получаем облако точек, где каждой 3D-точке соответствует несколько ее 2D-позиций (проекций) на кадрах сцены.

Это облако — именно тот набор данных, который нам нужен.

Особо не заморачиваясь тонкостями Structure From Motion, авторы работы взяли пару общедоступных наборов данных для 3D-реконструкции, прогнали их через общедоступный инструмент для построения облака точек (VisualSFM), а затем использовали полученный набор данных.

в своих экспериментах.

Утверждается, что сетка, обученная на таком наборе, также распространяется на другие типы сцен.



Сетки, сетки, сетки



LIFT: преобразование изученных инвариантных признаков

С датасетом мы разобрались, поэтому пора переходить к самому интересному, а именно к изучению сеток.

Всю сетку можно разделить на 3 логических блока:

  • Детектор – отвечает за поиск особых точек на всем изображении в целом.

  • Rotation Estimator — определяет ориентацию точки и вращает патч вокруг нее так, чтобы угол поворота стал нулевым.

  • Дескриптор — принимает на вход патч, из которого конструирует уникальный (вот получается) вектор, описывающий этот патч.

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

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



Вывод



LIFT: преобразование изученных инвариантных признаков

Поиск особых точек и вычисление их дескрипторов происходит в несколько этапов:
  • Сначала мы строим пирамиду изображения (т. е.

    уменьшаем исходное изображение до нескольких масштабов для получения масштабно-инвариантных признаков) для исходного изображения.

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

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

  • Для каждой особой точки мы вырезаем участок, включающий в себя особую точку и часть ее окрестностей.

  • Мы выравниваем ориентацию каждого патча с помощью средства оценки ориентации.

  • Мы вычисляем дескриптор для каждого выровненного патча.

  • Используем полученные дескрипторы для стандартной процедуры сопоставление функций .



Дескриптор

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

Поэтому начнем обзор с конца, а именно с построения дескриптора для уже найденной особой точки.

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

Но, как показывает практика, не обязательно брать огромную сеть, такую как, например, VGG16, ResNet-152, Inception и т. д., нам достаточно небольшой сети: 2-3 сверточных слоя с активациями в виде гиперболических тангенсов и другие мелочи типа пакетной нормализации и т.д. Для конкретики обозначим наш сетевой дескриптор

LIFT: преобразование изученных инвариантных признаков

, Где

LIFT: преобразование изученных инвариантных признаков

— дескрипторная сверточная сеть,

LIFT: преобразование изученных инвариантных признаков

- его параметры,

LIFT: преобразование изученных инвариантных признаков

— патч с нулевым углом (полученный из средства оценки вращения).

Для каждой особой точки составим две пары:



  • LIFT: преобразование изученных инвариантных признаков

    — пара патчей, соответствующих проекциям одной и той же особой точки.



  • LIFT: преобразование изученных инвариантных признаков

    - пара патчей, где первый принадлежит особой точке, а второй (отрицательный образец) - нет. В этом случае «негативный» участок выбирается из определенной окрестности, не слишком далекой от положительной.

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

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

LIFT: преобразование изученных инвариантных признаков

Те.

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



Оценщик вращения

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

Но вместо того, чтобы учить Дескриптор запоминать все возможные углы наклона одной и той же точки, предлагается использовать промежуточный вычислительный блок, который будет определять ориентацию заплатки в пространстве (Rotation Estimator) и «поворачивать» заплатку на какую-то из своих точек.

состояние, инвариантное к вращению (пространственное преобразование).

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

.

Поэтому для решения этой проблемы мы воспользуемся другой сверточной нейронной сетью.

Итак, обозначим нашу нейронную сеть как:

LIFT: преобразование изученных инвариантных признаков

, Где

LIFT: преобразование изученных инвариантных признаков

- параметры сети и

LIFT: преобразование изученных инвариантных признаков

- оригинальный патч.

Возьмем пары патчей в качестве обучающей выборки

LIFT: преобразование изученных инвариантных признаков

,

LIFT: преобразование изученных инвариантных признаков

, принадлежащие одной особой точке, но имеющие разные углы наклона, а также их пространственные координаты

LIFT: преобразование изученных инвариантных признаков

,

LIFT: преобразование изученных инвариантных признаков

.

В процессе обучения мы будем минимизировать следующую функцию потерь:

LIFT: преобразование изученных инвариантных признаков

Где

LIFT: преобразование изученных инвариантных признаков

— заплатка, полученная после процедуры исправления ее ориентации,

LIFT: преобразование изученных инвариантных признаков

.

Те.

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



Детектор

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

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

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

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

LIFT: преобразование изученных инвариантных признаков

а затем вычислите положение особой точки:

LIFT: преобразование изученных инвариантных признаков

Где

LIFT: преобразование изученных инвариантных признаков

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



LIFT: преобразование изученных инвариантных признаков

:

LIFT: преобразование изученных инвариантных признаков

где y — позиция внутри карт очков,

LIFT: преобразование изученных инвариантных признаков

— гиперпараметр, отвечающий за коэффициент «размытия» функции softmax. При обучении детектора мы возьмем четыре патча

LIFT: преобразование изученных инвариантных признаков

, Где

LIFT: преобразование изученных инвариантных признаков

- проекции одной и той же особой точки,

LIFT: преобразование изученных инвариантных признаков

- проекция другой особой точки,

LIFT: преобразование изученных инвариантных признаков

— патч, не принадлежащий особой точке.

Для набора таких патчей минимизируем следующую функцию потерь:

LIFT: преобразование изученных инвариантных признаков

Где

LIFT: преобразование изученных инвариантных признаков

— параметр балансировки двух членов функции потерь.

Участник потерь, ответственный за правильную классификацию на положительные и отрицательные:

LIFT: преобразование изученных инвариантных признаков

Член потерь, отвечающий за точную локализацию особых точек:

LIFT: преобразование изученных инвариантных признаков



Обучение



LIFT: преобразование изученных инвариантных признаков

Вся сеть обучается модным сейчас способом End-To-End, т.е.

все части сети сразу обучаются параллельно, как сиамские сети.

В этом случае для каждого из 4 используемых при обучении патчей создается отдельная ветвь сети с общими между ними весами.

Ээксперименты

LIFT: преобразование изученных инвариантных признаков

Сравнив с ранее существовавшими методами поиска особых точек, авторы пришли к выводу, что их подход является современным.

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

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

Ссылки

Спасибо за внимание.

P.S. Этот пост является результатом обсуждения кружки , а потому стиль автора может быть недостаточно литературным.

Теги: #машинное обучение #глубокое обучение #компьютерное зрение #Алгоритмы #Обработка изображений #Машинное обучение

Вместе с данным постом часто просматривают: