DAC快速目標檢測算法優化和架構設計優化方案

2020-12-07 電子發燒友

DAC快速目標檢測算法優化和架構設計優化方案

Pynq 發表於 2020-12-03 15:26:17

1. 需求分析

1.1 背景

Design Automation Conference 自動設計大會是全球久負盛譽的產學研交流盛會,也是計算機學會推薦的A類會議之一。2019年第56屆DAC大會在拉斯維加斯舉行。其中系統設計競賽(System Design Contest, SDC)的任務為面向端側設備進行快速的目標檢測。該比賽由Xilinx、大疆和英偉達贊助。該比賽針對比賽方給定無人機視角的訓練數據集(9萬張解析度為360x640的圖片,單目標標註)進行訓練,在比賽方自有的5萬張測試數據集上進行測試。最終檢測精度IoU(Intersection over Union)高、且能量消耗低者勝出。

2018年該比賽第一次舉行,當時提供了Pynq第一代平臺(Zynq7020),由清華大學汪玉教授團隊的曾書霖博士獲得了全球第一名。2019比賽繼續進行,Xilinx將平臺升級到了支持Pynq框架的Ultra96,該平臺搭載了Xilinx UltraScale+ ZU3器件。另一個賽道提供了Nivida的TX2。Ultra96是一款優秀的Xilinx ZYNQ的開發板。其PS側搭載四核ARM Cortex-A53 CPU,主頻為1.5GHz;軟體方面可以使用基於Python的PYNQ框架進行開發。Ultra96平臺以及ZU3的PL側資源如下圖所示。

1.2 動機

為了達到檢測精度與能耗的平衡,我們團隊選擇並優化了面向端側的輕量級神經網絡框架。並針對ZU3的資源限制,精簡了我們團隊設計的一個可以支持通用網絡的DNN加速器(HiPU),將其部署在ZU3的PL側。主要工作分為針對硬體平臺的算法優化和架構設計優化兩部分:

算法上的優化主要有:

1) 選擇ShuffleNet V2作為特徵提取的主框架;

2) 選擇YOLO作為單目標位置的回歸框架;

3) 對神經網絡進行8bit量化。

HiPU的優化主要有:

1) 支持CONV,FC,Dep-wise CONV,Pooling,Ele-wise Add/Mul等操作,峰值算力為268Gops,效率大於80%;

2) 支持Channel shuffle、divide、concat操作,且不消耗額外時間;

3) 提供C、RISC-V彙編接口的API,調度靈活;

4) HiPU完全由PL側實現,不依賴PS側。PS主要工作負載為圖片預處理和結果輸出上。

經過上述優化,我們團隊的設計在比賽方的數據集上測得如下結果:準確率IoU為61.5%;能耗為9537J,幀率為50.91Hz,功率為9.248W。

2. 算法框架設計

2.1 任務分析

本次競賽的訓練集由大疆提供,部分圖片如下圖所示。在確定算法之前,我們團隊首先對訓練數據集的特點進行了分析:

1) 圖片尺寸均為360x640,不需要對圖片進行resize操作進行歸一化;

2) 所有測試圖片均是無人機視角。標定框的大小從36像素到7200像素不等,算法需要支持各種大小的目標檢測;

3) 所有圖片共12大類(95個子類),包括boat (7), building (3), car (24), drone (4), group (2), horse-ride(1), paraglider(1), person (29), riding (17), truck (2), wakeboard(4), whale(1)類別。算法在設計時需要對這12類物體進行分類;

4) 即使測試圖片中出現多個相似的目標,標定框也是指定固定的一個目標。即訓練時需要適當的過擬合。

圖 2 訓練集的部分圖片

2.2 單目標檢測網絡選擇

為滿足移動端的檢測實時性,我們團隊最終選定了YOLO作為基礎檢測算法。並將其中的特徵提取網絡替換為輕量級的ShuffleNet V2,其參數規模略大於1X。如下圖所示為我們定製的單目標檢測網絡,ShuffleDet。

圖 3 ShuffleDet的網絡結構示意圖

2.3 神經網絡的訓練與量化

我們團隊首先在ImageNet數據集上預訓練一個標準的ShuffleNet V2分類網絡。待模型收斂後,將其中的特徵提取部分的參數遷移到ShuffleDet網絡中。使用比賽方的訓練集進行其他層的參數的訓練。

