大家好,继之前的12大深度学习开源框架之后,我们准备开通新的专栏《移动端DL框架》,这是第一篇文章,先来做一个总体的介绍,更多的细节可以关注以后的文章。
在这个专栏中,我们会介绍与移动端的模型训练和部署有关的框架的使用。
作者&编辑 | 言有三
深度学习模型要落地,比如要部署到手机等移动端平台,之前给大家介绍的用于训练的框架就不能直接使用了,我们需要相应的移动端框架,目前国内外各大公司纷纷开源自家的框架。
1 TensorFlow Lite
这是Google在2017年I/O开发者大会上开源的将TensorFlow训练好的模型迁移到Android App的框架,地址和一些学习资源如下:
TensorFlow Lite使用Android Neural Networks API,默认调用CPU,目前最新的版本已经支持GPU。
项目地址和相关学习资源如下。
https://tensorflow.google.cn/lite/
https://github.com/amitshekhariitbhu/Android-TensorFlow-Lite-Example
2 Core ML
Core ML是2017年Apple公司在WWDC上与iOS11同时发布的移动端机器学习框架,底层使用Accelerate和Metal分别调用CPU和GPU。Core ML需要将你训练好的模型转化为Core ML model,它的使用流程如下:
在一年之后,也就是2018年WWDC上,Apple发布了Core ML 2,主要改进就是通过权重量化等技术优化模型的大小,使用新的Batch Predict API提高模型的预测速度,以及容许开发人员使用MLCustomLayer定制自己的Core ML模型。
项目地址和相关学习资料如下:
https://developer.apple.com/documentation/coreml
https://github.com/likedan/Awesome-CoreML-Models
3 Caffe2
Caffe2是facebook在2017年发布的一个跨平台的框架,不仅仅支持Windows,Linux,Macos三大桌面系统,也支持移动端iOS,Android,可以说是集训练和推理于一身。
Caffe2本来就是基于caffe开发的,Caffe基于C++开发,所以可以很自然地移植到移动端,目前Caffe2已经全部并入Pytorch。两者的区别就是PyTorch是为研究而开发,更加灵活。Caffe2是专为移动生产环境而开发,更加高效。
项目地址以及其相关的model zoo地址如下。
https://github.com/facebookarchive/caffe2
https://caffe2.ai/docs/zoo.html
https://github.com/caffe2/models
4 NCNN
ncnn是2017年腾讯优图实验室开源的移动端框架,使用C++ 实现,支持Android和IOS两大平台。
ncnn已经被用于腾讯生态中的多款产品,包括微信,天天P图等。
项目地址和相关学习资料如下。
https://github.com/Tencent/ncnn
https://github.com/BUG1989/caffe-int8-convert-tools.git
5 Paddle-Mobile
Paddle-Mobile是2017年百度PaddlePaddle组织下的移动端深度学习开源框架,当时叫做mobile-deep-learning(MDL)。支持安卓和ios平台,CPU和GPU使用,提供量化工具。
可以直接使用Paddle Fluid训练好的模型,也可以将Caffe模型进行转化,或者使用ONNX格式的模型。
项目地址如下:
https://github.com/PaddlePaddle/paddle-mobile
https://github.com/PaddlePaddle/Paddle
6 QNNPACK
QNNPACK是Facebook在2018年发布的int8量化低精度高性能开源框架,全称Quantized Neural Network PACKage,用于手机端神经网络计算的加速,已经被整合到PyTorch 1.0中,在Caffe2里就能直接使用。
这个框架可以为很多运算加速,比如DW卷积 (Depthwise Convolution) ,目前支持的列表如下:
项目地址如下。
https://github.com/pytorch/QNNPACK
7 MACE
MACE是2018年小米在开源中国开源世界高峰论坛中宣布开源的移动端框架,以OpenCL和汇编作为底层算子,提供了异构加速可以方便在不同的硬件上运行模型,同时支持各种框架的模型转换。
项目地址和相关学习资源如下:
https://github.com/XiaoMi/mace
https://github.com/XiaoMi/mace-models
8 MNN
MNN是2019年阿里开源的移动端框架,不依赖第三方计算库,使用汇编实现核心运算,支持Tensorflow、Caffe、ONNX等主流模型文件格式,支持CNN、RNN、GAN等常用网络。作为后起之秀,自然是吸取了前面开源的这些移动端推理框架的所有优点。
已经用于阿里的淘宝,优酷等多个应用,覆盖短视频、搜索推荐等场景。
项目地址和学习资源如下:
https://github.com/alibaba/MNN
9 其他
除了上面这些正式发布的开源框架,还有一些其他的框架,比如不开源的骁龙的官方SDK SNPE,主要支持自家的DSP、GPU和CPU。比如腾讯另一个团队开源的featurecnn。
还有很早就存在的GitHub项目caffe-android-lib,用于将Caffe往移动端进行移植,其实各家AILab应该自己都会有一套这样的工具。
以及caffe量化工具包caffe-int8-convert-tools等。
https://github.com/sh1r0/caffe-android-lib
https://github.com/BUG1989/caffe-int8-convert-tools
这一次先让大家对移动端的深度学习框架有一个印象,后面我们会一个一个进行学习,敬请期待。
相关文章:
第一篇:【caffe速成】caffe图像分类从模型自定义到测试
第二篇:【tensorflow速成】Tensorflow图像分类从模型自定义到测试
第三篇:【pytorch速成】Pytorch图像分类从模型自定义到测试
第四篇:【paddlepaddle速成】paddlepaddle图像分类从模型自定义到测试
第五篇:【Keras速成】Keras图像分类从模型自定义到测试
第六篇:【mxnet速成】mxnet图像分类从模型自定义到测试
第八篇:【chainer速成】chainer图像分类从模型自定义到测试
第九篇:【DL4J速成】Deeplearning4j图像分类从模型自定义到测试
第十篇:【MatConvnet速成】MatConvnet图像分类从模型自定义到测试
第十一篇:【Lasagne速成】Lasagne/Theano图像分类从模型自定义到测试
第十二篇:【darknet速成】Darknet图像分类从模型自定义到测试
如果想加入我们,后台留言吧
转载文章请后台联系
侵权必究
技术交流请移步知识星球
更多请关注知乎专栏《有三AI学院》和公众号《有三AI》
网友评论