久久ER99热精品一区二区-久久精品99国产精品日本-久久精品免费一区二区三区-久久综合九色综合欧美狠狠

博客專欄

EEPW首頁 > 博客 > 內存瓶頸和計算負載問題一舉突破?韓松團隊提出MUCNetV2:解鎖MCU端新紀錄!

內存瓶頸和計算負載問題一舉突破?韓松團隊提出MUCNetV2:解鎖MCU端新紀錄!

發布人:計算機視覺工坊 時間:2021-11-06 來源:工程師 發布文章

以下文章來源于極市平臺 ,作者CV開發者都愛看的

作者丨happy

編輯丨極市平臺


導讀

本文是MIT韓松團隊繼MCUNet之后關于MCU 端TinyDL的又一次突破,已被NeurIPS2021接收。所提MCUNetV2取得了MCU端新的ImageNet分類記錄71.8;更重要的是解鎖了MCU端執行稠密預測任務的可能性,如目標檢測取得了比已有方案高16.9%mAP@VOC的指標。 

1.jpg

論文地址:https://arxiv.org/abs/2110.15352

Slides地址:https://hanlab.mit.edu/projects/tinyml/mcunet/assets/MCUNetV2/slides.pdf

項目地址:https://hanlab.mit.edu/projects/tinyml/mcunet/

本文是MIT韓松團隊繼MCUNet之后關于MCU端TinyDL的又一次突破,已被NeurIPS2021接收。針對CNN在MCU端存在的不平衡內存分布問題,提出一種patch-by-patch 推理機制;與此同時,還提出recptive field redistribution 調整感受野與FLOPs以降低整體計算負載。所提MCUNetV2取得了MCU端新的ImageNet分類記錄71.8;更重要的是解鎖了MCU端執行稠密預測任務的可能性,如目標檢測取得了比已有方案高16.9%mAP@VOC的指標。本研究極大程度上解決了TinyDL的內存瓶頸問題,為圖像分類之外的其他視覺應用鋪平了道路 。

Abstract

由于有限的內存,MCU(MicroController Units, MCU)端的TinyDL極具挑戰性。我們發現:內存瓶頸源于CNN設計導致的內存分布不平衡 ,即網絡的前幾個模塊具有比其他模塊大的多的內存占用。

為緩解該問題,我們提出一種廣義的patch-by-patch 推理機制,它僅對特征圖的局部區域進行處理,大幅降低了峰值內存。然而,常規的實現方式會帶來重疊塊與計算復雜問題。我們進一步提出了recptive field redistribution 調整感受野與FLOPs以降低整體計算負載。人工方式重分布感受野無疑非常困難!我們采用NAS對網絡架構與推理機制進行聯合優化得到了本文的MCUNetV2。所提推理機制能大幅降低峰值內存達4-8倍。

所推MCUNetV2取得了MCU端新的ImageNet分類記錄71.8% ;更重要的是,MCUNetV2解鎖了MCU端執行稠密預測任務的可能性,如目標檢測取得了比已有方案高16.9%mAP@VOC的指標。本研究極大程度上解決了TinyDL的內存瓶頸問題,為圖像分類之外的其他視覺應用鋪平了道路 。本文貢獻可以用下圖描述。

2.jpg

Memory Bottleneck

3.gif

Imbalanced memory distribution  以MobileNetV2為例,上圖提供了每個模塊的峰值峰值內存占用(注:上述信息通過int8度量得到)。我們可看到非常清晰的內存占用分布不平衡 :前5個模塊具有非常大的峰值內存,超出了MCUs內存約束,而其他13個模塊則能輕易滿足256kB內存約束 。我們同樣檢查了其他高效網絡架構(包含針對MCU而設計的MCUNet)并發現了類似的現象。

我們發現:該現象適用于大部分單分支與殘差CNN架構。每個階段,圖像分類率降低一半,通道數僅乘2,故特征尺寸逐漸減小。因此,內存瓶頸傾向于出現在網絡的早期階段 。

Challenges and Opportunities  這種內存分布不平衡問題極大限制了MCU端的模型容量與輸入分辨率。為適應初始階段內存密集問題,整個網絡都需要進行縮小,哪怕大部分網絡已經具有非常小的內存占用。這也就使得分辨率敏感的任務(如目標檢測)難以落地MCU端。以MobileNetV2的第一個卷積為例,輸入通道為3,輸出通道維32,stride=2,當輸入圖像分辨率為時需要占用的內存為(注:int8量化),這是當前MCU所無法滿足的。另一方面,如果我們能找到一種方式跳過 內存密集階段,我們就可以大幅降低整個網絡的峰值內存,進而有了更大的優化空間。

MCUNetV2: Memory-Efficient Patch-based Inference

Patch-based Inference

現有的推理框架(如TFLite Micro, TinyEngine, MicroTVM)采用layer-by-layer方式運行。對于每個卷積層,推理庫首先在SRAM中開辟輸入與輸出buffer,完成計算后釋放輸入buffer。這種處理機制更易于進行推理優化(比如im2col, tiling),但是SRAM必須保留完整的輸入與輸出buffer。

我們提出一種patch-based inference 機制打破初始層的內存瓶頸問題,見下圖。本文所提patch-based推理則在內存密集階段以patch-by-patch方式運行 (見下圖右)。模型每次僅在小比例區域(比完整區域小10倍)進行計算,這可以有效降低峰值內存占用。當完成該部分后,網絡的其他具有較小峰值內存的模塊則采用常規的layer-by-layer 方式運行。

4.jpg

