你们使用Edge AI吗?
Edge AI是MobileNet V2,不是吗?
前几天,发布了后续产品MobileNet V3。
世界各地的工程师已经对MobileNet V3进行了基准测试,但是
我也想对自己进行基准测试。
在本文中,我想使用Keras对MobileNet V3进行基准测试。
(该图摘自论文)
整个代码可在Github上找到。
组态
MobileNet V3
- 该代码是从这里借来的。
- 在初始化状态下学习权重。
-
V3中有
small 和large ,但我假设small 将在Raspberry Pi的CPU上运行,所以我采用了small 。 - 模型大小将取决于$ \\ alpha $的值。 $ \\ alpha $越大,则精度越高,但速度越慢。
MobileNet V2
- Keras是V2的标准配置并使用它。
- 权重已经被训练,但是像V3一样,它们在初始化状态下被训练。
- $ \\ Alpha $具有与V3相同的规格。
其他
- 数据集使用cifar-10。
- 实验是在协作实验室(GPU)上进行的。
- 批处理大小为1024,纪元为100,优化方法为Adam(lr = 0.001),使用数据增强。
结果
精度比较
让我们看一下您关心的准确性。
下图显示了每个模型训练10次后的准确性结果。
与V2相比,V3具有更好的精度和更少的变化。
如果V3的推理时间很快,那么使用V3似乎更好。
推理时间比较
我试图通过在Colaboratory中执行1000次来检索中位数等,但是在Colaboratory中
也许有一个习惯,每次执行时测量时间都会波动。 (内存和使用时间的影响吗?)
但是,相对推理时间关系没有中断,因此相对比较似乎在某种程度上是可信的。
下图显示了每个模型运行1000次后的平均推断时间。
*请不要相信推断时间值。
*()中的值为$ \\ alpha $的值。
具有漂亮的向上斜率,并且V2(0.5)和V2(1)之差较大。
另外,它是$ V2(1)\\ fallendotseq V3(0.2)$,考虑到精度,V3(0.2)为
似乎最好采用它。
汇总在表中。
<表格>
tr>
header>
<身体>
tr>
tr>
tr>
tbody>
table>
到目前为止,似乎没有替代V3中的V2(0.5)。
学习时间比较
如上所述,测量时间在每次执行时都会改变,因此此处无法测量。
但是,我的印象是V2和V3之间的学习时间并没有太大差异。
重量尺寸比较
<表格>
tr>
header>
<身体>
tr>
tr>
tr>
tr>
tbody>
table>
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
速度约为15到20 FPS。
以这种速度,似乎可以进行实时处理。
顺便说一句,如果输入尺寸为96 x 96 x 3,则为10 FPS。
概要
- MobileNet V3不能替代V2,而是它的扩展。换句话说,当您说"我想获得比V2更高的精度,但是即使处理速度稍慢一点也可以"时,最好使用它。
- 但是,即使使用V3,速度也不会降低太多。
- 最终,如果减小输入图像的大小,则V3的速度将增加,因此,如果对其进行调整,则可能"速度与V2相同,但精度更高"。