用"放大镜"和"拼图游戏"的比喻,带你彻底搞懂CNN是如何一层层"看"图片的
人类看图片是一眼就认出猫狗,但机器看图片是一堆数字。CNN就是让机器学会"看"图片的方法。
一眼就认出:这是猫!
瞬间理解整体画面
看到的是:数字矩阵
[255, 128, 64, ...]
需要一步步分析
CNN模仿人类视觉原理:用"小窗口"扫描图片,每移动一步只看一小块,找出局部特征(边缘、角落、纹理),然后逐层组合,最终认出整体。
先用一条线上的数字,理解卷积的"滑动乘加"本质。
就像拿着3格宽的手电筒,从左到右扫描这条数字线。每照到3个数字,就做一次乘法再相加。
卷积核就是一个"特征检测器"!如果输入的局部图案和卷积核的权重"匹配",输出值就大;不匹配就小或负。
现在把一维扩展到二维,就像用一个正方形的放大镜扫描一张灰度照片。
输入图片尺寸
卷积核尺寸
输出特征图尺寸
滑动计算次数
这是理解CNN最重要、也最容易出错的地方!
"卷积核就是3×3的二维矩阵"
如果真是这样,RGB图片怎么和3×3做卷积?
卷积核是三维的!
对于RGB图片:每个通道(红/绿/蓝)都有一个独立的3×3卷积核
三个通道分别卷积后相加
检测红色特征
检测绿色特征
检测蓝色特征
三色组合信息
卷积核能学习到跨通道的色彩组合特征!比如一个核可能对"红色+绿色=黄色"特别敏感,另一个可能对"红色+蓝色=紫色"敏感。
每一层卷积都会提取更高级的特征,像搭积木一样层层组合。
边缘、纹理、角落
部件:眼睛、耳朵、鼻子
整体:猫、狗、汽车
反向传播自动学习
调整输入值和卷积核,观察输出如何变化。
RGB图片的卷积核 = 3个通道 × 3×3权重。不是简单的3×3,而是(3×3)×3的三维张量。
卷积核在图片上滑动,每步计算:对应位置相乘后全部相加 = 一个输出值。
4个卷积核产生4通道输出,8个卷积核产生8通道。通道数=卷积核个数。
第1层:边缘/纹理 → 第2层:部件组合 → 第3层:语义识别。层层递进。
全连接网络:每个像素都是独立输入,参数量巨大。
CNN:用卷积核共享权重,大幅减少参数量;同时局部连接抓住空间相关性。
通过训练学习来的!初始化随机值,然后用反向传播和梯度下降不断调整,最终学出能区分不同类别的特征检测器。
因为池化窗口是2×2,每4个值合并成1个。对于3×3输入,2×2池化会产生2×2输出(取整舍弃边缘)。