alterna ai
ALTERNA AI / ГЛАВА 11 · 05

11.5 Двумерное окно изображения

На предыдущей странице: те же данные через частоты.

Маленькая таблица движется по строкам и столбцам изображения. Одно окно создаёт одну клетку карты признаков.

Маленькое окно проходит по сигналу или изображению. Каждый выход складывается из чисел окна и общих коэффициентов. Частотная запись описывает те же данные иначе.

Фильтр становится маленькой матрицей

Пусть image X имеет shape[H,W], kernel K[k_h,k_w]. Для correlation без channels каждый выход есть сумма произведений в локальном прямоугольнике. Для strict convolution ядро переворачивается по обеим осям. Нельзя перевернуть только строки и считать задачу решённой.

Fixture H05: X=[[0,1,2],[3,4,5],[6,7,8]],K=[[0,1],[2,3]],padding0,stride1. Первый выход0×0+1×1+3×2+4×3=19. Весь output[[19,25],[37,43]].

Blur-ядро3×3 со всеми весами1/9 усредняет окно. Identity с единственной1вцентре сохраняет внутренние значения. SobelX выделяет вертикальные изменения, sharpen сочетает усиленный центр с отрицательными соседями. Имена presets описывают назначение фиксированных weights, а не уже выученные сетью признаки.

Эксперимент. Изменяйте image и kernel в JSON, затем padding/stride. Отрицательные и большие значения выхода не обрезаются до диапазона яркости: heatmap имеет отдельный display scale, а численная таблица хранит результат вычисления.

Для каждой оси output размер floor((input+2p−kernel)/s)+1. pздесь на каждой стороне, в отличие отtotal-padding записи некоторых источников H06. Если окно не помещается, показывается ошибка, а не массив отрицательной длины. Граничные нули могут создавать видимые искусственные края.

X=[[0,1,2],[3,4,5],[6,7,8]]; K=[[0,1],[2,3]]
Y=[[sum(X[i+r][j+c]*K[r][c] for r in range(2) for c in range(2))
    for j in range(2)] for i in range(2)]
assert Y==[[19,25],[37,43]]

Код повторяет только что разобранные операции. Полный проверяемыйPython-пример главы доступен отдельным файлом; показанный короткий фрагмент не заменяет его реализацию.

Это соответствует замене обоих индексов convolution.

Каналы и повторное использование коэффициентов. Как этот вопрос продолжает полученный результат?

Python-примеры главы 11 Академическая база →