為了適應FPGA的定點運算,待整體參數訓練完成後,需要對所有參數進行量化操作。我們團隊將網絡參數和feature map均量化為8bit定點。

量化過程主要分為以下幾步:
1) 將BN層合併到參數中;
2) 將合併後的參數進行對稱量化;
3) 量化後的參數如果直接使用,精度損失過於嚴重。因此量化後還需要對參數進行fine tune。

如下圖所示為量化操作的示意圖。

圖 4 網絡參數的量化流程

經過量化後,我們使用的ShuffleDet網絡的卷積層數約為74層,權重約為1.94MB,Bias約為78KB。

3. 計算架構框架設計

3.1 HiPU整體介紹

針對賽方提供的計算平臺,我們進行適當的裁剪,以適應ZU3的資源。如下圖所示為裁剪後的HiPU設計框圖,及其特性。HiPU工作在233MHz,其峰值算力為268Gops;採用C/RISC-V彙編作為編程接口,卷積效率平均在80%以上。

圖 5 HiPU的結構框圖與特性

HiPU支持各種常見的NN運算,包括:CONV,FC,Dep-wise CONV,Pooling,Ele-wise Add/Mul等運算。其中FC也可以做到接近100%的計算效率。

HiPU支持channel方向的shuffle,divide,concat操作。當這些操作緊接在卷積運算之後時,可以在硬體上進行合併,不消耗額外的時間。

HiPU可以工作在任何種類的Xilinx FPGA上,不受Zynq架構的限制。

HiPU底層實現矩陣運算,向量運算,以及標量運算。在做好調度的情況下,可以支持任意類型的並行計算。未來將實現稀疏矩陣運算的優化,從而支持高效率的DeCONV運算,feature map稀疏優化。

3.2 HiPU優化點分析

1) 通過層間級聯減少所需的DDR帶寬

HiPU設計性能有兩個重要的方面:一個方面是MAC運算單元的利用率;一個是數據傳輸網絡是否可以匹配MAC所需的數據。其中數據傳輸網絡的限制大多數來自DDR接口。本設計針對DDR接口進行專門的優化。

由於HiPU中SRAM的大小限制,無法將一層feature map的數據完全放在HiPU的SRAM中。採用平常的計算次序則需要將每一層的feature map計算結果返回到DDR中存儲。這樣一來每一層的feature map數據都需要一次DDR的訪問,對DDR的帶寬需求非常大,也會消耗額外的功耗

我們團隊通過層間級聯的方式降低DDR的帶寬需求。以ShuffleNet的bottleneck為分界,從每個bottleneck的輸入處從DDR讀取一行feature map,依次計算完所有的層後,輸出的一行feature map才寫回到DDR。依次計算完所有行。如下圖所示為Module C的層間級聯計算次序。

圖 6 Module-C採用層間級聯計算方式

2) 輸入圖像格式轉換以提升處理效率

HiPU一次並行計算8個輸入channel。然而網絡第一層輸入圖像僅有RGB這3個通道,導致HiPU計算效率僅為3/8。因此,我們團隊針對輸入圖像設計了一個轉換模塊。如果Conv1的kernel的width為3,則將輸入圖像的通道從3擴展到9。最終使得第一層的處理效率從0.38提升到了0.56,其轉換示意圖如下圖所示。

圖 7 輸入圖像在行方向上的轉換

3.3 系統優化設計

1) 圖像解碼與卷積神經網絡計算並行化

由於HiPU僅僅依賴Zynq的PL側的資源進行設計,PS側的資源可以空出來做系統IO相關的工作。我們團隊在處理當前圖片的檢測運算時,在PS側預讀並解碼下一幅圖片,提高處理的並行度,從而使整體檢測幀率從30.3Hz提高到50.9Hz。

如下圖所示為圖像解碼與卷積神經網絡並行化的示意圖。

(a) 並行化之前的工作流程
 

(b) 並行化之後的工作流程 圖 8 圖像解碼與卷積神經網絡並行化的示意圖

2) 使用C代碼加速PS側原來的Python代碼

