移动端深度学习框架小结

---------------- 2018.12.07 分割线 ----------------

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

框架 机构 支持平台 Stars Forks
Caffe2 Facebook ARM 8270* 2080*
TF_lite Google ARM * *
MACE Xiaomi ARM/DSP/GPU 2442 412
paddle-mobile Baidu ARM/GPU 4038 774
FeatherCNN Tencent ARM 658 170
NCNN Tencent ARM 4606 1163

二、性能对比 (截至2018.09)

1. NCNN / FeatherCNN / MACE

CPU:kryo&2.15GHz*2 (ms)

框架 SqueezeNet_v1.1 MobileNet_v1 ResNet18
NCNN 47.64 68.71 142.28
FeatherCNN 36.39 58.92 100.13
MACE 42.37 65.18 160.7

2. paddle-mobile (MDL)

CPU:高通835 (ms)

框架 squeezenet mobilenet_v1 googlenet_v1
1 Thread 82.41 105.43 341.25
2 Threads 56.17 62.75 233.35
4 Threads 36.45 37.13 158.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的好处来。

 

 

 

1. 起因

昨天看到小米开源了深度学习框架MACE(https://github.com/XiaoMi/mace) 
看到它有几个特点:异构加速、汇编级优化、支持各种框架的模型转换。

整体来看,料很足,特别是异构的支持,非常有诚意。 
有了异构,就可以在CPU、GPU和DSP上跑不同的模型,实现真正的生产部署,比如人脸检测、人脸识别和人脸跟踪,可以同时跑在不同的硬件上。小米支持的GPU不限于高通,这点很通用,很好,比如瑞芯微的RK3299就可以同时发挥出cpu和GPU的好处来。

看到知乎上也有讨论:如何评价小米开源AI框架MACE?

贴张图 

移动端深度学习框架小结

移动端深度学习框架小结

 

2. 说说其它几款移动端深度学习框架

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

2.1 SNPE

这是骁龙的官方SDK,不开源。主要支持自家的DSP、GPU和CPU。

由于对DSP的支持,使得骁龙在没有NPU的情况下没有被华为甩太远。而且只要后续DSP够强,甩开NPU也未可知。

2.2 腾讯的FeatherCNN和ncnn

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

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

ncnn开源早点,性能上有微弱优势(当前是201806),用的人多点。FeatherCNN开源晚,底子很好。

github: FeatherCNN, ncnn

知乎讨论:

如何评价腾讯开源高性能神经网络计算库 FeatherCNN?

ncnn与tensorflow lite相比有什么特有什么特点?

2.3 百度的mobile-deep-learning(MDL)

我不是很了解,主要从知乎和github上了解的。 
看样子是支持cpu和gpu的,没看到DSP。

开源地址:https://github.com/baidu/mobile-deep-learning

知乎讨论(如何评价百度刚刚开源的mobile-deep-learning?)上,有人说它有很重的抄袭caffe的痕迹。

2.4 其它

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

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

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

3. 总结

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

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

我个人比较欣赏ncnn和小米的MACE,比较欣赏其异构加速能力,只是MACE刚开源,可能还有不少坑。

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