Как выглядит свёртка в свёрточных нейросетях
https://sunandstuff.com/atest/ai/convolution2
Свёрточные нейронные сети используются для того, чтобы что-то найти на изображении или видео. Картинку в изначальном виде неэффективно скармливать нейронной сети, потому что плотность информации на ней очень низкая. Наш мозг запросто узнает на картинке лицо, но если попросить человека нарисовать это лицо, то он не будет воссоздавать увиденные пиксели, а начнёт с основных линий — овал лица, глаза, нос, уши и так далее. Эти линии показывают то, как именно видит лицо наш мозг. Свёртка помогает нейросетям увидеть такие характерные фишки среди шума фотографии и проигнорировать неважное. Можно себе представить, что свёртка — это обогащение руды перед производством. Слева на визуализации — упрощенная картинка с вашей камеры. Справа — то, что с ней стало после свёртки. Как это работает? Есть сетка, размером 3 на 3 пикселя (бывает больше), в каждой ячейке сетки записано число. Эта сетка называется ядром свёртки, вот она в правой нижней части визуализации, увеличенная в несколько раз. Дальше мы берём эту сетку и прикладываем по очереди к каждому пикселю изначальной картинки своей центральной ячейкой. Получается, что по центру сетки будет нужный пиксель, а во всех соседних ячейках — соседние пиксели. После того, как сетку приложили, начинаем умножать яркость каждого пикселя, который оказался внутри сетки на число, которое записано над этим пикселем на сетке. Полученные результаты складываем, и это будет яркость пикселя в картинке на выходе. Stride уменьшает размер картинки на выходе, пропуская пиксели, во время прикладывания сетки. Padding добавляет к изначальной картинке чёрную каёмочку, чтобы когда мы ведём рамкой по самому краю картинки, под вылезающими наружу ячейками что-то было (мне, кстати, никто так и не смог ответить почему картинку нельзя вместо этого завернуть в тор, склеив сначала левый край с правым, а потом верхний и нижний.) В каждом пикселе содержится информация сразу о трех цветах и Channels выбирает на какие именно данные о цвете мы смотрим. Kernels — готовые ядра свёртки для примера. Можно самостоятельно придумать ядро свёртки если двигать над ячейками мышкой и кликать. Если вы с компа, а не с телефона, то можете посмотреть как в реальном времени работает свёртка сразу четырьмя ядрами через видеокарту на полноразмерных изображениях с вебкамеры: https://sunandstuff.com/videogl/sobel.html