Эквивалентны ли сверточные нейронные сети трансляции? Да… НЕТ. Я покажу вам, как и почему они не эквивалентны.

Представим работу в двух постах:

  1. Текущие сверточные нейронные сети не эквивалентны переводам!
  2. Эксперименты с полной сверткой с деталями.

Содержание этого поста основано на нашей недавней статье, которая будет представлена ​​на CVPR 2020.

Эквивалентность перевода

Лучше всего начать с объяснения эквивариантности. Представьте, что вы голодны и у вас есть бутерброд в коробке для завтрака. Ланч-бокс остается на столе. Что вы делаете? Во-первых, вы можете взять со стола ланч-бокс и открыть его. Затем вы захватываете и съедаете свой вкусный бутерброд. Вместо этого вы можете сначала открыть коробку на столе и взять коробку в руки. После этого можно есть бутерброд. В этом случае открытие ланч-бокса эквивалентно переводу. Точно так же вы можете сначала сдвинуть свой ввод, а затем применить к нему свертку, или вместо этого вы можете сначала применить свертку к вводу, а затем сдвинуть его. Если результаты совпадают, то можно сказать, что операция свертки эквивалентна трансляции.

Дилемма ладьи

Посмотрим на изображения ладьи. Одинаковые нашивки с ладьей помещаются в верхнем левом углу (класс-1) и нижнем правом углу (класс-2) черного шаблона. Мы позволяем однослойной полностью сверточной сети попытаться узнать местоположение патча. Для настройки у нас есть случайно инициализированный фильтр 5x5 с той же сверткой, за которой следует ReLU, глобальный максимальный пул и классификатор softmax. Поскольку операция свертки эквивалентна трансляции (с глобальным максимальным пулом сеть инвариантна к трансляции), мы ожидаем, что сеть не может различить разницу между классом-1 и классом-2. Давайте посмотрим на визуализацию тренировки: подождите ...

Граничные эффекты нарушают эквивалентность перевода в CNN.

Сеть находит фильтр, позволяющий легко различать класс 1 и класс 2. Но как? Используя граничные условия, сеть изучает фильтр (эпоха 25) для обнаружения верхнего левого угла пятна ладьи. Для класса 2 ответ фильтра сохраняется внутри карты функций; однако для класса 1 ответ находится за пределами карты функций. А именно, ответ обрезается границей и позволяет CNN изучить фильтр, который активируется только на определенных частях изображения. Даже если у нас есть оператор глобального максимального пула, сверточный слой все равно может использовать местоположение. Этот факт нарушает эквивалентность перевода.

Типы свертки

Оказывается, большую роль играет тип свертки. Каковы эффекты типов свертки? На рисунке ниже показаны 3 типа свертки: действительный, такой же и полная свертка. На этот раз у нас более простая установка. У нас есть фильтр 3x3. У наших изображений значение пикселя равно 1 в верхнем левом углу (класс 1) и нижнем правом углу (класс 2), а значения других пикселей равны нулю. Мы применяем фильтр к одним и тем же изображениям с разными типами свертки. Если мы проверим каждую карту функций класса 1, действительная и одинаковая свертка будут иметь полностью черную карту функций, поскольку они не могут сохранить ответ внутри карты функций из-за границ. С другой стороны, полная свертка сохраняет ответ внутри карты функций. Для класса 2 все типы свертки сохраняют ответ. Следовательно, мы демонстрируем, что действительные и одинаковые свертки не полностью эквивалентны переводам, но полная свертка является.

Полная свертка сохраняет эквивалентность перевода.

Предварительно обученные сети используют местоположение

Что насчет больших сетей, могут ли они использовать пространственное расположение? Если да, то как далеко от границы изображения можно использовать абсолютное местоположение? Чтобы показать это, мы создаем набор данных Quadrant Imagenet (QI). Мы берем 3000 изображений из набора для проверки Imagenet, изменяем их размер до 56x56 и помещаем в верхний левый угол (класс 1) и нижний правый угол черного шаблона (всего 2k изображений для поездов / валидаций / тестов). Чтобы оценить расстояние от границы, мы создаем 7 версий, добавляя черную рамку размером ∈ {0, 16, 32, 64, 128, 256, 512} на всех 4 сторонах изображений QI.

Теперь у нас есть набор данных. Чтобы ответить на вопрос, у нас есть 3 архитектуры (Bagnet-33, Resnet-18 и Densenet-121) и 3 различных инициализации веса: (i) обучение полностью с нуля, чтобы увидеть, насколько хорошо он может работать; (ii) случайным образом инициализируется замороженными весами свертки для оценки архитектурного отклонения для классификации местоположения; (iii) ImageNet предварительно обучен с помощью замороженных весов свертки для оценки классификации местоположения конвергентной реалистичной модели, используемой в типичной настройке классификации изображений.

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

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

Эффективность данных

Улучшение эквивалентности и инвариантности за счет использования полной свертки обеспечивает эффективность данных для небольших наборов данных.

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

Резюме

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

В следующем посте мы укажем преимущества использования полной свертки вместо такой же или действительной свертки.

Полная свертка обеспечивает

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

Вы можете найти все реализации статьи на нашей странице Github. Более подробную информацию можно найти в нашей статье.