Мысли и теория

Сети с пространственными трансформаторами

Самостоятельное введение

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

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

Разделение ответственности

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

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

  1. используйте обратное преобразование 𝑇-1 {…}, чтобы вычислить соответствующую позицию во входном изображении.
  2. выборка значения пикселя с помощью билинейной интерполяции

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

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

Генератор сетки

Генератор сетки выполняет итерацию по регулярной сетке выходного / целевого изображения и использует обратное преобразование 𝑇-1 {…} для вычисления соответствующих (обычно не целых) позиций выборки во входном / исходном изображении. :

Верхние индексы 𝑡 и 𝑠 взяты из оригинальной статьи и обозначают «целевое изображение» и «исходное изображение». Индексы строк и столбцов сетки выборки обозначаются как 𝑖 и 𝑗 соответственно. Также обратите внимание, что в исходной статье обратное преобразование 𝑇-1 {…} над регулярной выходной сеткой обозначено как 𝒯𝜃 (𝐺).

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

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

где

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

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

Сэмплер

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

Извлечение значения пикселя состоит из трех операций:

  1. найти четыре соседние точки (верхний левый, верхний правый, нижний левый и нижний правый)
  2. для каждой соседней точки вычислить соответствующий вес
  3. взять средневзвешенное значение для получения результата

Все операции сведены в следующее уравнение, выведенное в последнем посте:

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

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

Сеть локализации

Задача сети локализации - найти параметры 𝜃 обратного преобразования 𝑇-1 {…}, которые переводят входную карту объектов в каноническую позу, тем самым упрощая распознавание в следующих слоях. Сеть локализации может принимать любую форму, например, полностью подключенную сеть или сверточную сеть, но должна включать последний уровень регрессии для получения параметров преобразования 𝜃:

Размер 𝜃 может варьироваться в зависимости от параметризованного преобразования, например для аффинного преобразования 6-мерно:

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

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

Полный модуль

Наконец, давайте посмотрим, как отдельные строительные блоки модуля пространственного преобразователя взаимодействуют друг с другом. Входная карта функций 𝑈 сначала передается в сеть локализации, которая восстанавливает соответствующие параметры преобразования 𝜃. Затем генератор сетки использует параметры преобразования 𝜃 для создания сетки выборки, которая представляет собой набор точек, в которых будет производиться выборка входной карты функций. Наконец, сэмплер берет и карту входных характеристик, и сетку сэмплирования и использует, например, билинейная интерполяция выводит преобразованную карту признаков.

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

Несколько каналов

До сих пор мы продемонстрировали принципы работы модуля пространственного преобразователя на входах с одним каналом 𝐶 = 1, которые встречаются, например, в изображения в оттенках серого. Однако часто модули пространственного преобразователя используются на более глубоких уровнях и работают на картах характеристик, которые обычно имеют более одного канала
𝐶 ›1. Даже при использовании сразу после входа модули пространственного преобразователя могут сталкиваться с входами с более чем одним канал, например изображения RGB с 3 каналами.

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

Подходим к концу третьего поста. К настоящему времени вы знакомы с двумя краеугольными камнями модуля пространственного преобразователя: обратным отображением и билинейной интерполяцией. Вы знаете все строительные блоки модуля пространственного преобразователя и то, как они взаимодействуют друг с другом. Многочисленные анимации должны были помочь вам развить сильную мысленную концепцию. Теперь вы все готовы использовать модули пространственного преобразования в средах автоматического дифференцирования, таких как TensorFlow или PyTorch.

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

использованная литература

Оригинальная статья
Разделение проблем
Пространственные преобразователи в PyTorch
Обзор: STN - Spatial Transformer Network