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

Прежде чем мы начнем, давайте ответим на некоторые фундаментальные вопросы о CNN.

Почему нас так волнует CNN? Разве мы не можем использовать ИНС в целях компьютерного зрения?

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

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

Но мы используем полностью связанный слой в конце процесса свертки / объединения, чтобы делать некоторые прогнозы.

Каковы основные уровни CNN?

Входной слой

Слой конв.

Слой ReLu

Слой бассейна

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

Что такое входной слой?

Он просто содержит необработанные значения пикселей. Скажем, если изображение красочное 32 x 32, тогда форма изображения будет 32 x 32 x 3, где 3 канала - красный, зеленый и синий.

Что такое конвекционный слой?

Это сердце сверточной нейронной сети.

На этом слое мы пытаемся провести фильтр по каналам R, G, B, в основном по значениям пикселей для обнаружения различных функций, например вертикальные и горизонтальные края изображения. На приведенном выше рисунке есть только один выход, потому что мы пытаемся обнаружить вертикальный край (отдельная функция), поэтому для нескольких функций нам нужно несколько фильтров. Обратите внимание на рисунок ниже,

есть 2 выхода, каждый размером 4 x 4, потому что есть две особенности, которые мы пытаемся обнаружить, мы можем записать весь вывод как 4 x 4 x 2.

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

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

Что такое relu layer?

ReLu теперь применяет поэлементную функцию активации, такую ​​как установление порога max (0, x) на ноль. Это оставляет размер тома неизменным, что означает, что результирующий вывод будет таким же, как и вывод сверточного слоя.

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

Что такое слой пула?

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

Что такое уровень FCN или полносвязный уровень?

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

Затем второй уровень FCN принимает входные данные, применяет веса и затем передает их через функцию активации, например ReLu, Softmax и т. Д.

Последний выходной слой FCN дает окончательные вероятности для каждой метки. На основании этих значений вероятности принимается решение о классе.

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

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

В следующей статье я создам модель CNN, используя PyTorch для классификации изображений. Надеюсь увидеть вас там тоже !!

Ссылки:





Https://www.geeksforgeeks.org/cnn-introduction-to-pooling-layer/

Http://datahacker.rs/convolution-rgb-image/

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