MobileNet V3 如何比 V2 快?

Jef*_*hiu 5 deep-learning mobilenet

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

移动网络 V3

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

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

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

我错过了什么吗?我仍然不知道在 V3 中实现上述内容后,MobileNet V3 如何比 V2 更快。

我没有提到他们还修改了他们网络的最后一部分,因为我计划使用 MobileNet V3 作为主干网络并将其与 SSD 层结合用于检测目的,因此网络的最后一部分不会用过的。

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

用于比较的物体检测结果

net*_*sam 6

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

但有几点需要考虑:

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