一、ResNet
①特点
ResNet的深度远比之前的算法深,且不会出现网络退化问题。
Ps.网络退化:网络深度增加反而不如原来的网络。(网络退化 != 过拟合/梯度消失)
②残差块
残差块采用短路连接(Shortcut Connection) / 跳跃连接,拟合的目标由直接最终结果变更为在原输入恒等映射基础上的变化(即残差)
Ps.残差(Residual):预测值和真实值之间的偏差
在ResNet网络中,多个残差块进行堆叠形成完整的网络结构,解决了退化问题。
若残差块在计算过程中因下采样改变了通道数而与短边维度数不一致(不能直接相加)的处理方法:
1.对短边多出来的通道进行0填充(padding)
2.对短边进行1x1卷积将通道数调整到与F(x)一致
③解决网络退化的机理
1.深层梯度回传流畅:梯度的回传可以沿着短边直接传输,防止梯度消失。
2.传统线性结构网络难以拟合“恒等映射”:弥补了高度非线性造成的不可逆的信息损失(可以让模型自行选择要不要进行更新)
二、MobileNet V1
主要用于嵌入式设备的边缘计算(资源需求较低)
补充阅读:网络轻量化的途径↓
1.压缩已训练好的模型:知识蒸馏、权重量化;剪枝;注意力迁移
2.直接训练轻量化网络
3.加速卷积运算:im2col+GEMM,Winograd,第秩分解
4.硬件部署:Tensorflow-slim / Tensorflow-Lite
①深度可分离卷积
MobileNet由深度可分离卷积堆叠而成;相较于传统卷积,深度可分离卷积可以视为将通道拆分,每个卷积核仅负责一个通道(而不是一个卷积核负责全部通道);而跨通道信息可由1x1通道进行补充。
可以总结为:3x3以上卷积仅负责本通道信息;1x1卷积仅负责跨通道信息
深度可分离卷积 = 深度卷积(depthwise conv) + 逐点卷积(pointwise conv)
深度卷积(depthwise conv)
逐点卷积(pointwise conv)
MobileNet的深度卷积和逐点卷积的组合方式如下图所示(先DepthWise在PointWise)
深度可分离卷积是分组卷积的特例。分组卷积:一个卷积核只负责一部分特征图的卷积
深度可分离卷积也可以用在其他基干网络中提高计算参数效率(如ResNet)。
②空间可分离卷积
相对于深度可分离卷积而言,将一个卷积分解为两个不对称卷积。如将一个3x3卷积分解为一个1x3卷积和一个3x1卷积。
但就效率而言,空间可分离卷积并不如深度可分离卷积来得多。
③深度可分离卷积对参数量、计算量的影响
对标准卷积而言:(为卷积核边长)
乘法计算量:
是一次卷积的乘法次数;是特征图的元素个数
参数量:
而对于深度可分离卷积而言:
乘法计算量:
为一次卷积的乘法次数;和为特征图的元素个数,M为通道数
参数量为:
相较于标准卷积而言,MobileNet的计算量和参数量均为原网络的
其次MobileNet还提供了两个超参数:α-网络宽度(控制卷积核个数);-输入图像分辨率,所有的M,N都要乘以α,所有都要乘以
③深度可分离卷积模块
相较于左边的标准卷积,深度可分离卷积将一个3x3卷积拆分成一个1x1卷积,并在中间加入了BN层和ReLu层。
三、MobileNet V2
MobileNet V1存在以下缺陷:①没有残差连接;②很多DepthWise卷积核训练出来都是0(卷积核权重数量和通道数量太少;ReLu;低精度)
相较于MobileNet V1而言,V2使用了逆残差结构和线性瓶颈结构。
MobileNet V2的操作顺序如下:先以1x1卷积升维(6倍);再在高维度使用深度可分离卷积;最后用1x1卷积降维(降维后使用线性激活函数而非MobileNet V1的ReLu6激活函数)。同时添加了残差结构(下采样(首个卷积步长为2)的模块不具备残差连接)
MobileNet V2和ResNet虽然都有残差结构,但结构上有显著的区别:
①ResNet先降维后升维,MobileNet V2先升维后降维
↑所谓的逆残差结构
②ResNet使用标准卷积,MobileNet V2使用了深度可分离卷积
③ResNet使用ReLu激活函数,MobileNet V2使用ReLu6激活函数
④ResNet全部是非线性激活(ReLu),MobileNet V2降维时使用的是线性激活函数
⑤ResNet的残差连接的是两个高维向量,MobileNet V2连接的是两个低维向量
ReLu6激活函数
相较于原版ReLu函数(1为最大值),ReLu6为了改善低精度下的表示能力,将上限设置为6。
MobileNet V2由16个逆残差模块堆叠而成。