提出了 inverted residual structure,主要由 bottleneck block 和 expansion layer 组成,后面会详细的介绍它们的结构
Residual block
运行流程:input -> 1 * 1 卷积降维,relu -> 3 * 3 卷积,relu -> 1 * 1 卷积升维,relu -> add(input, output)
Inverted residual block
运行流程:input -> 1 * 1 卷积升维,relu -> 3 * 3 DW卷积,relu -> 1 * 1 卷积降维,不要relu -> add(input, output)
Residual block 是一个先降维再升维的过程
Inverted residual block 正好相反,是一个先升维再降维的过程,并且在降维时,不使用relu激活函数。具体细节看 bottleneck block 的实现
具体结构如下:
expansion layer 实际上就是一个 11 的卷积层,用于对输入特征图进行升维
输出特征图时只进行 11 的卷积层,不接rule6非线性层。
具体 block 如下图所示:
残差块的特征融合过程,只有在strid=1,即输出特征图和输出特征图维度相同的情况下,才进行特征相加融合。过程如上图所示
t 表示 expansion factor,就是经过 expansion layer 后,输出通道数 = 输入通道数 * t。
c 表示输出的通道数,n表示该 block 重复n次,s 表示步长。
作者的观点:
不同通道数的rule输出对比:
可以看到通道数越大,rule后保存的信息越多。
MobileNet的输入大小:320 × 320
原文:https://www.cnblogs.com/hypnus-ly/p/15223924.html