一、卷积神经网络基础
1.卷积操作与边缘检测
1.1卷积运算
1.2 边缘检测
边缘检测实际上就是对图像进行有明到暗或者由暗到明的区分,如下图的垂直边缘检测和水平边缘检测
如果想检测出更复杂的边缘,比如边缘的倾斜角有35° 74°等等,需要将3 * 3过滤器中的数字参数化,通过反向传播学习到9个参数,神经网络可以学习类似边缘检测这样的低层次特征
2、padding
对于一个输入nn的图像(1)和ff过滤器不断地进行卷积运算后,图像不断地缩小(2)边缘的像素只计算过一次,而中间的像素运算多次,会导致边缘信息丢失。为解决这两个问题,因此引入了padding,即在进行卷积运算之前填充p圈0,使得卷积运算之后的图像和图像大小相同。引入了padding后,卷积计算后的图像大小为(n+2p-f+1)*(n+2p-f+1)。
根据填充像素个数的不同,分为:
(1)valid卷积:不填充
(2)same卷积:填充后再进行卷积计算和原图片大小相同,即p=(f-1)/2
3、stride
以上都是过滤器每次往右走一步,当然过滤器可以每次往右走n步,最后输出的图像大小为
⌊
n
+
2
p
−
f
s
+
1
⌋
∗
⌊
n
+
2
p
−
f
s
+
1
⌋
\lfloor \frac {n+2p-f}{s} +1\rfloor * \lfloor \frac {n+2p-f}{s}+1 \rfloor
⌊sn+2p−f+1⌋∗⌊sn+2p−f+1⌋
如:s = 2
4、多维卷积
卷积核的通道数要和输入图像的通道数相同
5、多过滤器
(1)可以通过和多个过滤器卷积,每个过滤器检测一种特征,来实现不同角度的边缘检测。
(2)输出图像的通道数和过滤器的数量相同,每个过滤器的通道数应和输入图像的通道数相同
6、单层卷积神经网络
(1)我们在此结果上加上偏差(bias),再应用非线性激活函数ReLU,再把两个结果矩阵堆叠起来,最终得到一个442的矩阵。这就是单层卷积神经网络。
(2)以上图为例,每个参数数量=333+1(偏置)=28,10组过滤器材280个参数。不论输入的图片有多大,参数数量只与过滤器大小以及数量有关,这就是卷积神经网络的一个特征“避免过拟合”。
(3)常用的标记方法总结(下图)
7、池化层Pool
(1)卷积网络经常使用池化层来缩减模型的大小,提高计算速度,提高鲁棒性。常用的有两种池化类型:
- 最大池化:取过滤器窗口范围内的最大值。如果在过滤器中提取到某个特征,那么保留其最大值;如果没有提取到某个特征,可能不存在这个特征,那么其中的最大值也还是很小。
- 平均池化:取过滤器窗口范围内的平均值
(2)具有两个超参数filter size和stride。池化过程中没有需要学习的参数。反向传播没有参数适用于最大池化。最大池化只是计算神经网络某一层的静态属性。
8、卷积神经网络实例
(1)输入层和池化层没有参数,卷积层参数较少,全连接层参数最多。
(2)全连接层参数数量为:上一层激活值(神经元)数量*当前层激活值数量
(3)随着神经网络深度的加深,高度和宽度通常会减少,而通道数量会增加。
(4)卷积层参数少,原因有两个:
- 参数共享:特征检测如果适用于图片的某个区域,那么它也可能适用于图片的其他区域,所以图片的不同区域都使用同样的参数。
- 连接的稀疏性:因为过滤器窗口范围的限制,每一层的每个输出只与输入部分区域内有关