– Stride (шаг) – это шаг, с которым ядро свертки перемещается по входному изображению. Он определяет расстояние между применениями фильтра к входным данным и влияет на размер выходного изображения.
Давайте рассмотрим пример применения операции свертки на входном изображении.
Предположим, у нас есть следующее изображение размером 5x5 пикселей:
```
[[1, 2, 1, 0, 0],
[0, 1, 0, 2, 1],
[1, 0, 2, 1, 0],
[0, 1, 0, 1, 0],
[1, 2, 1, 0, 0]]
```
Также у нас есть фильтр (ядро свертки) размером 3x3:
```
[[1, 0, 1],
[0, 1, 0],
[1, 0, 1]]
```
Мы будем применять этот фильтр к изображению с определенным шагом (stride), чтобы получить выходное изображение (feature map).
Пусть наш шаг (stride) будет равен 1.
Тогда, начиная с верхнего левого угла изображения, мы будем перемещать наш фильтр по всей области изображения и вычислять скалярное произведение между значениями пикселей изображения и значениями фильтра. Затем полученное значение будет записано в соответствующую позицию на выходном изображении (feature map).
Процесс будет продолжаться до тех пор, пока фильтр не пройдет по всему изображению. Если шаг (stride) больше 1, фильтр будет перемещаться с большим интервалом, что приведет к уменьшению размерности выходного изображения.
Таким образом, операция свертки позволяет извлекать локальные признаки из изображения, учитывая их структуру и распределение, и создавать выходное изображение, содержащее эти признаки.
Max-pooling
Max-pooling является одной из ключевых операций в сверточных нейронных сетях (CNN). Он применяется после операции свертки для уменьшения размерности данных, сохраняя при этом наиболее важные признаки изображения или карт признаков. В основном, max-pooling используется для уменьшения вычислительной нагрузки и количества параметров модели, а также для предотвращения переобучения.
Операция max-pooling выполняется путем сканирования окна определенного размера (например, 2x2 или 3x3) по входной матрице (например, карты признаков) и выбора максимального значения из каждого окна. При этом окно перемещается с определенным шагом (stride) по входным данным. Результатом этой операции является новая матрица с уменьшенными размерами, содержащая наиболее активные признаки из исходных данных.
Max-pooling помогает модели выявить наиболее важные признаки изображения, такие как края, текстуры и общие паттерны, сохраняя при этом пространственную инвариантность. Это особенно полезно для задач распознавания объектов на изображениях, где расположение объекта в кадре может изменяться.
Представим, у нас есть входная матрица размером 4x4, которая представляет собой карту признаков после операции свертки:
```
[ 1, 2, 1, 0]
[ 0, 1, 2, 3]
[ 3, 0, 1, 2]
[ 2, 4, 0, 1]
```
Применим операцию max-pooling с окном размером 2x2 и шагом 2 (stride). Мы будем скользить окном по входной матрице и выбирать максимальное значение в каждом окне. Результатом будет новая матрица с уменьшенными размерами:
```
[ 2, 3]
[ 4, 2]
```
В этом примере, в первом окне размером 2x2, максимальное значение равно 3. Во втором окне, также 2x2, максимальное значение равно 4. Таким образом, операция max-pooling уменьшает размерность входных данных, оставляя наиболее активные и значимые признаки.
Average-pooling
Операция average-pooling является одним из ключевых элементов сверточных нейронных сетей (CNN). Её целью является уменьшение размерности данных после операции свертки, что позволяет сети извлекать более обобщенные признаки из изображений и сократить количество параметров, что способствует более эффективному обучению и уменьшает риск переобучения.