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

Нежное введение

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

CNN, как и нейронные сети, состоят из нейронов с обучаемыми весами и смещениями. Хммм, подожди, что такое нейронные сети? Разве это руководство не предназначено для обучения 5-летнего ребенка ?? 😢. Да, я не хочу рассказывать вам это, но чтобы понять CNN, вы должны сначала знать, что такое нейронная сеть. Вы можете обратиться к этой ссылке 😁. Каждый нейрон в CNN будет получать несколько входных данных, принимать по ним взвешенную сумму, передавать ее через функцию активации и отвечать выходным сигналом. Вся сеть имеет функцию потерь, и все советы и приемы, которые мы разработали для нейронных сетей, по-прежнему применимы к CNN. Ладно, хватит сложностей 😊.

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

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

Несколько концепций о CNN

Хорошо, если вы все еще читаете этот пост до этого раздела, вы можете понять, что я лгал вам, ребята, насчет руководства для 5-летнего ребенка 🤣. По правде говоря, этот пост был сделан для новичков, которые боятся узнавать о CNN и нейронных сетях (не для 5-летних). Понимание некоторых концепций CNN также может открыть вам глаза на увлекательность этой нейронной сети. Так что без лишних слов, приготовьтесь к концепции, необходимой, чтобы по-настоящему понять CNN 😉

Изображение как исходное

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

Сверточный слой

Сверточный слой - это фильтр (или ядро), в котором он является неотъемлемым компонентом многоуровневой архитектуры самой CNN. Как правило, это относится к операции, применяемой ко всем входам (в нашем случае, к изображению), так что она преобразует информацию, закодированную в пикселях, в гораздо более мелкие детали. На практике ядро ​​- это просто матрица меньшего размера из матрицы входного размера, которая состоит из элементов с действительными значениями. Некоторые говорят, что картина стоит больше тысячи лекций. Итак, вот представление сверточного слоя и то, как он делает информацию меньше, чтобы нейронная сеть могла обрабатывать позже, сохраняя при этом всю информацию.

Ядро сдвигается 9 раз из-за длины шага = 1 (без полосы), каждый раз выполняя операцию матричного умножения между K и частью P изображения, над которой ядро зависает. Помните, что эта операция применяется только к изображениям с 1 (одним) каналом, например к изображениям в градациях серого. В случае изображений, которые имеют несколько каналов (например, изображения RGB), матричное умножение выполняется между Kn и In стеком ([K1, I1]; [K2, I2]; [K3, I3]), и все результаты суммируются с bias, чтобы получить сжатый вывод свернутых функций одного канала.

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

Уровень объединения

Хорошо, теперь у нас есть объединяющий слой. В чем разница между этим слоем и предыдущим? 🤔 Ну, слой объединения по сути такой же, как сверточный слой. Это просто еще один строительный блок CNN, который отвечает за уменьшение пространственного размера свернутой функции. Этот уровень полезен, когда мы пытаемся уменьшить вычислительную мощность, необходимую для обработки данных, за счет уменьшения размерности. Более того, слой объединения также полезен при попытке извлечь доминирующие функции из входных данных. Существует два типа уровней объединения: максимальный пул и средний пул. Максимальный пул возвращает максимальное значение из части изображения, покрытой ядром. С другой стороны, Средний пул возвращает среднее значение всех значений из части изображения, покрытой ядром. Из-за природы максимального уровня объединения он также выполняет функцию шумоподавителя, так как полностью отбрасывает зашумленные активации, а также выполняет дешумление вместе с уменьшением размерности.

Слой ReLu (выпрямленная линейная единица)

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

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

Полностью связанный слой

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

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

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

Путь к мастерству хорош, только если вы его чувствуете. Не торопитесь, набирайте темп и у вас все получится 😘

Ссылка

Https://cs.nju.edu.cn/wujx/teaching/15_CNN.pdf

Https://cs231n.github.io/convolutional-networks/

Https://towardsdatascience.com/simple-introduction-to-convolutional-neural-networks-cdf8d3077bac

Https://towardsdatascience.com/deep-dive-into-convolutional-networks-48db75969fdf

Https://medium.com/technologymadeeasy/the-best-explanation-of-convolutional-neural-networks-on-the-internet-fbb8b1ad5df8