mobilenet v1 主要是提出一种深度可分离卷积,将原来的三维度卷积 分成二维度加上 厚度上的单独卷积,从而可以实现参数上的极大减少。【主要带来计算量和参数量的大量减少。 计算量减少9倍左右的参数量。
该网络架构核心的特点是分成提出了两种卷积形式Depthwise convolution和pointwise convolution。
【1】Depthwise convolution对每个输入通道使用不同的卷积核,每个通道对应一个卷积核,其应用于depth级别。
【2】pointwise convolution从含义上就是普通的卷积,只不过其维度是1*1形状大小的。
在进行使用时,首先是使用depthwise convolution对不同的通道进行分别的卷积【这样挺好的,就是每个通道使用一个二维矩阵】,然后再使用pointwise将depthwise卷积的结果合在一起。【主要的参数吧,可以很多个1*1*厚度 * 个数的卷积,实现个数级的升降维度】
换个角度解释,比如原来需要 8个3*3*3的卷积核【比如原来特征图厚度为3,现在需要生成厚度为8的特征图】,那么 如果用深度可分离卷积的话,就可以,首先是Depthwise convolution需要参数量为3*3*3个【对应于三个厚度通道,每个通道都需要一个3*3的矩阵】,而再加上pointwise convolution就是 1*1*3*8大小的【使用起到升降维度的1*1矩阵对 维度进行调整,同时使用了8个矩阵,这个是可以自己调节的】,发现没,减少了非常多。
接下来我们分析从计算量和参数量角度 ,Mobilenet中的深度可分离卷积相对于普通卷积所能带来的减少量吧。
【1】在参数量方面,假定Dk是卷积核的长和宽、 M是厚度、N是卷积核的数量, 可以发现左为原卷积的参数量, 右为进行深度可分离卷积拆解后的参数量,
带来的参数减少量为:Dk*Dk*M*(N-1) - M*N
【2】在计算量方面,标准卷积是左侧的公式,其中可以明确吧,是对所有的参数都乘上原特征图的 宽度和长度,每个参数都做完全的计算。
而深度可分离卷积比舒服的多,相当于第一部分 少乘 卷积核数量N这一维度, 之后补上纯粹的1*1*M*N卷积核上的参数乘过去。
经过这样的处理计算后,参数量和计算量均降为原来的 九分之一 到八分之一。【论文中有说明,参数和计算量下降到原来的九分之一左右,这个也跟具体的使用有关,而准确率只下降极小的1%】
如上是最为核心的深度可分离卷积的部分, 其具体实现时对应的是如下的形式上的替换。可以看到在这里是 将之前 3*3卷积的直接形式,分为 深度卷积 -> BN -> Relu6->1*1逐点卷积 ->BN ->Relu这 6个部分, 使用 深度卷积+逐点卷积 来提换原来的 3*3普通卷积, 此外可以发现这里是将 Relu 激活函数换成了Relu6.
激活函数替换后的对比如下,Relu6的公式如右【其特点就是将 输入值大于6的部分,直接设置值为6, 作者认为,使用relu6可以在低精度计算中具有较好的 鲁棒性】。
从整体来看,其架构对应是如下的形式:
————————————————————————————————————————————————————
V2是在V1上做了什么改进?
答:V2是在V1基础上主要加入了对残差连接的利用。
其相对于V1版本有三个比较大的创新点。
【1】利用Inverted residuals策略,在V1版本中没有很好地利用 Residual Connection,而这种残差在大多情况下都是比较好的,所以在 V2中把该模块加了过去。
【2】使用Linear bottleneck策略把最后一个的 激活层换成线性形式, 也就是把Relu6层变成了 Linear形式。
原因是我们发现深度卷积部分的卷积核在 训练时特别容易训废掉【也就是发现深度卷积得到的卷积核很多是空的,我觉得这个空,意思应该是核上值为0】, 作者认为是Relu激活函数导致的问题。
作者也是有做分析的,分析把relu结果变换embedding到高维空间上进行观察,发现在低维度relu是很容易造成信息的丢失, 而在高维度上做relu时,信息丢失则比较少。 因此这种丢失就解释了 为什么深度卷积的卷积核很多为空,所以因此 Relu会造成信息耗损, 就将relu替换成线性激活函数来使用。 进行替换时并不是每一层都替换,而只是对最后一层进行的替换。
【3】使用了Expansion layer策略,这个方式使用的 原因 是为了 让 深度卷积操作可以在更高的通道的上进行【因为原始 深度卷积是有多大卷多大】,这样的话可以在更高维度上进行处理,能有更好的效果, 所以 我们在 深度卷积前 先加上 逐点卷积,按照 PW逐点扩张卷积 -> DW深度卷积操作 ->PW 压缩卷积。 使用这样的方式 三步替代之前的两步操作
【总结】总体下来,就是以上三点,使得 其结构可以表达成如下的形式【先升维、再卷积、再降维】, 也可以对应右侧的对比观察。
参考: