业界 | MobileNet在手机端上的速度评测:iPhone 8 Plus竟不如iPhone 7 Plus
选自Medium
机器之心编译
参与:路雪、黄小天
如今,正在兴起一项有关手机应用和深度学习的新动向。
2017 年 4 月:谷歌发布 MobileNets,一个可在计算资源有限的环境中使用的轻量级神经网络。
2017 年 6 月:苹果推出 Core ML,允许机器学习模型在移动设备上运行。
此外,最新的高端移动设备已内置 GPU,它们在运行机器学习计算时比我的 Mac Book Pro 还要快。
表 1. 不同手机设备处理单元对比
深度学习在边缘设备上的应用正在扩展。
在本文中,我将介绍其实际应用情况,展示其工作效率。
MobileNets 应用
最近我们开发了一个叫作 MobileUNet 的新型深度神经网络,可用于解决语义分割问题。本文将不详述 MobileUNet 的细节,但是会提及它的一个非常棒的简洁设计。顾名思义,它是在 U-Net 上运行 MobileNets(图 1),更多信息请参见:https://github.com/akirasosa/mobile-semantic-segmentation。现在只需简单记住以下几点:
它包含编码器部分和解码器部分,具备用于语义分割的深度神经网络的跳跃连接(skip)。
编码器部分正是 MobileNets,它没有用于分类的全连接层。
解码器部分使用卷积转置进行上采样。
图 1. U-Net 架构
当开始开发时,我们的主要担忧是推断速度。我们知道深度神经网络借助 GPU 只是稍快了一些,那么在手机端运行时又会怎样呢?
这就是我们采用 MobileNets 的原因。下面是 MobileNets 的 3 个关键点:
它引入了深度卷积模块来加速推断。
它展示了准确率与推断速度之间的高比率。
它具备一些控制准确率与速度之间权衡的参数。
我们可以获得相当满意的结果,下面是一个实例:
图 2. MobileUNet 的预测结果。从左到右依次是输入图像、真值和预测结果。
手机端速度 vs 准确率
在讨论网络性能之前,我首先介绍一些背景信息。
每个卷积,比如 Conv2D、DepthwiseConv2D 和 Conv2DTranspose,在不同处理器上有着相似的速度趋势吗?
答案是否定的。如果处理器不同,一些运算可以非常快,另一些则很慢。CPU 和 GPU 之间的区别很明显,甚至在 GPU 中,它们被优化的方式也各不相同。
图 3 展示了一般卷积模块和深度卷积模块的速度,Gist 地址:https://gist.github.com/akirasosa/b31c3096d9cc1959cbbd8af40993c92d。
图 3. 不同处理单元条件下,卷积模块和深度卷积模块的性能对比。
和理论一样,CPU 条件下深度卷积块的速度比卷积块要快得多,但是这种区别在 GPU 条件下没有这么明显。
那么,如果你想在移动设备中使用深度学习发布应用,强烈推荐使用多种主流设备评估速度。下面,我将分享 MobileUNet 的评估结果。
我在以下几种设备上进行了评估。
iPhone 6 plus
iPhone 7 plus
iPhone 8 plus
Sony Xperia XZ(骁龙 820)
如上所述,MobileNet 有一个参数,叫作 alpha,可以控制速度和准确率之间的权衡(trade-off)。它可以轻松应用到 MobileUNet。我选择了四种 alpha 值(1、0.75、0.5 和 0.25)和 4 种图像大小(224、192、160、128)。
以下是每种条件下的整体速度。
令人惊讶的是,iPhone 7 plus 获胜了。iPhone 7 plus 真的很快,它在任何条件下对于实时应用都没有问题。但是 iPhone 6 plus 和骁龙 820 没有那么快,尤其是当 alpha 值比较大的时候。因此,我们在选择最佳条件时必须认真地考虑准确率。
以下是每种条件下的准确率。
图 5. MobileUNet 在不同条件下的准确率。
alpha 为 0.25 时,准确率显著下降。在其他条件下,准确率根据大小和 alpha 逐渐下降。因此,alpha 0.25 被排除。
下图展示了骁龙 820 上模型的速度 vs 准确率。
图 6. MobileUNet 准确率 vs 速度(骁龙 820)
上图提示了一些选项。如果对我们的应用来说速度比较重要,那就选择左上:在大小 128、alpha 为 0.5 的条件下它的准确率为 0.875 IoU。如果准确率更重要,则选择另一个可能的条件,如大小 192、alpha 为 0.5。
每个设备也可以使用不同的模型,不过我不建议,因为这样复杂度太高。
最后,我们来看一下为什么 iPhone 7 plus 比 iPhone 8 plus 速度快。
如上所述,运行快慢取决于每个处理器,即 iPhone 7 plus 的 GPU 更加适合我们的网络。为了确定,我做了一个简单的实验。
我在编码器和解码器中配置 MobileUNet,然后评估 iPhone 7 plus 和 iPhone 8 plus 的性能。
图 7. iPhone 7 Plus 和 iPhone 8 Plus 上的速度对比。
很明显,解码器是 iPhone 8 Plus 的性能瓶颈,只使用了 Conv2DTranspose。因此,Conv2DTranspose 应该是造成速度差别的原因。iPhone 7 Plus 的 GPU 能够优化 Conv2DTranspose,而 iPhone 8 Plus 的 GPU 不具备此功能。在这种情况下,其他上采样方法可以作为改善性能的方法,不过我还没有试。
Gist 上有 Android 和 iOS 的基准脚本。
安卓中的基准 TensorFlow 模型(https://gist.github.com/akirasosa/812e81f14f300323df98e42ca5825604)
iOS 中的基准机器学习模型(https://gist.github.com/akirasosa/0fe78b4c173aeb49d96076db20aa9dd2)
结论
在移动设备中使用深度学习将得到广泛应用。因此,在不久的将来深度学习将会变得更加便捷。
不过,并非所有设备都具备高性能 GPU,因此可能需要一些性能调整。使用真正的设备度量性能非常重要,因为每个处理器具备不同的特性。只有 Multi-Add 的理论数字是不够的。
性能度量本身并不是很难,无需训练模型。你可以使用非训练模型,轻松找到性能的瓶颈。
原文链接:https://medium.com/vitalify-asia/real-time-deep-learning-in-mobile-application-25cf601a8976
本文为机器之心编译,转载请联系本公众号获得授权。
✄------------------------------------------------
加入机器之心(全职记者/实习生):hr@jiqizhixin.com
投稿或寻求报道:content@jiqizhixin.com
广告&商务合作:bd@jiqizhixin.com
关注公众号:拾黑(shiheibook)了解更多
[广告]赞助链接:
四季很好,只要有你,文娱排行榜:https://www.yaopaiming.com/
让资讯触达的更精准有趣:https://www.0xu.cn/
随时掌握互联网精彩
- 1 中国减贫成果激励着许多国家 7940288
- 2 微信或史诗级“瘦身” 内存有救了 7986421
- 3 网红夫妻车上直播时双双遇难 7807648
- 4 “互联网发展报告”划重点 7764406
- 5 中国对日本等国试行免签 7684396
- 6 旺仔牛奶疑喝出老鼠?公司高管回应 7584048
- 7 女生半裸遭男保洁刷卡闯入 酒店回应 7472713
- 8 中方回应俄军对乌测试新型中程导弹 7344070
- 9 女教师疑出轨学生 聊天记录曝光 7275544
- 10 相约乌镇峰会 共话“智能向善” 7171191