移动端深度学习框架小结
---------------- 2018.12.07 分割线 ----------------
各大公司开源了自己的移动端深度学习框架,其中包括TensorFlow Lite、Caffe2、MACE、paddle-mobile(MDL)、FeatherCNN、NCNN等。我们参考开源的测试结果,结合自己整理的数据,针对主流的异动单深度学习框架进行简单对比及介绍。
框架 | 机构 | 支持平台 | Stars | Forks |
---|---|---|---|---|
Caffe2 | ARM | 8270* | 2080* | |
TF_lite | 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)
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 |
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 | 优秀 | 优秀 | 良好 | 优秀 | 优秀 |
四、几款移动端深度学习框架分析
移动端的框架,基本不支持训练,只支持前向推理。
这两个框架都是腾讯出的,FeatherCNN来自腾讯AI平台部,ncnn来自腾讯优图。
重点是:都开源,都只支持CPU
ncnn开源早点,文档、相关代码丰富一些,使用者相对多一些。FeatherCNN开源晚,底子很好,从测试结果看,速度具有微弱优势。
MDL可以支持CPU和GPU,FPGA在开发中。
它有几个特点:异构加速、汇编级优化、支持各种框架的模型转换。
小米支持的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刚开源,可能还有不少坑。
相信将来会有更多的技术手段用于移动端部署深度学习网络,包括模型压缩、异构加速、汇编优化等。