一、卷积
1、卷积原理
卷积是一种局部操作,通过 一定大小的卷积核作用于局部图像区域获得图像的局部信息。
2、图像卷积后输出计算公式
N = (W − F + 2P )/S+1
W是输入大小,F是卷积核大小,P是填充,S是步长
3、padding的作用
保持边界信息。
可以利用padding对输入尺寸有差异图片进行补齐,输入图片尺寸一致。
在CNN的卷积层中可以使得输入维和输出维一致。
卷积神经网络的池化层中,一般都是为了保持边界信息。
4、1*1卷积的作用
增加网络的深度,同时 加入了非线性。
用来升维或者降维。
跨通道信息交互(channel变换)
5、卷积层与全连接层的区别
全连接层的权重矩阵是固定的,即每次特征图的输入必须是指定大小,所以网络一开始的输入图片尺寸必须是固定的,才能保持传到全连接层的特征图的大小和权重矩阵匹配。
卷积层就不需要固定大小。
6、常规卷积和深度可分离卷积
常规卷积
深度可分离卷积
7、为什么深度可分离卷积要逐通道后逐点
Depthwise Convolution完成后的Feature map数量与输入层的通道数相同,无法扩展Feature map。而且这种运算对输入层的每个通道独立进行卷积运算,没有有效的利用不同通道在相同空间位置上的feature信息。因此需要Pointwise Convolution来将这些Feature map进行组合生成新的Feature map。
8、CNN网络有什么特点
局部与整体的关系,由低层次的特征经过组合,组成高层次的特征,并且得到不同特征之间的空间相关性。CNN抓住此共性的手段主要有四个:局部连接/权值共享/池化操作/多层次结构。
局部连接:可以提取局部特征
权值共享:减少参数数量,降低训练难度
降维:通过池化或者卷积实现
多层次结构:将低层次的局部特征组合成较高层次的特征
9、卷积代码实现
def conv(intput,filter,srider):
N,H,W,C=input.shape #N,H,W,C分别表示图片数量,长,宽,通道数量
FN,FH,FW,FC=filter.shape #FN,FH,FW,FC分别表示卷积核数量,长,宽,通道数量
assert c==FC
pad=0
H_out=1+(H-FH+2*pad)//stride #计算输出大小
W_out=1+(W-FW+2*pad)//stride
conv_res=np.zeros((N,H_out,W_out,FN))
for n in range(N):
for c in range(FN):
for i in range(H_out):
for j in range(W_out):
conv_res[n,i,j,c]=np.sum(
input[n,i*stride:i*stride+FH,j*stride:j*stride+FW,:]
*filter[c,:,:,:])
return conv_res
10、计算机中卷积的实现
对于1x1卷积,原始储存结构和im2col存储结构计算是一样的,故1x1卷积不需要im2col的过程
二、池化
1、作用
池化层不包含可学习的参数。将卷积层后得到的小邻域内的特征点整合得到新的特征。一方面防止无用参数增加时间复杂度,一方面增加了特征的整合度。缺点是梯度稀疏、丢失信息。
优点:
(1) 特征不变性:池化操作让模型更关注是否存在某些特征而不是特征的具体位置。可看做是一种很强的闲言,使特征学习包含某种程度的自由度,能容忍一些特征微小的位移,提取对于平移和小变形不变的特征.
(2) 特征降维:降采样,池化结果中一个元素对应于原输入数据的一个子区域,因此池化相当于在空间范围内做了维度约检,从而使模型可以抽取更广范围的特征。同时减小下一层输入的大小,进而减小计算量和参数个数
(3) 在一定程度上防止过拟合,方便优化
注:
特征提取的误差主要来自两个方面:
(1)邻域大小受限造成的估计值 方差增大
(2)卷积层参数误差造成估计 均值的偏移
2、平均池化
减少第一种误差,更多的保留图像的背景信息。
平均池化的前向操作,就是将patch内的特征值求mean,然后作为新特征图该位置的元素。
反向传播就是将某个元素的梯度平均分为n份给前一层,这样就保证池化前后的梯度(残差)之和保持不变。
注意:这里的核心是平均分为n份之后给前一层,如果是直接复制原值传给上一层,很容易导致梯度爆炸。
3、最大池化
减少第二种误差, 更多的保留纹理信息。
前向传播机制其实就是将patch中最大的元素值作为之后一层的元素值,而其他元素舍弃。
反向传播机制其实就是将梯度直接传给前一层的某一个位置,其它位置不接受梯度,为0。
4、ROI池化
根据输入image,将ROI映射到特征图对应的位置
将映射后的区域划分为相同大小的section(数量与输出维度相同)
对每个section进行最大池化操作
变为