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

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

Что такое сверточная нейронная сеть?

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

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

Структура нейронной сети свертки выглядит следующим образом: Свертка ›Пул› Свертка ›Пул› Полностью связанный слой ›Выход.

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

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

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

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

Фильтры

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

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

Работа с картами с несколькими объектами

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

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

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

Реализация сверточного слоя в TensorFlow

import numpy as np # сначала несколько операций импорта

from sklearn.datasets import load_sample_images # импорт образцов изображений

# Загрузить образцы изображений

набор данных = np.array (load_sample_images (). images, dtype = np.float32) batch_size, высота, ширина, каналы = dataset.shape

# Создайте 2 фильтра

Filters_test = np.zeros (shape = (7, 7, channels, 2), dtype = np.float32) Filters_test [:, 3,:, 0] = 1 # вертикальная линия

filter_test [3,:,:, 1] = 1 # горизонтальная линия

# Создайте график с входными данными X и сверточным слоем, применяя 2 фильтра X = tf.placeholder (tf.float32, shape = (None, height, width, channels)) convolution = tf.nn. conv2d (X, фильтры, strides = [1,2,2,1], padding = "SAME")

с tf.Session () as sessions:

output = sessions.run (свертка, feed_dict = {X: набор данных})

plt.imshow (output [0,:,:, 1]) # построить карту 2-го объекта 1-го изображения

plt.show () # Для отображения вывода

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

Слой объединения работает после сверточного слоя в структуре. Объединение может называться понижающей дискретизацией или субдискретизацией, что означает сокращение изображения, что приводит к уменьшению использования памяти, вычислительной нагрузки, уменьшению количества параметров для предотвращения переобучения. Когда размер входного изображения уменьшается, нейронная сеть может выдерживать и переносить небольшой сдвиг в изображении. Он поддерживает понижающую дискретизацию в форме «max-pooling», когда выбирается регион, и максимальное значение региона выбирается и объявляется как новое значение для всего региона.

Точно так же в сверточном слое каждый нейрон в объединяющем слое связан с выходами ограниченного числа нейронов в заднем слое, который заключен в прямоугольное рецептивное поле. Далее нам нужно определить размер нейронов, шаг и тип заполнения так же, как мы делали раньше. Но объединяющие нейроны не имеют никакого веса, вместо этого они собирают входные данные с помощью функции агрегации max и means. На рисунке 4 мы можем заметить слой максимального пула, наиболее популярную категорию уровней пула. Здесь следует отметить, что только максимальное входное значение, содержащееся в каждом ядре, может перейти на следующий уровень, поскольку другие входные данные отбрасываются.

Реализация максимального уровня объединения в TensorFlow

[…] # загрузка набора данных изображения, как указано выше

# Создайте график с вводом X плюс максимальный уровень объединения

X = tf.placeholder (tf.float32, shape = (Нет, высота, ширина, каналы))

max_pool = tf.nn.max_pool (X, ksize = [1,2,2,1], strides = [1,2,2,1], padding = ”VALID”)

с tf.Session () as sessions:

output = sessions.run (max_pool, feed_dict = {X: набор данных})

plt.imshow (output [0] .astype (np.uint8)) # построить вывод для 1-го изображения

plt.show () # Отображение вывода

Архитектура сверточной нейронной сети

Архитектура CNN состоит из нескольких сверточных слоев, за которыми следует уровень объединения, а затем другие сверточные уровни, за которыми следуют слои объединения и так далее. Изображение не только становится меньше по мере прохождения через сеть, но и становится глубже из-за добавления карт признаков в результате сверточного слоя. На рисунке 5 добавлена ​​нейронная сеть, состоящая из менее полно связанных слоев (+ ReLU), и последний слой дает результат прогнозирования.

· Есть определенные архитектуры, связанные с CNN. Основные 4 архитектуры, которыми обладает сверточная нейронная сеть:

· Архитектура LeNet-5

· Архитектура AlexNet

· Архитектура GoogLeNet

· Архитектура ResNet

LeNet-5

Наиболее широко известная архитектура CNN - это архитектура LeNet-5. Эта архитектура, созданная Янном ЛеКуном в 1998 году, наиболее широко используется для распознавания рукописных цифр (MNIST).

Архитектура LeNet-5 состоит из таких уровней, как Out, F6, C5, C3, S2, C1, входной уровень. Средний слой объединения немного сложнее, чем есть на самом деле. Нейроны обрабатывают среднее значение входных данных, а затем умножают полученный результат на коэффициент, известный как обучаемый коэффициент, а затем добавляют обучаемый член смещения, и после всего этого функция активации теперь реализуется. Нейроны на картах C3 связаны только с тремя или четырьмя нейронами карт S2.

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

.

AlexNet

AlexNet был разработан Алексом Крижевским, Ильей Суцкевер и Джеффри Хинтоном. Он такой же, как LeNet-5, но с небольшой разницей в том, что он намного больше и глубже, а также первым среди всех, кто прикрепляет сверточный слой непосредственно друг на друга, а не накладывает слой объединения поверх каждого сверточного слоя. Архитектура AlexNet включает:

AlexNet принимает во внимание этап конкурентной нормализации сразу после этапа ReLU слоев C1 и C3, который называется нормализацией локального ответа, который усиливает нейроны и делает его наиболее сильным, активирует ингибирование нейронов в соседних картах функций, в результате чего многочисленные карты функций поощряют специализироваться и выходить за рамки, чтобы изучить более широкий спектр функций, чтобы получить более точное обобщение.

GoogLeNet

Эта архитектура была разработана Кристианом Сегеди и др. с помощью исследования Google. У него была потрясающая производительность, потому что сеть была намного глубже, чем последний CNN, что стало возможным только благодаря начальным модулям, которые являются подсетями. Это позволяет GoogLeNet использовать параметры более эффективно, чем в предыдущих архитектурах. Фактически, GoogLeNet содержит в 10 раз меньше параметров по сравнению с архитектурой AlexNet. Архитектура GoogLeNet действительно глубокая, поэтому ее нужно представить в трех столбцах. Карты характеристик - это выходные данные сверточного модуля, которые содержат девять начальных модулей. Весь сверточный слой использует функцию активации ReLU. Общее количество карт функций, заданных сверточным слоем, представлено до размера ядра.

ResNet

ResNet или остаточная сеть была разработана Kaiming He et al. обеспечил коэффициент ошибок менее 3,6% за счет использования углубленной CNN, состоящей из 152 слоев. Здесь используются пропускаемые соединения, которые также называются ярлыками.

Архитектура ResNet такая же, как архитектура GoogLeNet, за исключением слоя исключения, между которым лежат глубокие груды простых остаточных единиц. Каждые несколько остаточных единиц удваиваются. ResNet-34 - это ResNet с 34 слоями, состоит из трех остаточных единиц, и на выходе получается 64 карты характеристик с 4 RU по 128 карт, 6 RU с 256 картами и 3 RU с 512 картами.

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

Из архитектуры ResNet ясно, что эта архитектура похожа на GoogLeNet, когда начинается и заканчивается, вероятно, если мы выйдем из слоя исключения. Два сверточных слоя составляют остаточные единицы вместе с пакетной нормализацией (BN) и ReLU, который использует ядра 3 × 3, а также сохраняет пространственные измерения.

Заключение

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