1、主要创新
1)提出了一种新的layer module:the inverted residual with linear bottleneck,
2)short connect被置于bottleneck层之间,比置于expanded层之间可以取得更好的效果
3)采用线性bottleneck层(即不同ReLU函数),因为非线性会破坏低维空间信息
4)使用ReLU6作为非线性函数,因为它在低精度计算时具有鲁棒性
2、网络结构
1)传统Residual block
先用1x1降通道过ReLU,再3x3空间卷积过ReLU,再用1x1ReLU卷积恢复通道,并和输入相加。之所以要1x1卷积降通道,是为了减少计算量,不然中间的3x3空间卷积计算量太大。所以Residual block是沙漏形,两边宽中间窄。
2)Inverted residual block
现在中间的3x3卷积变为了Depthwise的了,计算量很少了,通道可以多一点,效果更好,所以通过1x1卷积先提升通道数,再Depthwise的3x3空间卷积,再用1x1卷积降低维度。两端的通道数都很小,所以1x1卷积升通道或降通道计算量都并不大,而中间通道数虽然多,但是Depthwise 的卷积计算量也不大。作者称之为Inverted Residual Block,两边窄中间宽,像柳叶,较小的计算量得到较好的性能.
3)ReLU6
首先说明一下 ReLU6,卷积之后通常会接一个 ReLU 非线性激活,在 MobileNet V1 里面使用 ReLU6,ReLU6 就是普通的ReLU但是限制最大输出值为 6,这是为了在移动端设备 float16/int8 的低精度的时候,也能有很好的数值分辨率,如果对 ReLU 的激活范围不加限制,输出范围为0到正无穷,如果激活值非常大,分布在一个很大的范围内,则低精度的float16/int8无法很好地精确描述如此大范围的数值,带来精度损失。
3、与其他模型的结构对比
4、性能对比(ImagNet)