使用C代碼重構PS側比較耗時的操作,並在Pynq框架中採用ctypes接口調用重構的C代碼:
① 預先計算PL側數據中置信度和bbox坐標的地址指針;
② 找到最大的置信度和對應的BBox的坐標,然後根據相對坐標計算出絕對坐標;

3) 使用門控時鐘降低PL側的能耗

為了降低系統的能量消耗,設計了門控時鐘策略。當HiPU計算完一張圖片的時候自動關閉時鐘,下一張圖片開始計算的時候再激活時鐘。設置這個策略主要基於以下兩個原因:

首先,系統對jpg格式圖片解算的時間不固定,當SD卡型號不固定的時候,其均值在7ms-12ms之間,部分圖片解算時間最大值可以到達100ms;

其次,系統的功耗測量進程和其他額外開銷會佔用一部分的cpu時間,並且PS和PL共享DDR帶寬,這導致了HiPU在166Mhz的時幀率到達約50hz,但是升高HiPU到200Mhz時,系統處理幀率仍然保持在50hz左右。

上述兩個原因會導致HiPU處理時間和圖片jpeg解算時間匹配變得不固定;當HiPU處理圖像時間比圖像解算時間短時, HiPU會「空跑」浪費能量。另外,針對搶佔DDR帶寬的情況,還需繼續優化。

4. 競賽結果分析

如下表所示為DAC19的競賽結果,全球共有58支隊伍註冊了FPGA比賽任務。最終我們團隊獲得了第2名的成績。冠軍為iSmart3,由UIUC、IBM、Inspirit IoT公司聯合組隊,季軍為SystemsETHZ來自ETH Zurich的隊伍。通過與其他團隊的交流,我們團隊使用的神經網絡規模是最大的,優勢是高性能的DNN加速器,遺憾是算法方面的優化還不到位,最終競賽成績如下:

我們設計的ShuffleDet算法同時在TX2平臺上也進行了部署,下表是兩者的分析對比。可以看出8bits量化後造成了0.056的IoU損失(-8.3%),但帶來了28.87的幀率提升(+131%)和8309J的能量減少(-46.56%)。

XJTU-Tripler是由西安交通大學 人工智慧與機器人研究所 任鵬舉副教授所在的認知計算架構小組完成的設計。

團隊成員:趙博然,趙文哲,夏天,陳飛,樊瓏,宗鵬陳,魏亞東,塗志俊,趙之旭,董志偉等

編輯:hfy

打開APP閱讀更多精彩內容

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容圖片侵權或者其他問題,請聯繫本站作侵刪。 侵權投訴

