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

ИСТОРИЯ

Сверточные нейронные сети были впервые представлены Фукусимой под названием Неокогнитрон в 1980 году. Они были вдохновлены иерархической моделью нервной системы, предложенной Хьюбелом и Вайзелем. Но эта модель не пользовалась популярностью из-за сложного алгоритма обучения без учителя, называемого обучением без учителя. Ян ЛеКун в 1989 году использовал обратное распространение вместе с концепциями Neocognitron, чтобы предложить архитектуру под названием LeNet, которая использовалась почтовой службой США для распознавания рукописного почтового индекса. Ян ЛеКун продолжил работу над этим проектом и, наконец, в 1998 году выпустил LeNet-5 - первую современную сеть, которая представила некоторые из основных концепций, которые мы все еще используем в CNN сегодня. Он также выпустил набор данных MNIST, состоящий из рукописных цифр, который, пожалуй, является самым известным эталонным набором данных в области машинного обучения. В 1990-х годах область компьютерного зрения сместила фокус, и многие исследователи перестали пытаться работать над архитектурами CNN. В исследованиях нейронных сетей была холодная зима до 2012 года, когда группа исследователей из Университета Торонто представила модель на основе CNN (AlexNet) в знаменитом испытании ImageNet и в итоге выиграла его с показателем ошибок 16,4%. С тех пор сверточные нейронные сети продолжают развиваться, а архитектуры на основе CNN продолжают побеждать в ImageNet, а в 2015 году архитектура на основе сверточных нейронных сетей ResNet превзошла уровень ошибок человеческого уровня в 5,1% с коэффициентом ошибок 3,57%.

НЕЗНАЧИТЕЛЬ:

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

Взаимная корреляция:

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

Математическая формула:

Математическая формула для операции взаимной корреляции в 1-D на изображении I с использованием фильтра F приведена на рисунке 3. Было бы удобно предположить, что F имеет нечетное количество элементов, поэтому мы можем предположить, что при его смещении его центр находится прямо над элементом изображения I. Итак, мы говорим, что F имеет 2N + 1 элементов, и они индексируются от -N до N, так что центральным элементом F является F (0).

Точно так же мы можем расширить понятие до 2-D, которое представлено на рисунке 4. Основная идея та же, за исключением того, что изображение и фильтр теперь 2D. Мы можем предположить, что наш фильтр имеет нечетное количество элементов, поэтому он представлен матрицей (2N + 1) x (2N + 1).

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

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

Функция кросс-корреляции имеет ограничение или характерное свойство, которое, когда она применяется к дискретному единичному импульсу (двумерная матрица всех нулей и только одна единица), дает результат, который является копией фильтра, но повернут на угол 180 градусов.

Свертка:

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

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

Математическая формула:

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

В случае двумерной свертки мы переворачиваем фильтр как по горизонтали, так и по вертикали. Это можно записать так:

Те же свойства трансляционной инвариантности и локальности также сопровождаются операцией свертки.

ЗАМЕТКА:

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

Заключение:

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

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

  1. Книга по глубокому обучению, написанная Яном Гудфеллоу, Йошуа Бенжио и Аароном Курвиллем.
  2. Цифровая обработка изображений: Рафаэль К. Гонсалес.
  3. Погрузитесь в глубокое обучение от Астона Чжана, Зака ​​С. Липтона, Му Ли и Алекса Дж. Смолы.
  4. Корреляция и свертка Дэвида Джейкобса.
  5. Рисунок 9 взят из https://towardsdatascience.com/applied-deep-learning-part-4-convolutional-neural-networks-584bc134c1e2.
  6. Https://spatial-lang.org/conv
  7. Мем взят с сайта https://www.mihaileric.com/posts/convolutional-neural-networks/.