ВСТУПЛЕНИЕ:

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

Усовершенствования в области компьютерного зрения с глубоким обучением были созданы и усовершенствованы со временем, в первую очередь над одним конкретным алгоритмом - сверточной нейронной сетью.

Google использует его для поиска фотографий, Facebook для своих алгоритмов автоматической пометки, Amazon для своих рекомендаций по продуктам, и этот список можно продолжать и продолжать ...

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

Бонус:

код - › https://github.com/UPPERCASEGUY/CNN-implementation

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

КОНВОЛЮЦИОННЫЕ НЕЙРОННЫЕ СЕТИ:

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

АРХИТЕКТУРА:

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

CNN обычно имеет три уровня: сверточный слой, слой объединения и полностью связанный слой.

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

Я почти уверен, что вы уже встречали слово "свертка" в своей жизни, и здесь его значение не меняется. Да! вы правы, этот слой предназначен для сворачивания объектов друг на друга. Сверточный слой является основным строительным блоком CNN. Он несет основную часть вычислительной нагрузки сети.

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

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

Если изображение является RGB, тогда фильтр будет иметь меньшую высоту и ширину по сравнению с изображением, но он будет иметь ту же глубину (высота x ширина x 3), что и изображение.

Для изображений RGB сворачивающая часть может быть визуализирована следующим образом:

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

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

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

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

Существует два типа методов объединения: AVERAGE-pooling и MAX-pooling.

Разница между ними в том, что в AVERAGE-pooling мы берем среднее значение всех значений области объединения, а в MAX-pooling мы просто берем максимум среди всех значения, лежащие внутри области объединения.

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

Полносвязный слой:

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

С этого момента мы фактически займемся процессом классификации.

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

РЕЗЮМЕ:

  1. Предоставьте входное изображение в сверточный слой.
  2. Возьмем свертку с указанным ядром / фильтрами.
  3. Нанесите объединяющий слой, чтобы уменьшить размеры.
  4. Добавьте эти слои несколько раз.
  5. Сгладьте результат и подайте на полностью связанный слой.
  6. Теперь обучите модель с обратным распространением, используя логистическую регрессию.

И вы создали свою сверточную нейронную сеть.

Вот некоторые из лучших ресурсов для кодирования CNN:





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

mohammadtalhakhan.blogspot.com/2018/11/6-myths-uncovered-about-artificial.html

Blog.insightdatascience.com/automating-breast-cancer-detection-with-deep-learning-d8b49da17950

Adeshpande3.github.io/A-Beginner%27s-Guide-To-Understanding-Convolutional-Neural-Networks/

ОБО МНЕ:

Я энтузиаст машинного обучения в IIIT-ALLAHABAD. С нетерпением жду, когда ИИ будет доминировать в будущем. Я верю в технологии. Я также люблю заниматься соревновательным программированием для развлечения и прилива адреналина (код с вложенным кодом для всех судей) 😊.