相關焦點

  • 比可微架構搜索DARTS快10倍,第四範式提出優化NAS算法
    然而,由於超級網的建設,其仍然面臨著巨大的計算成本和性能低下的問題。 在本文中,我們提出了一種基於近端迭代(NASP)的高效 NAS 方法。與以往的工作不同,NASP 將搜索過程重新定義為具有離散約束的優化問題和模型複雜度的正則化器。由於新的目標是難以解決的,我們進一步提出了一種高效的算法,由近端啟發法進行優化。
  • 科學家破解了谷歌的量子優化算法
    谷歌為此的短期目標是已經設計出了一種新型的量子增強算法,可以在有真實噪聲的情況下運行。所謂的量子近似優化算法(Quantum Approximate Optimisation Algorithm,簡稱 QAOA)是谷歌目前開發的抗噪聲量子增強算法的基礎。谷歌在量子近似優化算法中採用的這一著名方法引發了廣泛的商業興趣,並激發了全球研究界探索其新穎應用的興趣。
  • 算法優化之道:避開鞍點
    實踐當中,許多流行的優化技術都是基於一階導的優化算法:它們只觀察梯度信息,並沒有明確計算Hessian矩陣。這樣的算法可能會陷入鞍點之中。在文章的剩下部分,我們首先會介紹,收斂於鞍點的可能性是很大的,因為大多數自然目標函數都有指數級的鞍點。然後,我們會討論如何對算法進行優化,讓它能夠嘗試去避開鞍點。
  • 基於多島遺傳算法的新能源叉車轉向橋優化設計
    陳仕勝 陳 餘 王彥博安徽合力股份有限公司 合肥 230601摘 要:以某新能源叉車為研究對象,基於ADAMS 建立其轉向橋運動學模型,進行轉向仿真分析,驗證所建模型的準確性;在此基礎上,在ISight 集成環境下,提出以實際設計要求為約束條件、以轉向節節臂、轉向橋中心夾角、轉向節臂長度及液壓缸偏距為優化變量,建立以外轉角誤差值最小為目標的優化函數,進行基於多島遺傳算法的多學科優化設計
  • 基於C語言的設計流優化語音識別晶片結構設計
    在ASIC中實現複雜DSP算法的要求通常極為苛刻,但採用Frontier的結構合成工具A|RT Designer工具能迅速優化RTL描述,該工具還允許自由選擇備用結構以優化應用設計。  通過應用基於C語言的設計流,能在結構設計階段對新特性進行設計和硬體優化,這能降低50%的矽片面積,通過加快 C語言原型硬體的設計,可以進一步擴展設計的性能以滿足用戶對產品規格的嚴格要求。
  • 即時配送的訂單分配策略:從建模和優化
    通過上述技術和模式的引入,持續改善了用戶體驗和配送成本:訂單的平均配送時長從2015年的41分鐘,下降到32分鐘,進一步縮短至28分鐘,另一方面,在騎手薪資穩步提升的前提下,單均配送成本也有了20%以上的縮減。本文將以外賣場景下上述調度流程中的關鍵問題之一——訂單分配問題為例,闡述該問題的本質特點、模式變遷、方案架構和關鍵要點,為大家在解決業務優化問題上提供一個案例參考。
  • 太陽能系統的優化設計
    對於優化太陽能系統的效率和可靠性而言,一種較新的手段是採用連接到每個太陽能板上的微型逆變器(micro-inverter)。為每塊太陽能面板配備單獨的微型逆變器使得系統可以適應不斷變化的負荷和天氣條件,從而能夠為單塊面板和整個系統提供最佳轉換效率。
  • 資料|MATLAB優化算法案例分析與應用(進階篇)
    書中結合算法分析的理論和流程,詳解了大量的工程案例及其具體的代碼實現,讓讀者可以深入學習和掌握各種算法在相關領域中的具體應用。本書共分兩篇。第1篇為MATLAB常用算法應用設計,包括貝葉斯分類器的數據處理、背景差分的運動目標檢測、小波變換的圖像壓縮、BP的模型優化預測、RLS算法的數據預測、GA優化的BP網絡算法分析、分形維數應用、碳排放約束下的煤炭消費量優化預測、焊縫邊緣檢測算法對比分析、指紋圖像細節特徵提取、多元回歸模型的礦井通風量計算、非線性多混合擬合模型的植被過濾帶計算、伊藤微分方程的布朗運動分析、Q學習的無線體域網路由方法和遺傳算法的公交排班系統分析
  • 基於尺度-時間網格的視頻中物體檢測算法,解決如何優化和平衡視頻...
    基於尺度-時間網格的視頻中物體檢測算法,解決如何優化和平衡視頻物體檢測中精度和速度的難題 李倩 發表於 2018-06-07 17:48:43 在物體檢測與識別領域,香港中文大學-商湯科技聯合實驗室在CVPR
  • GLOBALFOUNDRIES推出用於下一代行動裝置的優化的 FinFET 電晶體架構
    GLOBALFOUNDRIES 14 nm-XM技術將為客戶展現三維 「FinFET」電晶體的性能和功耗優勢,不僅風險更低,而且能夠更快速地推向市場,從而幫助無晶圓廠生態系統在保持其移動市場領先地位的同時,開發新一代智能行動裝置。
  • CVPR2017精彩論文解讀:效果更顯著的模型壓縮算法和泛化優化算法
    但是,目前主流深度學習模型還是基於隨機梯度下降進行優化的。在優化過程中,對深度模型參數(權重矩陣)解的性質並沒有明確的認識和目標。基於以上考慮,本工作通過對深度線性網絡的理論分析及深度非線性網絡的實驗分析,大膽推斷在深度模型的整個優化過程中保持權重矩陣(近似)正交(如圖4所示),從而更有效地實現學習目標,提升網絡的精度和泛化能力。
  • 內容流量管理的關鍵技術:多任務保量優化算法實踐
    另外,不同場景之間相互獨立,每個場景根據自身的目標進行效率和體驗上的優化,但是場景與場景之間流量協同無法通過優化單一場景來完成。 在 P2C 模型基礎上,結合各場景和抽屜的曝光資源約束,給出一種曝光資源約束下的多目標優化保量框架與算法。
  • 技術| 深度解讀最流行的優化算法:梯度下降
    與此同時,最新的深度學習程序庫都包含了各種優化梯度下降的算法(可以參見如 lasagne、caffe 及 Kera 等程序庫的說明文檔)。但它們的算法則不被公開,都作為黑箱優化器被使用,這也就是為什麼它們的優勢和劣勢往往難以被實際地解釋。 本文旨在讓你對不同的優化梯度下降法的算法有一個直觀認識,以幫助你使用這些算法。
  • 數字聯盟採用SpotMax優化用雲方案,雲成本降幅超65%
    此外,隨著數字聯盟DSP業務規模的不斷增長,導致其在流量高峰時需要處理的數據量急劇上升,這不僅要求大量的雲計算資源,也要求系統能夠快速處理相關廣告請求,並具備更好的可拓展性和穩定性。Mobvista集團副總裁兼首席工程架構師蔡超說:「這種情況容易造成用雲成本偏高,優化空間小、且不利於後續採用彈性資源的穩定運行。但如果能優化雲上架構,並採用搶佔式實例代替包年包月固定機器的形式,用雲成本將至少降低一半以上」。
  • ML算法實現10萬高壓非晶矽原子模擬;E2E單階段目標檢測
    機器之心 & ArXiv Weekly Radiostation參與:杜偉、楚航、羅若天本周的重要論文包括牛津大學等機構的學者利用機器學習算法實現 10 萬高壓非晶矽原子的模擬,以及香港大學和字節跳動 AI 實驗室研究者提出的端到端單階段目標檢測器
  • 基於遺傳算法的高頻標籤天線的優化設計
    而標籤天線作為射頻識別系統實現的關鍵部件,它的優化設計對於降低本錢, 減小體積起到重要的作用。低頻和高頻頻段標籤天線的主要形式是線圈。在低頻頻段減小天 線體積的方法主要是在線圈中插進具有高磁導率的鐵氧體材料,這樣就可以進步天線的磁導 率,即可在等效面積變小的情況下得到足夠的開路電壓。高頻頻段主要是採用將天線集成到 晶片上的方法來實現減小體積,降低本錢的目的。
  • 【乾貨】機器學習最常用優化之一——梯度下降優化算法綜述
    梯度下降算法是通過沿著目標函數J(θ)參數θ∈R的梯度(一階導數)相反方向−∇θJ(θ)來不斷更新模型參數來到達目標函數的極小值點(收斂),更新步長為η。而隨機梯度下降算法每次只隨機選擇一個樣本來更新模型參數,因此每次的學習是非常快速的,並且可以進行在線更新。
  • 優化算法——人工蜂群算法(ABC)
    一、人工蜂群算法的介紹 人工蜂群算法(Artificial Bee Colony, ABC)是由Karaboga於2005年提出的一種新穎的基於群智能的全局優化算法
  • Adam 優化算法詳解
    據牛津字典的定義,優化是指最好或最有效地利用一種情況或資源,或者簡單地使自己的事物達到最佳狀態的行為。 通常,如果可以對某事進行數學建模,則很有可能可以對其進行優化。 這在深度學習領域起著至關重要的作用(可能是整個人工智慧),因為您選擇的優化算法可能是在數分鐘,數小時或數天(有時甚至是數周)內獲得高質量結果的區別。
  • 淺析基於優化算法的能量管理控制策略(二)
    優化算法可分為全局優化和實時優化,受算法本身的限制以及採樣時間、模型精度、參數定義等因素的影響,目前這種區分尚不明顯。算法博弈論(Game Theory,GT)凸規劃(Convex Programming,CP)模擬退火是一種受金屬退火過程啟發的方法,該方法通過隨機搜索,顯示目標函數優化的可能最優解的同時保留了符合標準定義的次優解,這樣可以防止算法陷入局部極小值,並增強其向全局最優的演化。