Сверточные нейронные сети, которые являются основой большинства приложений компьютерного зрения, таких как самоуправляемые автомобили, системы распознавания лиц и т. Д., Представляют собой особый вид архитектуры нейронных сетей, в которой базовая операция умножения матриц заменена операцией свертки. Они специализируются на обработке данных, имеющих сеточную топологию. Примеры включают данные временных рядов и данные изображения, которые можно представить как двумерную сетку пикселей.
ИСТОРИЯ
Сверточные нейронные сети были впервые представлены Фукусимой под названием Неокогнитрон в 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 очень проста. Мы просто берем фильтр заданного размера и помещаем его в локальную область изображения, имеющую тот же размер, что и фильтр. Мы продолжаем эту операцию, перемещая тот же фильтр по всему изображению. Это также помогает нам достичь двух очень популярных свойств:
- Трансляционная инвариантность. Наша система зрения должна ощущать, реагировать или обнаруживать один и тот же объект независимо от того, где он появляется на изображении.
- Местоположение. Наша система видения фокусируется на локальных регионах, не обращая внимания на то, что еще происходит в других частях изображения.
Функция кросс-корреляции имеет ограничение или характерное свойство, которое, когда она применяется к дискретному единичному импульсу (двумерная матрица всех нулей и только одна единица), дает результат, который является копией фильтра, но повернут на угол 180 градусов.
Свертка:
Операция свертки очень похожа на операцию взаимной корреляции, но имеет небольшое отличие. В операции свертки ядро сначала переворачивается на угол 180 градусов, а затем применяется к изображению. Фундаментальное свойство свертки состоит в том, что свертка ядра с дискретным единичным импульсом дает копию ядра в месте импульса.
В разделе о взаимной корреляции мы видели, что операция корреляции дает копию импульса, но повернутую на угол 180 градусов. Следовательно, если мы предварительно повернем фильтр и выполним ту же операцию скользящей суммы произведений, мы сможем получить желаемый результат.
Математическая формула:
Операция свертки, примененная к изображению I с использованием ядра F, задается формулой в 1-D. Свертка похожа на корреляцию, за исключением того, что мы переворачиваем фильтр перед корреляцией.
В случае двумерной свертки мы переворачиваем фильтр как по горизонтали, так и по вертикали. Это можно записать так:
Те же свойства трансляционной инвариантности и локальности также сопровождаются операцией свертки.
ЗАМЕТКА:
Хотя обе операции немного отличаются, не имеет значения, является ли используемое ядро симметричным.
Заключение:
В этом посте мы кратко обсудили историю и некоторые свойства сверточных нейронных сетей. Мы обсудили неправильное употребление термина о том, что сверточная операция, часто упоминаемая в различных текстах, на самом деле является операцией взаимной корреляции. Разница очень небольшая, но очень полезная и должна быть известна каждому, кто начинает, практикует или имеет опыт работы в широкой области компьютерного зрения. Надеюсь, вам понравился пост, и если у вас возникнут какие-либо вопросы, вопросы или обсуждения, напишите мне в Twitter или Linkedin.
Использованная литература:
- Книга по глубокому обучению, написанная Яном Гудфеллоу, Йошуа Бенжио и Аароном Курвиллем.
- Цифровая обработка изображений: Рафаэль К. Гонсалес.
- Погрузитесь в глубокое обучение от Астона Чжана, Зака С. Липтона, Му Ли и Алекса Дж. Смолы.
- Корреляция и свертка Дэвида Джейкобса.
- Рисунок 9 взят из https://towardsdatascience.com/applied-deep-learning-part-4-convolutional-neural-networks-584bc134c1e2.
- Https://spatial-lang.org/conv
- Мем взят с сайта https://www.mihaileric.com/posts/convolutional-neural-networks/.