CNN卷积神经网络到底卷了啥?

发布于:2025-05-26 ⋅ 阅读:(25) ⋅ 点赞:(0)

参考视频:卷积神经网络(CNN)到底卷了啥?8分钟带你快速了解!


我们知道:
图片是由像素点构成,即最终的成像效果是由背后像素的颜色数值所决定
在Excel中:有这样一个由数值0和1组成的6×6的区域
我们把0设置成黑色、1设置成白色。最终呈现的效果,是不是很像数字7?
 
而CNN模型能够告诉我们
这样一个6×6的像素图,是否是数字7?或返回它属于数字0~9的概率分别是多少?


下面,我们对这个CNN模型进行分解:

CNN模型第一步:提取特征,得到特征图

1、利用多个不同的卷积核(也称特征过滤器,如 3×3、5×5)对图像做滑动窗口计算
2、每一个卷积核计算完成后,会得到一张对应的特征图(一核对一图)

本例中,需提取水平和垂直两大特征部分,分别在下面的两个3×3的卷积核中得到体现

 

滑动窗口计算规则:
1、先按顺序提取原始图片中3×3的像素区域
2、再将其每个像素单元依次与卷积核内相对应的像素值相乘,再求和
3、再把结果记录在新的4×4的像素图上。

注意:输入图像、卷积核、特征图、池化核的尺寸大小,有数学公式关系
这部分主要由卷积操作的参数(如核大小、步长、填充)决定

  

本例整个计算完成后,我们会得到两个4×4的特征图(一个卷积核对应一个特征图)
我们可以看到:
根据特征图的颜色深浅(数字大小),原始图片中的7
垂直部分特征被很好提取出来了(明显),而水平部分特征却没被提取出来(不明显)
这是因为在特征提取计算的过程中,像素图从原6×6被降维成了4×4,边缘特征丢失了

这里使用一种被称为Padding的扩充方法,为了解决边缘特征的提取问题
将原始的6×6图像,先扩充成8×8,扩充部分的像素值均设为 0
这样,在特征提取计算后,转化后特征图的像素同为6×6,最终两个特征都能完美提取到


CNN模型的第二步:最大池化Max Pooling

常用最大池化平均池化,使用池化核(如 2×2)对特征图降采样,减少参数数量和计算量,降低数据维度。换句话说,就是将图片数据进一步压缩,仅反映特征图中最突出的特点。

1、将6×6的特征图,用2×2的网格(池化核),分割成3×3的部分
2、再提取每个部分中的最大值
3、再放于最大池化后的3×3网格中。池化后的数据保留了原始图中最精华的特征部分

注意:输入图像、卷积核、特征图、池化核的大小之间,有数学公式关系
这部分主要由卷积操作的参数(如核大小步长填充)决定

 


CNN模型第三步:把池化后的数据,做扁平化处理

1、把池化后的两个3×3的像素图,叠加转化成一维的数据条(一维向量)
2、再将数据条录入到后面的全连接隐藏层,最终产生输出

  

这里提一点:全连接隐藏层
意味着这里的任意一个神经元都与前后层的所有神经元相连接
这样就可以保证,最终的输出值,是基于图片整体信息的结果


在输出阶段:
可使用Sigmoid函数,返回0~1的值,代表该图片是否是7的概率
也可用Softmax函数,返回该图案分别属于0~9的概率



到这里,一个完整的CNN模型的数据流就完成了!


网站公告

今日签到

点亮在社区的每一天
去签到