Alterna · учебный материал
11.5 Двумерное окно изображения
Маленькая таблица движется по строкам и столбцам изображения. Одно окно создаёт одну клетку карты признаков.
Что в этом материале
- Фильтр становится маленькой матрицей
Содержание и основные понятия
На предыдущей странице: те же данные через частоты.
Маленькая таблица движется по строкам и столбцам изображения. Одно окно создаёт одну клетку карты признаков.
Маленькое окно проходит по сигналу или изображению. Каждый выход складывается из чисел окна и общих коэффициентов. Частотная запись описывает те же данные иначе.
Для изменения рисунка включитеJavaScript; расчёт и теория доступны далее.
Фильтр становится маленькой матрицей
Пусть 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
Академическая база →