MobileNet V3 比 V2 快多少?

Posted

技术标签:

【中文标题】MobileNet V3 比 V2 快多少?【英文标题】:How is MobileNet V3 faster than V2? 【发布时间】:2019-11-18 20:20:24 【问题描述】:

这是有关 MobileNet V3 的论文链接。

MobileNet V3

根据论文,h-swish 和 Squeeze-and-excitation 模块是在 MobileNet V3 中实现的,但它们的目的是提高准确性,而无助于提高速度。

h-swish 比 swish 快,有助于提高准确性,但如果我没记错的话,它比 ReLU 慢得多。

SE 也有助于提高准确性,但它增加了网络的参数数量。

我错过了什么吗?我仍然不知道在 V3 中实现了上面所说的,MobileNet V3 如何比 V2 更快。

我没有提到他们还修改了他们网络的最后一部分,因为我计划使用 MobileNet V3 作为主干网络并将其与 SSD 层结合起来进行检测,所以网络的最后一部分胜出'不被使用。

可以在上面提到的论文中找到下表,表明 V3 仍然比 V2 快。

Object detection results for comparison

【问题讨论】:

【参考方案1】:

MobileNetV3 在分类任务上比 MobileNetV2 更快、更准确,但在不同的任务上不一定如此,例如对象检测。 正如您自己提到的,他们在网络最深端所做的优化主要与分类变体相关,从您引用的表格中可以看出,mAP 也好不到哪里去。

不过有几点需要考虑:

确实 SE 和 h-swish 都会稍微减慢网络速度。 SE 添加 一些 FLOP 和参数,并且 h-swish 增加了复杂性,并且两者都 导致一些延迟。但是,两者都被添加,使得 准确性 - 延迟权衡更好,这意味着延迟 加法值得提高准确性,或者您可以保持相同 准确性,同时减少其他内容,从而减少整体延迟。 特别是关于 h-swish,请注意他们主要在 更深的层,张量更小。它们更厚,但 由于分辨率的二次下降(高度 x 宽度),它们是 整体更小,因此 h-swish 会导致更少的延迟。 搜索架构本身(没有 h-swish,甚至没有考虑 SE)。这意味着它比“vanilla”MobileNetV2 更适合该任务,因为该架构“较少人工设计”,并且实际上针对任务进行了优化。例如,您可以看到,在 MNASNet 中,一些内核增长到 5x5(而不是 3x3),并非所有扩展率都是 x6,等等。 他们对网络最深端所做的一项更改也与对象检测有关。奇怪的是,在使用 SSDLite-MobileNetV2 时,原始作者选择保留从 320 深度扩展到 1280 的最后一个 1x1 卷积。虽然这一数量的特征对于 1000 类分类是有意义的,但对于 80 类检测它可能是多余的,正如作者MNv3 的人在第 7 页的中间(第一列的底部到第二列的顶部)说自己。

【讨论】:

是的,在 MNv3-small 的情况下,mAP 并没有更好甚至更差,但是根据表格,速度大大提高了,所以我对原因很感兴趣。我目前正在尝试使用 MNv3-small 并希望将 SSD 层连接到它并与 MNv1-SSD 进行比较以用于我自己的检测目的。 我目前正在使用 MNv1-SSD 来完成我的任务,并希望用新的骨干网替换。我选择从 MNv3-small 开始,而不是 MNv3-large,因为尽管准确度下降了,但它的速度要快得多。

以上是关于MobileNet V3 比 V2 快多少?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用最新的 MobileNet (v3) 进行目标检测?

MobileNet V2 图像分类

Mobilenet v1/2和Shufflenet v1/v2

轻量化卷积神经网络MobileNet论文详解(V1&V2)

比Python 3.8快20%,Pyston v2正式发布

MobileNet vs SqueezeNet vs ResNet50 vs Inception v3 vs VGG16