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

Что такое свертка

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

Свертка бывает нескольких типов, например одномерная свертка, которая обычно используется для данных последовательностей для извлечения локальных одномерных подпоследовательностей. Одно из хороших применений - это НЛП, где каждое предложение представлено как последовательность слов. Однако набор данных изображения представлен в виде 2D-данных и, следовательно, лучше всего подходит для операции 2D-свертки. При двумерной свертке фильтр свертки перемещается в двух направлениях (x, y) для вычисления низкоразмерных характеристик из данных изображения, создавая на выходе двумерную матрицу. В этой статье мы сосредоточимся на процессе двумерной и трехмерной свертки для построения сверточной нейронной сети.

2D свертка входного сигнала

Процесс свертки, показанный на рисунке, использует соответствующий фильтр, также известный как ядро, над входной матрицей изображения или текста. Ядро представляет собой (n * n) матрицу, состоящую из определенных чисел, также называемых размером фильтра. Значение этих чисел называется параметрами обучения и определяется в процессе обучения, таком как обратное распространение на основе градиента. Процесс свертки выполняет поэлементную операцию умножения на входной матрице и ядре, сдвигая фильтр или ядро ​​по горизонтали или вертикали по всей заданной входной матрице. размер шага ядра при обходе изображения называется шагом, и его значение по умолчанию равно 1, однако значение 2 также используется для уменьшения размера входного изображения. На рисунке выше входное изображение 5x5 свернуто с помощью фильтра 3x3.

Это можно пояснить на простом примере. Предположим, что входное изображение имеет размер (5,5), а фильтр f имеет размер (3,3). Для поэлементного умножения ядро ​​помещается в воспринимающие поля входного изображения, в данном случае первые 3x3 элемента входного изображения. Таким образом, каждое число в фильтре умножается на соответствующие 9 пикселей в верхнем левом углу входного изображения и суммируется, чтобы получить значение одного пикселя, которое затем назначается в верхнем левом углу выходного слоя, как показано на рисунке 2. Затем этот процесс повторяется, сдвигая ядро ​​на один столбец, т.е. stride = 1, и снова выполняет поэлементное умножение, как показано на рисунке. Процесс свертки продолжается до тех пор, пока ядро ​​не будет заменено на полную входную матрицу. Выходной размер свернутого изображения можно рассчитать по следующей формуле (n + 2p-f) / s +1 X (n + 2p-f) / s + 1. Где n - высота и ширина входного изображения, f - размер фильтра, p - заполнение, а s - шаг.

Размер свернутого изображения

Выход этого процесса свертки может быть вычислен по следующей формуле (n + 2p-f) / s +1 X (n + 2p-f) / s + 1; Где n - высота и ширина входного изображения, f - размер фильтра, p - заполнение, а s - шаг. Следует отметить, что свернутое изображение меньше по размеру, чем входное изображение. Это связано с коэффициентом вычитания размера фильтра f из высоты и ширины входного изображения. Это означает, что чем больше размер фильтра, тем меньше запутанное изображение.

Отступ и шаг процесса 2D-свертки

Во время процесса свертки на каждом шаге положение окна фильтра обновляется в соответствии с аргументом шагов. Одним из недостатков является то, что угловые столбцы во входной матрице используются только один раз, в то время как средние столбцы используются очень часто во время каждой свертки, поэтому это означает, что много информации по углам изображения теряется или выбрасывается. Следовательно, чтобы вычислить значения этих граничных областей, ввод может быть расширен путем заполнения нулевыми значениями. В некоторых случаях мы можем захотеть отказаться от этих пограничных областей. Следовательно, никаких отступов не требуется. Другими словами, заполнение достигается путем добавления дополнительных строк и столбцов с нулями вверху, внизу, слева и справа от входной матрицы. Таким образом, дополнительный один пиксель сверху вниз и слева направо оставит изображение размером nxn на изображение n + 2p, n + 2p, где p - количество добавленных пикселей, то есть заполнение. Таким образом, изображение 5x5 будет расширено до изображения 7x7. Процесс заполнения показан на рисунке 3.

Действительный и одинаковый отступ

Если заполнение не применяется, выходное изображение сжимается из-за p = 0 в размере выходного изображения n + 2p- f +1. Отсутствие заполнения также называется действительным, что означает, что входное изображение после процесса свертки будет меньше, поскольку заполнение не добавлено. Однако мы можем вычислить значение заполнения, чтобы получить изображение того же размера, что и входное, и в этом случае это называемое «ОДНИМ» заполнением, формула, используемая для вычисления p для «ОДНОГО» объединения, следующая: (n + 2p-f) / s + 1 = n = ›2p = (n-1) * s + fn, например, для изображение 7x7 с размером фильтра = 3 stride = 2 значение p должно быть 4, чтобы получить изображение 7x7 после свертки.

Свертка 3D изображений

Теперь поговорим о трехмерной свертке. основной принцип остается тем же самым, однако свертка трехмерного изображения, имеющего каналы RGB, требует, чтобы номер канала совпадал с номером фильтра. Эта трехмерная свертка создаст двумерное свернутое изображение с уменьшенной размерностью как (n + 2p-f) / s + 1 x (n + 2p-f) / s, как показано на анимированном рисунке.

Пусть изображение 9x9x3 свернуто с фильтром 3x3x3. обратите внимание, что оба имеют одинаковый номер канала в этом случае 3. Для трехмерной свертки каждый канал фильтра будет свернут с соответствующим каналом входного изображения. таким образом, для фильтра 3x3x3 каждый из 27 элементов будет умножен на соответствующие 27 элементов изображения, и сумма этого произведения будет первым числом в выходном изображении, как показано на рисунке. На этом первый раунд завершен. Затем этот процесс повторяется, сдвигая фильтр на один столбец, т.е. stride = 1, и снова выполняет поэлементное умножение, как показано на рисунке. Процесс свертки продолжается до тех пор, пока ядро ​​не будет заменено на полную входную матрицу. В результате получается одно свернутое 2D-изображение. Теперь, если входное изображение свернуто с другим фильтром 3x3x3, это приведет к другому свернутому 2D-изображению. таким образом, по мере увеличения количества фильтров канал на выходе также увеличивается.

Выходное изображение на самом деле дает нам функции. Таким образом, другой выбор этих фильтров даст другой тип векторов признаков, например, если мы будем использовать вертикальные фильтры, это даст нам вертикальные края в качестве признаков, а для горизонтальных фильтров функции будут горизонтальными векторами признаков. Мы можем обнаруживать края в одном канале, то есть в RGB или во всех каналах. например, если мы хотим найти края только в канале КРАСНОГО, скажем, вертикальные края, тогда мы используем вертикальный фильтр для каналов красного цвета и устанавливаем все остальные фильтры на ноль, поэтому он не вычисляет края в других каналах.

Это все о свертке, в следующей статье я опишу, как использовать эту концепцию для создания сети CNN.