一、常用移动端深度学习框架

深度学习发展很快,最近又出现了几个新的移动端前向框架,例如TengineTVM.
我们还没有对这两个框架进行深入研究,但是在对应的wiki中,可以看到这两个框架的速度对于现有框架都具有一定优势,通过短暂的了解,Tengine还是很不错的,支持op跟模型种类都比较丰富,还支持GPU运算。感兴趣的读者可以多了解一下。

———————— 2018.12.07 分割线 ————————

各大公司开源了自己的移动端深度学习框架,其中包括TensorFlow Lite、Caffe2、MACE、paddle-mobile(MDL)、FeatherCNN、NCNN等。我们参考开源的测试结果,结合自己整理的数据,针对主流的移动端深度学习框架进行简单对比及介绍。

框架机构支持平台StarsForks
Caffe2FacebookARM8270*2080*
TF_liteGoogleARM**
MACEXiaomiARM/DSP/GPU2442412
paddle-mobileBaiduARM/GPU4038774
FeatherCNNTencentARM658170
NCNNTencentARM46061163

二、性能对比 (截至2018.09)

1. NCNN / FeatherCNN / MACE

CPU:kryo&2.15GHz*2 (ms)

框架SqueezeNet_v1.1MobileNet_v1ResNet18
NCNN47.6468.71142.28
FeatherCNN36.3958.92100.13
MACE42.3765.18160.7

2. paddle-mobile (MDL)

CPU:高通835 (ms)

框架squeezenetmobilenet_v1googlenet_v1
1 Thread82.41105.43341.25
2 Threads56.1762.75233.35
4 Threads36.4537.13158.55

三、框架评价

框架集成成本库文件大小模型支持程度文档完整程度速度
caffe2一般良好优秀良好一般
TF_Lite一般良好优秀良好优秀
MACE良好优秀良好良好优秀
MDL优秀优秀良好良好良好
FeatherCNN良好优秀良好良好优秀
NCNN优秀优秀良好优秀优秀

四、几款移动端深度学习框架分析

移动端的框架,基本不支持训练,只支持前向推理。

1.腾讯的FeatherCNN和ncnn

这两个框架都是腾讯出的,FeatherCNN来自腾讯AI平台部,ncnn来自腾讯优图。

重点是:都开源,都只支持CPU

ncnn开源早点,文档、相关代码丰富一些,使用者相对多一些。FeatherCNN开源晚,底子很好,从测试结果看,速度具有微弱优势。

2.百度的 paddle-mobile(MDL)

MDL可以支持CPU和GPU,FPGA在开发中。

3.小米的 MACE

它有几个特点:异构加速、汇编级优化、支持各种框架的模型转换。

小米支持的GPU不限于高通,这点很通用,很好,比如瑞芯微的RK3299就可以同时发挥出cpu和GPU的好处来。

4.其它

在移动端,caffe2、tensorflow lite都可以考虑,只是可能没有以上的框架效率高。

另外据说支付宝有xNN的深度框架,商汤有PPL框架,这两个都是企业自用没有开源。

国内杭州九言科技的开源方案,用的人不多,可以参考。

5.总结

上面的大部分框架都是主要面向android的,但是用于arm-Linux也是可以的。

现在越来越多的厂商开源移动端的深度学习框架,对于从业者是好事,有更多的选择,不用从头造轮子。

相信将来会有更多的技术手段用于移动端部署深度学习网络,包括模型压缩、异构加速、汇编优化等。

五、推荐框架

针对目前开源的移动端深度学习前向框架,结合我们使用、测试的结果,我们推荐以下几个框架。

1.NCNN

第一个高效使用的移动端开源库,支持模型丰富,更新快,文档逐渐完善,被大家采用较多,遇到坑相对少。

2.MACE

性能优秀,支持GPU,但是刚刚开源,可能会遇到一些开发问题。

3.MDL

百度出品,一定的品质保证,更新较快。

参考资料

移动端深度学习框架小结

NCNN性能分析

NCNN性能对比

MACE、NCNN、FeatherCNN性能对比