AI模型在移動裝置的部署

2021-10-25 14:05:55 字數 1839 閱讀 5505

近年來,隨著ai技術的快速發展,ai模型部署到移動端裝置的需求越來越強烈。ai模型部署到移動端裝置,能帶來諸多好處:

對於公司而言,無需為ai模型部署雲端伺服器,能夠大幅度降低公司的運營和服務成本;

然而,ai模型在移動端裝置部署,卻面臨如下挑戰和限制:

移動端裝置運算能力有限,儘管現在的移動端裝置的cpu、gpu、npu能提供強大的運算能力,但相對ai模型來說,移動端裝置的運算仍然不足,一些雲端的模型,無法在移動裝置上正常執行,即使能執行,使用者體驗也會打折扣;

移動端裝置無法為ai模型提供足夠的記憶體,ai模型除了運算複雜、模型過大外,對記憶體的消耗,小則幾個gb,大小十幾個gb;

因此,要將ai模型成功部署到移動端裝置,並提供很好的使用者體驗,需要從模型輕量級設計、模型轉換、模型量化以及推理加速等方面不斷探索和優化。

模型輕量級設計

ai模型在模型結構設計階段,應該根據移動端裝置的硬體特性進行設計,在滿足模型的效能前提下,模型的層數和每個層的通道數盡量小。卷積層的卷積核大小盡量小,不宜大量使用5x5、7x7,以3x3和1x1為主。模型輕量級設計可參考mobilenet和shufflenet。mobilenet是google面向移動端裝置推出的輕量級模型,已經經歷了三個版本的迭代。mobilenet v1模型的核心思想是將原來標準的卷積操作因式分解成乙個depthwise convolution和乙個1x1的pointwise convolution操作;mobilenet v2在v1的基礎上引入了殘差結構,擴充了維度,並且在輸出端pointwise卷積採用了線性啟用;mobilenet v3採用了neural architecture search(nas),引入基於squeeze and excitation結構的輕量級注意力模型。shufflenet是曠視科技提出的輕量級模型,並經過了二個版本迭代。shufflenet v1的核心採用了兩種操作:pointwise group convolution和channel shuffle,在保持精度的同時大大降低了模型的計算量;shufflenet v2則根據相同的flops(float-point operations)情況下模型速度差別很大的現象,指出記憶體訪問損失時間(mac)和flops共同決定實際落地時訓練和執行的速度。

模型轉換

當前,主流的深度學習開源訓練框架有tensorflow、pytorch等,tensorflow憑藉先發優勢和完整的社群,在工業界得到廣泛的應用,而pytorch借助其易用性和不錯的效能,在學術界的影響力已超越了tensorflow。雖然tensorflow和pytorch均提供了移動端版本,但推理速度有限,不能滿足移動端對推理速度的要求。經過幾年的發展,移動端的推理框架已經形成群雄爭霸的區域性。當前主流的移動端推理框架有ncnn、mace、mnn、tnn。

mace是小公尺公司推出的乙個專為移動端異構計算平台的神經網路計算框架,主要從效能、功耗、系統響應記憶體占用、模型加密與保護、硬體支援範圍進行了專門的優化。

移動端推理框架ncnn、mace、mnn、tnn,並不能直接相容tensorflow、pytorch的模型,而需要先將tensorflow、pytorch轉換成onnx(open neural network exchange),再將onnx轉換到ncnn、mace、mnn、tnn所支援的模型。onnx是乙個用於表示深度學習模型的標準,可使模型在不同框架之間進行轉移。

移動端部署

通過onnx將tensorflow、pytorch轉換至ncnn、mace、mnn或tnn,根據ios或android,編譯移動端推理框架的庫。為了進一步追求模型的推理速度,可利用推理框架對模型進行卷積層與啟用層融合,減小網路層間的io開銷;也可將float32進行int8量化,在不降低模型的精度前提下,理論上可將模型大小縮減4倍,推理速度提高2~3倍的提高。

活體檢測在移動端模型部署

首先是前端人臉活體檢測技術,需要支援 android ios 平台,在客戶端通過前端指令,通過眨眼 張嘴 搖頭 點頭等組合動作,確保操作的為真實活體人臉。提取人臉的多處特徵點,分別代表眼睛 耳朵 鼻子 臉頰和嘴巴等主要人臉五官,監測眨眼 微笑 張嘴 左轉 右轉 抬頭 低頭 左擺 右擺等幾個動作。比如...

滴滴推理引擎IFX 千萬規模裝置下AI部署實踐

隨著人工智慧技術的發展,深度學習技術在工業界得到了廣泛的應用。資料 演算法 算力三個維度的協同發展,逐步將 ai 推向成熟期,並且滲透到生活的方方面面。在服務業務的過程中,我們發現純粹的推理引擎已經很難滿足業務高效的發展,因此,我們對平台進行了逐步的迭代與公升級,將其分為 4 層結構 接入層,軟體層...

移動裝置的尺寸

1 point 是物理單位 或者稱作磅 1point 1 72 英吋 1英吋是2.54厘公尺 2 pixel的物理尺寸是不固定的 3 dpi dots per inch,dot在顯示器裡指顯示器的物理畫素 或者叫實際的畫素 每英吋的點數 一般指每英吋的畫素數 如果值是72 那麼在這個裝置裡 1 po...