背景:
传统卷积网络,内存需求大、运算量大导致无法在移动设备以及嵌入式设备上运行
MobileNet网络是由Google团队在2017年提出的,专注于移动端或者嵌入式设备中的轻量级CNN网络。相比于传统卷积神经网络,在准确率小幅降低的前提下大大减少了模型参数与运算量。(相比于VGG16准确率减少了0.9%,但模型参数只有VGG的1/32)
网络亮点:
Depthwise Convolution(DW卷积,大大减少运算量和参数数量)
增加了两个超参数(控制卷积核个数),(控制输入图像的大小)
DW卷积:
传统卷积:
对于输入特征矩阵深度为3的特征矩阵,使用4个卷积核卷积,每个卷积核的深度都与输入特征矩阵的深度相同(输入特征矩阵的深度为3,卷积核的深度也为3),输入特征矩阵的深度由卷积核个数决定,为4
总结:
卷积核channel=输入特征矩阵channel
输出特征矩阵channel=卷积核个数
DW卷积:
每一个卷积核的深度为1,并不像传统卷积中卷积核的深度为特征矩阵的深度;每一个卷积核只负责与输入特征矩阵的一个channel进行卷积运算,得到相应的输出矩阵的channel;
每一个卷积核只负责一个channel,因此采用的卷积核个数应与卷积核深度相同;每一个卷积核与输入特征矩阵的一个channel进行卷积之后得到一个输出矩阵的channel,那么输出矩阵的深度与卷积核的个数相同,也与输入矩阵的channel相同。
总结:
卷积核的深度(channel)=1,一个卷积核只负责输入特征矩阵的一个channel维度
输入特征矩阵的channel=卷积核个数=输出特征矩阵channel
Depthwise Separable Conv:
深度可分的卷积操作
由两部分组成,DW卷积和PW卷积
Pointwise conv:
PW卷积就是普通卷积,卷积核大小为1;每个卷积核的深度为输入矩阵的深度相同,输出矩阵深度与卷积核个数相同
深度可分卷积相比普通卷积节省了多少参数:
普通卷积:
通过普通卷积得到的深度为4的特征矩阵
:输入矩阵的高和宽
:卷积核的大小
:输入特征矩阵的深度
:输出特征矩阵的深度,对应卷积核的个数
计算公式:
:K卷积核i j位置下的第m个通道
:有n个卷积核
ij:像素的位置
计算量:
普通卷积一共有个像素,每一个像素都要计算次,也就是对应原图感受野的大小
DW操作和PW操作:
通过DW、PW操作得到深度为4的特征矩阵
计算公式:
计算量:
将改变大小和改变深度两件事分离开
对比计算量:
,一般都为3*3的卷积核,化简得到
在理论上普通卷积得计算量是深度可分卷积计算量的8~9倍
MobileNet v1网络模型结构:
1个标准卷积层
13个深度可分离卷积(每层包含两个卷积操作:一个 3x3 深度卷积 和一个 1x1 逐点卷积)
1个全局平均池化层
1个全连接层
1个softmax层
卷积块特点:
引入深度可分离卷积,将普通卷积替换为深度卷积和点卷积
除第一个卷积层和最后全连接层之外,所有卷积层后都有BN,ReLU相连
降采样方式:
方法:
步长设置:在某些卷积层中,设置步长为 2。在卷积操作时,输入特征图的每个位置会跳过 1 个像素,从而在特征图的空间维度上减少输出的尺寸(即降采样)。
使用深度可分离卷积:能有效地进行降采样,还能提取特征,计算量相对较小,更加适合在资源有限的环境下使用。
作用:
减少信息损失
提高效率
超参数:
Width Multiplier :
宽度超参数
输入维度变化:
输出维度变化:
将卷积核的个数减少后,准确率没有大幅下降,但对于模型参数减少了很多
Resolution Multiplier:
分辨率超参数
特征图尺寸:
减少输入图像的大小,可以保证在准确率降低很小的前提下,大幅减少运算量
作用:
实现准确性和延时性的平衡
缺点:
DW卷积在训练完之后部分卷积核会废掉,大部分参数为“0”
针对此缺点,在MobileNet v2中有改善
标签:卷积,MobileNetv1,矩阵,网络,特征,详解,输入,深度,channel From: https://blog.csdn.net/m0_61595251/article/details/143319401