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