以上圖stride=1/2的圖示為例,對于逐層計算方式,第一層具有大輸入輸出尺寸,導致非常高內存占用。通過空域拆分計算,我們以patch-by-patch方式開辟buffer并進行計算,此時我們僅需保存一個塊的buffer而非完整特征圖。

Computation overhead  內存節省的代價來自計算負載提升。為與逐層推理相同的輸出結果,非重疊輸出塊需要對應了重疊輸入塊(見上圖b陰影區域)。這種重復性的計算會提升網絡整體10-17%計算量,這是低功耗邊緣設備所不期望的。

Redistributing the Receptive Field

計算復雜度與patch方案初始階段的感受野相關,考慮到patch階段的輸出,越大的感受野對應越大的輸入分辨率,進而導致更多的重疊區域與重復計算。對于MobileNetV2來說,如果我們僅考慮下采樣,每個輸入塊的邊長為。當提升感受野時,每個輸入塊需要采用尺寸,導致更大的重疊區域。

我們提出了重分布(redistribute)感受野以降低計算復雜度,其基本思想在于:

降低patch階段的感受野;

提升layer階段的感受野。

降低初始階段的感受野有助于降低patch部分的輸入尺寸與重復計算。然而,某些任務會因感受野較小導致性能下降。因此,我們進一步提升layer部分的感受野以補償性能損失。

5.jpg

上圖給出了以MobileNetV2為例調整前后的架構對比圖。在patch推理階段,我們采用更小的核與更少的模塊,而在layer推理階段提升模塊的數量。

6.jpg

上表給出了兩種架構的性能對比,可以看到:

對于兩種架構來說,patch推理可以降低SRAM峰值達8倍;

原始MobileNetV2設計會導致patch部分42%的計算量增加,整體增加10%;而調整的架構輸入尺寸從75下降到了63,整體計算量僅增加3%,模型性能保持同等水平。

Joint Optimization

感受野重分布使得我們可以以績效的計算提升享受大幅內存降低,但是需要對不同架構采用逐個手工調整。峰值內存降低也為架構設計帶來了更大的自由度。

7.png

為探索更大的設計空間,我們采用neural architecture與inference scheduling自動聯合優化方案(可參考上圖),旨在獲得滿足所有約束且具有最高精度的架構。

Backbone optimization  我們參考MCUNet采用了類MnasNet搜索空間,而類MobileNetV3搜索空間因Swish激活函數問題導致難以量化而棄用。作者認為:最佳的搜索空間配置不僅硬件相關,同樣任務相關。因此,我們還將r與w納入搜索空間。

Inference scheduling optimization  給定模型與硬件約束,我們將尋找最佳推理機制。我們的推理引擎基于MCUnet中的TinyEngine擴展而來,除了TinyEngine中已有的優化外,我們還需要確定塊數量p與模塊數量n以執行patch推理,確保滿足SRAM約束。

Joint Search  我們需要協同設計骨干優化與推理機制。比如,給定相同約束,我們可以選更小的模型以layer方式推理,或更大的模塊以patch方式推理。因此,我們兩者納入優化并采用進化搜索尋找滿足約束的最佳組合。

Experiments

Memory Profiling  內存占用是獨立于推理框架的,為更好的比例,我們研究了兩種分析設置。

8.jpg

上圖給出了Analytic profiling的結果,它僅與架構有關而與推理框架無關??梢钥吹剑?/p>

patch推理可以大幅降低峰值內存達3.7-8.0x,僅增加8-17%計算量;

對于MobileNetV2,通過重分布感受野可以將額外的計算量從10%降到3%;

內存節省與計算降低與網絡架構相關,故網絡架構與推理引擎的協同設計很有必要 。

9.jpg

上圖給出了on-device profiling的結果,它不僅與架構相關還與硬件相關??梢钥吹剑簆atch推理可以降低SRAM峰值內存達4-6x 。某些模型可能會因初始階段的低硬件利用導致更長的推理延遲,但合理的架構設計可以將額外推理延遲降低到4%,相比內存降低完全可以忽略。

Tiny Image Classification

10.jpg

上表給出了ImageNet上的分類性能,從中可以看到:

在256kB SRAM/1MB Flash硬件下,MCUNetV2具有比MCUnet高4.6%top1精度、低18%的峰值SRAM的性能。

在512kB SRAM/2MB Flash硬件下,MCUNet取得了新的ImageNet記錄71.8%(限商用MCU),以3.3%超出了此前同等量化策略方案。

Tiny Object Detection

11.jpg

上表為Pascal VOC數據機上的檢測性能對比,從中可以看到:

在H7 MCU上,相比MCUNet,MCUNetV2-H7的性能提升達16.7%mAP;

在更廉價的M4MCU上,MCUNetV2-M4仍可提升13.2%mAP指標,峰值SRAM降低1.9x。

MUCNetV2-M4與MCUNet具有相似的計算量,但更高的性能。這是因為:patch推理導致的擴展搜索空間使得我們可以在更大的輸入分辨率與更小的模型中作出更佳的選擇。

12.jpg

上表給出了WIDER FACE數據集上的性能對比,從中可以看到:

在不同尺度下,MCUNetV2均優于現有方案;

MCUNetV2-L取得了同等檢測性能,但峰值內存被RNNPool-Face-C小3.4x,比LFFD小9.9x;計算量分別小1.6x與8.4x;

MCUNetV2-S同樣具有比RNNPool-Face-A與EagleEye小1.8x的峰值內存。

下圖還給出了檢測效果的對比,MCUNetV2的魯棒性更強。

13.jpg

本文僅做學術分享,如有侵權,請聯系刪文。

*博客內容為網友個人發布,僅代表博主個人觀點,如有侵權請聯系工作人員刪除。



關鍵詞: AI

相關推薦

技術專區

關閉