當前位置:
首頁 > 知識 > 小米開源移動端深度學習框架MACE:可轉換TensorFlow模型

小米開源移動端深度學習框架MACE:可轉換TensorFlow模型

選自GitHub

機器之心編譯

參與:思源、李亞洲

6 月 28 日,小米首席架構師,人工智慧與雲平台副總裁崔寶秋在 2018(第十三屆)開源中國開源世界高峰論壇上宣布,正式開源小米移動端深度學習框架 MACE。該框架採用與 Caffe2 類似的描述文件定義模型,因此它能非常便捷地部署移動端應用。

項目地址:https://github.com/XiaoMi/mace

文檔地址:https://mace.readthedocs.io/en/latest/

Mobile AI Compute Engine (MACE) 是一個專為移動端異構計算平台優化的神經網路計算框架。目前該框架為 TensorFlow 和 Caffe 模型提供轉換工具,並且其它框架定義的模型很快也能得到支持。下圖展示了該計算框架的整體結構:

據 Github 項目介紹,小米的 MACE 主要從以下的角度做了專門的優化:

性能:代碼經過 NEON 指令,OpenCL 以及 Hexagon HVX 專門優化,並且採用 Winograd 演算法來進行卷積操作的加速。此外,還對啟動速度進行了專門的優化。

功耗:支持晶元的功耗管理,例如 ARM 的 big.LITTLE 調度,以及高通 Adreno GPU 功耗選項。

系統響應:支持自動拆解長時間的 OpenCL 計算任務,來保證 UI 渲染任務能夠做到較好的搶佔調度,從而保證系統 UI 的相應和用戶體驗。

內存佔用:通過運用內存依賴分析技術,以及內存復用,減少內存的佔用。另外,保持盡量少的外部 依賴,保證代碼尺寸精簡。

模型加密與保護:模型保護是重要設計目標之一。支持將模型轉換成 C++代碼,以及關鍵常量字元混淆,增加逆向的難度。

硬體支持範圍:支持高通,聯發科,以及松果等系列晶元的 CPU,GPU 與 DSP(目前僅支持 Hexagon) 計算加速。同時支持在具有 POSIX 介面的系統的 CPU 上運行。

模型格式

MACE 定義的定製化模型格式與 Caffe2 的類似,MACE 模型能由 TensorFlow 和 Caffe 輸出的模型轉化。YAML 文件詳細描述了模型部署細節,後文將展示該文件的示例。

模型載入

MACE 模型格式包含兩部分:定義模型的計算圖和模型參數張量。計算圖部分利用 Protocol Buffers 做序列化,而所有的模型參數張量級聯在一起成為一個連續位元組數組,我們稱這個數組為張量數據。在模型圖中,張量數據的偏移(offsets)和長度都會被記錄下來。

可用以下三種方式載入模型:

模型計算圖和張量數據都通過外部動態地載入(默認從文件系統載入,但用戶可以自由選擇它們的實現,例如使用壓縮或加密)。這種方式提供最靈活的模型部署方式,但是模型安全也是最低的。

模型計算圖和張量數據都轉化為 C++代碼,並通過執行經編譯的代碼而載入。這種方式能提供最強的模型防護和最簡單的部署。

將模型計算圖轉換為 C++代碼,並以第二種方式構建,而張量數據將在外部以第一種方式載入。

部署文件示例

部署模型到移動端的第一步就是創建 YAML 文件,該 YAML 文件描述了模型部署的情況,每一個文件都將生成一個靜態庫(如果指定了多個 ABIs,那麼每個都會有一個靜態庫)。部署文件可以包含一個或多個模型,例如智能相機應用可能包含人臉識別、目標識別和語音識別模型,它們可以在一個部署文件中定義。

以下展示了用於安卓示例應用的部署文件:

模型與性能評測

MACE Model Zoo 包含若干常用模型,不僅包括 MobileNet、SqueezeNet、ResNet-50 和 Inception-v3 等常見的卷積神經網路,同時還有風格遷移等應用。MACE Model Zoo 會對一組手機進行每日構建,最新的性能評測結果可以從項目的持續集成頁面獲取。

MACE Model Zoo 地址:https://github.com/XiaoMi/mace-models

本文為機器之心編譯,轉載請聯繫本公眾號獲得授權。

------------------------------------------------


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 機器之心 的精彩文章:

世界上最好的語言PHP:OpenCV與計算機視覺已在我掌控之下
44篇論文強勢進擊CVPR 2018,商湯科技的研究員都在做哪些研究?

TAG:機器之心 |