如何评价mobilenet v2 ?

如何评价mobilenet v2 ? Inverted Residuals and Linear Bottlenecks: Mobile Networ…
关注者
1,378
被浏览
258,471
登录后你可以
不限量看优质回答私信答主深度交流精彩内容一键收藏

总结一句话就是 业界良心。 另外说点其他答主没提到的东西。

其他答主都已经回答了两个关键的改进: inverted residual 以及Linear Bottlenecks。 问题是 为什么要这么改进呢?


MobileNet1.0 的遗留问题

结构问题:

MobileNet1.0 的结构其实非常简单, 论文里头是一个非常复古的直筒结构, 类似于VGG一样。 这种结构的性价比其实不高, 后续一系列的ResNet, DenseNet等结构已经证明通过复用图像特征, 使用concat/eltwise+ 等操作进行融合, 能极大提升网络的性价比。

有个小插曲: 之前有Google的人来访问的时候提到, MobileNet其实是他们两年前的工作...因为发现一直没人占这个坑, 所以就挂到arxiv上了....... 所以这个结构比较复古也是说得通的。


Depthwise Convolution 的潜在问题:

Depthwise Conv确实是大大降低了计算量, 而且NxN Depthwise + 1X1 PointWise的结构在性能上也能接近NxN Conv。 在实际使用的时候, 我们发现Depthwise 部分的kernel比较容易训废掉: 训完之后发现depthwise训出来的kernel有不少是空的... 当时我们认为是因为depthwise每个kernel dim 相对于vanilla conv要小得多, 过小的kernel_dim, 加上ReLU的激活影响下, 使得神经元输出很容易变为0, 所以就学废了: ReLU对于0的输出的梯度为0, 所以一旦陷入了0输出, 就没法恢复了。 我们还发现,这个问题在定点化低精度训练的时候会进一步放大。

在MobileNetV2中我们也看到了Google在这点上类似的解释, 用ReLu中 不同的Output/dim比值,对特征的分部空间可视化, 来直观解释特征/神经元退化问题。


Inverted residual 以及Linear Bottlenecks的影响:

缓解特征退化:

Linear Bottleneck 通过去掉Eltwise+ 的特征去掉ReLU, 减少ReLU对特征的破坏; Invered residual 有两个好处: 1. 复用特征, 2. 旁支block内先通过1x1升维, 再接depthwise conv以及ReLU, 通过增加ReLU的InputDim, 来缓解特征的退化情况.


效率优先的网络结构设计:

以前大多数的模型结构加速的工作都停留在压缩网络参数量上。 其实这是有误导性的: 参数量少不代表计算量小; 计算量小不代表理论上速度快(带宽限制)。 ResNet的结构其实对带宽不大友好: 旁路的计算量很小,eltwise+ 的特征很大,所以带宽上就比较吃紧。由此看Inverted residual 确实是个非常精妙的设计! 其实业界在做优化加速, 确实是把好几个层一起做了, 利用时空局部性,减少访问DDR来加速。 所以 Inverted residual 带宽上确实是比较友好。


所以总结一下: 这个确实是非常良心, 而且实用靠谱的东西,业界良心。