1. 程式人生 > >常用移動端深度學習框架

常用移動端深度學習框架

一、常用移動端深度學習框架

深度學習發展很快,最近又出現了幾個新的移動端前向框架,例如TengineTVM.
我們還沒有對這兩個框架進行深入研究,但是在對應的wiki中,可以看到這兩個框架的速度對於現有框架都具有一定優勢,通過短暫的瞭解,Tengine還是很不錯的,支援op跟模型種類都比較豐富,還支援GPU運算。感興趣的讀者可以多瞭解一下。

---------------- 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的好處來。

4.其它

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

另外據說支付寶有xNN的深度框架,商湯有PPL框架,這兩個都是企業自用沒有開源。

國內杭州九言科技的開源方案,用的人不多,可以參考。

5.總結

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

現在越來越多的廠商開源移動端的深度學習框架,對於從業者是好事,有更多的選擇,不用從頭造輪子。

相信將來會有更多的技術手段用於移動端部署深度學習網路,包括模型壓縮、異構加速、彙編優化等。

五、推薦框架

針對目前開源的移動端深度學習前向框架,結合我們使用、測試的結果,我們推薦以下幾個框架。

1.NCNN

第一個高效使用的移動端開源庫,支援模型豐富,更新快,文件逐漸完善,被大家採用較多,遇到坑相對少。

2.MACE

效能優秀,支援GPU,但是剛剛開源,可能會遇到一些開發問題。

3.MDL

百度出品,一定的品質保證,更新較快。

參考資料

移動端深度學習框架小結

NCNN效能分析

NCNN效能對比

MACE、NCNN、FeatherCNN效能對比