[准确性对决] MobileNet V3和V2


你们使用Edge AI吗?

Edge AI是MobileNet V2,不是吗?
前几天,发布了后续产品MobileNet V3。

世界各地的工程师已经对MobileNet V3进行了基准测试,但是
我也想对自己进行基准测试。

在本文中,我想使用Keras对MobileNet V3进行基准测试。
image.png
(该图摘自论文)
整个代码可在Github上找到。

组态

MobileNet V3

  • 该代码是从这里借来的。
  • 在初始化状态下学习权重。
  • V3中有smalllarge,但我假设small将在Raspberry Pi的CPU上运行,所以我采用了small
  • 模型大小将取决于$ \\ alpha $的值。 $ \\ alpha $越大,则精度越高,但速度越慢。

MobileNet V2

  • Keras是V2的标准配置并使用它。
  • 权重已经被训练,但是像V3一样,它们在初始化状态下被训练。
  • $ \\ Alpha $具有与V3相同的规格。

其他

  • 数据集使用cifar-10。
  • 实验是在协作实验室(GPU)上进行的。
  • 批处理大小为1024,纪元为100,优化方法为Adam(lr = 0.001),使用数据增强。

结果

精度比较

让我们看一下您关心的准确性。
下图显示了每个模型训练10次后的准确性结果。

image.png

与V2相比,V3具有更好的精度和更少的变化。
如果V3的推理时间很快,那么使用V3似乎更好。

推理时间比较

我试图通过在Colaboratory中执行1000次来检索中位数等,但是在Colaboratory中
也许有一个习惯,每次执行时测量时间都会波动。 (内存和使用时间的影响吗?)

但是,相对推理时间关系没有中断,因此相对比较似乎在某种程度上是可信的。
下图显示了每个模型运行1000次后的平均推断时间。

image.png

*请不要相信推断时间值。
*()中的值为$ \\ alpha $的值。

具有漂亮的向上斜率,并且V2(0.5)和V2(1)之差较大。
另外,它是$ V2(1)\\ fallendotseq V3(0.2)$,考虑到精度,V3(0.2)为
似乎最好采用它。

汇总在表中。

<表格>

速度

准确性


<身体>

V2(0.5)

快速

不好

V3小(0.2)


V3小(0.5)




到目前为止,似乎没有替代V3中的V2(0.5)。

学习时间比较

如上所述,测量时间在每次执行时都会改变,因此此处无法测量。
但是,我的印象是V2和V3之间的学习时间并没有太大差异。

重量尺寸比较

<表格>

$ \\ alpha $

重量大小(MB)


<身体>

MobileNet V2

0.5

3.3

MobileNet V2

1

9.5

MobileNet V3小型

0.2

11.3

MobileNet V3小型

0.5

11.7


V2绝对更轻。
另外,V3权重的大小似乎并不太依赖$ \\ alpha $。

关于转学

考虑到实际使用情况,我认为很少需要从头开始训练模型。
通常,会使用转移学习,但是目前,已发布在Keras中学习的权重(V3)。
不是 ...但是,它已在Pytorch上发布。

https://github.com/d-li14/mobilenetv3.pytorch

如何将Pytorch模型转换为Keras或TensorFlow lite模型
我认为以下文章会有所帮助。

https://qiita.com/lain21/items/9f9f9707ebad4bbc627d

让我们了解更多的转让。

我尝试在Raspberry Pi上运行它

我尝试使用Raspberry Pi进行实时识别。
单击此处获取代码。

  • 使用的设备:Raspberry Pi3 B型
  • 外部GPU:未使用
  • V3小$ \\ alpha = 0.2 $
  • 输入图像尺寸:32 x 32 x 3

33tby-1m4wl.gif

速度约为15到20 FPS。
以这种速度,似乎可以进行实时处理。

顺便说一句,如果输入尺寸为96 x 96 x 3,则为10 FPS。

概要

  • MobileNet V3不能替代V2,而是它的扩展。换句话说,当您说"我想获得比V2更高的精度,但是即使处理速度稍慢一点也可以"时,最好使用它。
  • 但是,即使使用V3,速度也不会降低太多。
  • 最终,如果减小输入图像的大小,则V3的速度将增加,因此,如果对其进行调整,则可能"速度与V2相同,但精度更高"。