?

基于Vitis AI的可行駛區域檢測定制計算系統設計

2022-06-20 05:12李慧琳柴志雷
現代信息科技 2022年1期
關鍵詞:卷積神經網絡

李慧琳 柴志雷

摘? 要:針對基于卷積神經網絡的可行駛區域檢測方法計算耗時長、實時性差等問題,基于Vitis AI為其設計了一種定制計算系統,并通過采用模型定點化、網絡剪枝、硬件定制等優化方法,實現了對可行駛區域檢測方法的高效計算。實驗結果表明,在Xilinx ZCU102異構計算平臺上,可編程邏輯部分的工作頻率為200 MHz時,所實現的可行使區域檢測系統的識別幀率可達到46 FPS,計算性能可達903 GOPS,能效比為50.45 GOPS/W,可以較好地滿足實際系統的需求。

關鍵詞:現場可編程門陣列;Vitis AI;可行駛區域檢測;定制計算系統;卷積神經網絡

中圖分類號:TP391.4? ? ? ?文獻標識碼:A文章編號:2096-4706(2022)01-0073-06

Abstract: Aiming at the problems of long calculation time and poor real-time performance of the drivable area detection method based on convolutional neural network, a customized computing system is designed based on Vitis AI, and optimization methods such as model fixed-pointization, network pruning, and hardware customization are adopted, which realizes the efficient computing of the drivable area detection method. The experimental results show that on the Xilinx ZCU102 heterogeneous computing platform, when the operating frequency of the programmable logic part is 200 MHz, the recognition frame rate of the realizable area detection system can reach 46 FPS, the computing performance can reach 903 GOPS, and the energy efficiency ratio is 50.45 GOPS/W, which can better meet the needs of the actual system.

Keywords: field programmable gate array; Vitis AI; drivable area detection; customized computing systems; convolutional neural network

0? 引? 言

可行駛區域檢測,指的是自動駕駛系統通過分析車輛前方拍攝的區域圖像,來判斷前方是否為沒有車輛行人等障礙物的可行駛區域??尚旭倕^域檢測是自動駕駛系統中環境感知的核心任務之一,目前主要有基于傳統計算機視覺和基于深度學習兩種不同的方法。傳統計算機視覺的方法包含基于顏色、紋理、邊緣等直接特征和基于間接特征的可行駛區域檢測,這些方法受限于人工設計特征和先驗知識,對環境的魯棒性不高,通常只能在特定的簡單環境下使用[1]?;谏疃葘W習的方法是通過語義分割來得到可行駛區域的,基于語義分割對圖像中的每一個像素點給出一個分類結果,自動提取出語義特征,可以不受限于先驗知識和特定的場景輸出稠密的預測圖。這種預測在很大程度上保留了原始圖像的邊緣信息和語義信息,有助于無人駕駛對場景的理解。因此基于深度學習的可行駛區域檢測已經成為目前環境感知中的主流方法[2]。與傳統的方法相比,基于深度學習的方法不依賴于手工特征,分割精度大大提升,能夠解決復雜環境下的圖像處理問題,可以極大提高算法對環境的魯棒性[3]。

但基于深度學習的可行使區域檢測方法計算復雜度高、運算量大。如Chen等人[4]提出的道路分割網絡PLARD,在NVIDIA GTX Titan GPU平臺上依然需要耗時0.16 s;SNE-RoadSeg+網絡[5]使用Tensor RT加速后,在2.5 GHz工作頻率的GPU平臺上仍然耗時0.08 s??梢娚鲜鲫P于可行使區域檢測的工作還難以滿足自動駕駛等對實時性要求較高的應用場景的需要,而且上述基于GPU的加速方法還存在計算功耗高、散熱困難,難以用于車載場景等嵌入式環境的問題。

為了提升可行使區域檢測的計算性能及能效比,不少工作開始嘗試基于FPGA設計定制計算系統進行加速。文獻[6]提出了用于可行使區域檢測的深度卷積神經網絡Q-SegNet,并基于Xilinx ZCU104對其進行加速,達到了501 GOPS/W的能效比;文獻[7]提出二進制SegNet模型,并在Xilinx VCU118上實現了351.7 GOPS/W的能效比??梢娀贔PGA的方式由于硬件架構可定制、能適應不同位寬、可更好地支持定點化等優勢可以獲得更好地能效比,是嵌入式環境下實現可行使區域檢測的一種有效途徑。

但是傳統的基于FPGA的定制計算系統需要通過編寫VHDL/Verilog或者HLS等硬件描述語言實現,要求開發人員具有底層的硬件和系統知識,且開發難度大、開發周期長[8]。為此Xilinx提出了Vitis AI,它提供了一系列完整的工具和API,幫助用戶完成具體的量化、剪枝等優化和編譯預訓練好的模型,不需要編寫HDL和具備底層硬件知識,降低了基于FPGA設計定制計算系統的難度,可以快速地在Xilinx平臺上部署AI推理模型。但是針對特定模型,如何根據其計算特點快速確定適合Vitis AI實現的優化方法并充分利用Vitis AI優化能力及硬件定制能力獲得最佳計算性能?這方面的研究尚不多見。

因此本文以FCN可行使區域檢測模型為對象,研究了其網絡模型的計算特性,并針對Vitis AI提出了參數量化、剪枝、模型壓縮等優化方法;同時基于DPU對硬件架構進行了定制;完成了一套完整的定制軟硬件系統。該定制系統在ZCU102上達到了46 FPS的處理性能及50.45 GOPS/W的能效比,驗證了本文方法的有效性。說明基于Vitis AI的方式有望成為FPGA定制深度學習計算系統的一種可行手段。

1? 基于CNN的可行駛區域檢測

1.1? 算法原理

本文采用的基于深度學習的語義分割算法全卷積網絡(Fully Convolutional Networks, FCN)[9]整體架構如圖1所示。FCN被廣泛應用于像素級別分類,其輸出是帶有圖像語義信息的類別矩陣。全卷積網絡模型主要用輸入輸出、卷積池化和反卷積層構成,其核心思想是將一個全連接層轉換為一個1×1大小的卷積層,使用反卷積或者上采樣操作生成與輸入圖像大小相同的類別矩陣。FCN是語義分割的代表算法,該網絡主要丟棄了CNN的全連接層并且用卷積層替代,在提高分割效率的同時也降低了計算的復雜度。

1.2? 計算性能分析

本文所用網絡架構FCN-8s共有8層,在功率為65 W的通用計算平臺i56500上對模型進行性能分析,結果表明該模型處理224×224×3尺寸的圖像需要187 ms,幀率為5.4 FPS。

如表1所示,該網絡參數量總計2.80×107個,需占用內存約106.81 MB,計算量共3.41×1010即34.1 GFLOPs浮點運算,可見該模型較大的參數量和巨大的浮點計算量影響了計算的實時性。因此本文擬分別從算法層面降低計算量并通過DPU架構優化進行硬件加速兩個方面解決上述計算問題。

2? 降低模型的計算量

2.1? 網絡定點化

由1.2分析可知,模型存在大量的浮點計算,浮點計算耗時明顯高于定點計算。因此將浮點參數轉換為適當位寬的定點參數是降低深度神經網絡模型計算復雜度的一個行之有效的方法,且可以利用FPGA能靈活地支持不同位寬的定點數的優勢充分提升計算能效,還能夠起到壓縮存儲空間的作用。

本文量化采用8比特對稱均勻量化方案,通過二次冪大小的放縮比例來把原始浮點數據映射到特定的對稱整數區間中,對硬件加速器較為友好。通過式和式確定縮放比例scale,即定點位置。其中fmin、fmax表示真實浮點數集合的最大值和最小值,本文中float32的值為-3.4×1038和3.4×1038。INT_MIN、INT_MIX表示給定整數位寬能表示的最小值和最大值,本文8 bit量化位寬的兩個值分別為-128和127。

式為量化的公式,其中x為原浮點類型參數,scale為式算出的縮放比例,Xint為量化后的定點數。

如圖2所示卷積層conv為例,分析硬件對定點數的計算過程,其中fi、fx、fb、fo是各種數據的定點位置。由量化原理結合式可以得出式,可以看到量化后的運算只有整數乘加和移位運算,對硬件非常友好,也是這種量化方案的優勢所在。

根據上述量化原理,同時基于vai_q_tensorflow對本文模型進行量化。整體量化流程如圖3所示,Vitis AI量化器使用浮點模型作為輸入并且執行預處理操作,如折疊batchnorm層并且移除無用節點,然后將權重、偏差和激活量化為給定的位寬。量化校準激活之后,量化模型轉換為可部署到DPU上的模型,最后使用Vitis AI編譯器將該模型編譯部署到DPU上。

2.2? 通過降低通道數提升計算性能

本文所用通道剪枝方法中通道的選擇是通過LASSO regression來做的,即在損失函數中添加L1范數對權重進行約束。圖4是對卷積層進行通道剪枝的示意圖,其中A為輸入特征圖,B為經過通道剪枝后的特征圖,c為B的通道數,W為卷積核,kh和kw為卷積核尺寸,所以每個卷積核的維度為kh×kw×c。由于特征圖的部分通道被裁剪,所以相應卷積核的通道已經沒有存在的價值,也要被裁剪掉。C為輸出特征圖,n為輸出特征圖的通道數,即W卷積核的個數,可以看出C的維度和卷積核的數量有關,且輸出是完整的,故通道剪枝的過程不會對下一層卷積造成影響,僅影響卷積內部的運算即參數量和計算量。

本文的裁剪通道是通過優化一個二值決策變量0和1選取的,其中0表示裁剪,1表示保留,即式中的βi,其中c為通道數量,i為通道數量的索引,Xi和Wi分別對應輸入特征圖和卷積核的每個通道,對應圖中的B和W,因此,當βi為0時,即通道無作用被裁減掉,βi為1則保留該通道。Y表示轉成矩陣形式的輸出,對應于圖中的C,N表示對樣本的采樣數,雙豎線表示矩陣的二范數。求解此NP-hard問題需要加入L1正則化項,問題變為式所示的Lasso回歸問題,通過最優化該式即可選取出裁剪通道。

在對完整的網絡結構進行剪枝時,由于后面是池化層的特征圖連接了后面反卷積的特征圖,此時需要考慮前后部分產生的重構誤差,實現較難且裁剪的損失概率變大,所以通道剪枝時應當選擇前后都是卷積的層。

3? 基于Vitis AI的定制計算架構實現

3.1? Vitis AI

如圖5所示,Vitis AI開發環境可以在Xilinx硬件平臺上加速AI推斷,包括邊緣器件和Alveo系列數據中心加速卡。此環境由經過最優化的IP核、工具、庫、模型和設計示例組成。Vitis AI的開發流程需要Vitis AI和Vitis IDE,包含3個基本步驟。首先Vitis AI開發套件用于構建模型,輸入是預先訓練好的浮點模型。再使用Vitis軟件平臺來構建定制的硬件平臺,生成包括DPU IP以及其他內核在內的硬件信息。最后在構建的硬件上運行構建好的可執行軟件,使用C++或者Python調用Vitis AI運行時環境來加載并運行編譯后的模型軟件。

3.2? DPU

3.2.1? DPU架構

圖6是DPU的硬件架構,DPU參數可以根據實際應用進行配置,以優化資源利用率和實現功能定制。DPU編譯器將神經網絡模型轉化為一系列DPU指令,DPU啟動后從片外存儲器中獲取這些指令來控制計算引擎可編程邏輯的調度。計算引擎采用深度流水線設計并包含一個或者多個處理單元PE,每個處理單元由乘法器、加法器和累加器等構成。DPU在片上存儲器BRAM中存儲模型數據、緩存輸入、輸出和中間數據來減少外部存儲器的帶寬。DPU通過AXI總線直接連接到處理器系統PS端進行數據傳輸,其中有一個獲取指令的低帶寬端口和兩個存取數據的高帶寬端口。

3.2.2? 通過配置DPU提升計算性能

DPU IP可以配置各種與卷積單元并行度相關的卷積架構,如表2所示,DPU IP的架構包括從B4096到B512共八種型號。DPU卷積架構的并行度包括了像素并行度、輸入通道并行度和輸出通道并行度,輸入通道并行度等于輸出通道并行度,不同的架構所需可編程邏輯資源不等,通常并行度越高的架構耗費高資源實現更高的性能。

針對不同的卷積神經網絡可以配置不同的DPU卷積架構,如DPU核心數、RAM利用率、通道增強、深度卷積、最大池化、ReLU類型以及Softmax等皆可配置。本文所設計DPU的配置如表3,在一個DPU IP中最多可以選擇三個內核,每個內核都可以根據需要配置為不同的架構,使用多個DPU內核會消耗更多的可編程邏輯資源。本文實驗中所用板卡為Xilinx Zynq UltraScale系列板卡,DPU配置了一個B4096架構的內核。本文DPU設置為高RAM利用率,這是因為網絡的權重、偏差和中間特征都緩沖在片上存儲器中,設置為高RAM利用率意味著片上存儲更大,DPU能更靈活地處理中間數據。本文DPU在硬件中實現了Softmax功能,其硬件實現比軟件實現快160倍,實現硬件Softmax模塊額外需要約10 000個LUT、4個BRAM和14個DSP,配置最大池化即網絡的池化操作可以在DPU上進行。

通道增強能在網絡輸入通道數低于DPU硬件通道并行度時提高DPU的效率,本文中網絡輸入通道數為3,B4096型號DPU架構的通道并行度為16,故配置通道增強功能。ReLU類型可以決定在DPU上配置哪種激活函數,默認是ReLU和ReLU6。在深度可分離卷積中,運算分為深度卷積和點卷積兩步進行,配置深度可分離卷積的并行度下降約一半,本設計中不配置。

3.2.3? 總體設計

如圖7所示,本文實現的FPGA硬件加速器系統設計基于ARM+FPGA架構,主要包括了雙倍速率的片外存儲DDR、FCN DMA(Direct Memory Access,直接存儲器訪問)、片上緩存BRAM、可編程邏輯FCN加速器等。加速器主要包括處理單元PE模塊、片上緩沖器和可編程網絡邏輯模塊。PE模塊的設計有利于減少數據移動,減少片外內存的訪問次數,同時提高數據的復用率。PE模塊可以完成卷積、最大池化和激活操作[10]。片上和片外通過AXI總線相連,主機PC負責整個系統的任務調度,發布工作和指令并且監控系統的工作狀態。對于不同的圖像輸入,系統讀取初始輸入圖像的輸入和權重,將其存儲在外部存儲器DDR中,然后加速器從DDR讀取和寫入相應的輸入數據,硬件加速器通過AXI總線與ARM通信并接受配置信號。

4? 實驗結果與分析

4.1? 實驗環境

CNN模型:FCN。

FPGA平臺:Xilinx Zynq? UltraScale+? XCZU9EG-2FFVB1156E MPSoC開發板。

4.2? 降低通道數后的實驗結果分析

為了驗證通道剪枝的有效性,實驗對原模型、剪枝后的模型進行了參數量和運算量的比較。由表4可以看到,剪枝后模型的參數量和運算量都下降了近一半,而精度損失了0.023,在犧牲少量精度的情況下實現了參數量及運算量的大量壓縮,因此說明剪枝是有效的。

4.3? 定點化的實驗結果分析

量化后的神經網絡模型參數如表5所示,參數量下降為原來的1/4左右,與浮點網絡相比量化后網絡的準確率只下降了0.1%,精度的下降在可接受的范圍內,因而量化是有效的。

4.4? 配置DPU后的實驗結果分析

表6展示了配置DPU的硬件資源使用情況及資源利用率。通過運行分析DPU的運算性能,經過優化后進行DPU加速的推理過程總耗時為21.7 ms,系統的識別幀率為46 FPS,達到了實時性的要求。所設計系統可編程邏輯部分的工作頻率為200 MHz時,性能達到了903 GOPS,功耗為17.9 W,具有50.45 GOPS/W的能效比。

表7是本文方案與其他論文的實驗結果對比,可以看出與使用相同FPGA平臺的文獻[11]和文獻[12]相比,本文方法的性能分別是其2.9倍和1.8倍,能耗比分別是其3.9倍和1.6倍,性能計算和能耗比指標都更為優秀。

5? 結? 論

本文以FCN圖像分割算法為例,設計并實現了基于Vitis AI的可行駛區域檢測的卷積神經網絡加速器架構?;赩itis AI工具對分割網絡進行通道剪枝、數據量化、DPU配置等一系列優化,解決了可行駛區域算法網絡規模大、無法滿足實時性要求的問題。實驗結果表明通過定制硬件系統性能獲得了極大的提升。

現有的FPGA定制方式難度大,神經網絡加速中的很多參數都需要研究人員的實際經驗來確定,編寫低層次語言的工作量巨大?;赩itis AI定制神經網絡系統方便,可以達到很好的性能,有望成為一種很好的優化部署方式。

參考文獻:

[1] CHEN T,CHEN B D,ZHANG X,et al. Free Space Detection Using Stereo Confidence Metrics and Obstacle Position Probability Maps [C]//2018 14th IEEE International Conference on Signal Processing(ICSP).Beijing:IEEE,2018:1071-1075.

[2] FAN R,WANG H L,CAI P D,et al. SNE-RoadSeg:Incorporating Surface Normal Information into Semantic Segmentation for Accurate Freespace Detection [C]//Computer Vision–ECCV 2020.Glasgow:springer,2020:340-356.

[3] 李升波,關陽,侯廉,等.深度神經網絡的關鍵技術及其在自動駕駛領域的應用 [J].汽車安全與節能學報,2019,10(2):119-145.

[4] CHEN Z,ZHANG J,TAO D C. Progressive LiDAR adaptation for road detection [J].IEEE/CAA Journal of Automatica Sinica,2019,6(3):693-702.

[5] WANG H L,FAN R,CAI P D,et al. SNE-RoadSeg+:Rethinking Depth-normal Translation and Deep Supervision for Freespace Detection [J/OL].arXiv:2107.14599 [cs.CV].(2021-07-30).https://arxiv.org/abs/2107.14599.

[6] AHAMAD A,SUN C C,NGUYEN H M,et al. Q-SegNet: Quantized deep convolutional neural network for image segmentation on FPGA [C]//2021 International Symposium on Intelligent Signal Processing and Communication Systems(ISPACS).Hualien City:IEEE,2021:1-2.

[7] LYU H R,AN F W,ZHAO S R,et al. A703.4 GOPs/W Binary SegNet Processor with Computing-Near-Memory Architecture for Road Detection [J].IEEE Design & Test,2020,39(2):74-83.

[8] 陳辰,柴志雷,夏珺.基于Zynq7000 FPGA異構平臺的YOLOv2加速器設計與實現 [J].計算機科學與探索,2019,13(10):1677-1693.

[9] SHELHAMER E,LONG J,DARRELL T. Fully Convolutional Networks for Semantic Segmentation [J].IEEE Transactions on Pattern Analysis and Machine Intelligence, 39(4):640-651.

[10] ZHANG J L,LI J. Improving the Performance of OpenCL-based FPGA Accelerator for Convolutional Neural Network [C]//The 2017 ACM/SIGDA International Symposium on Field-Programmable Gate Arrays. Monterey:Association for Computing Machinery,2017:25-34.

[11] CHEN Y H,KRISHNA T,EMER J,et al. 14.5 Eyeriss: An energy-efficient reconfigurable accelerator for deep convolutional neural networks [C]//2016 IEEE International Solid-State Circuits Conference(ISSCC).San Francisco:IEEE,2016:262-263.

[12] BIANCO S,CADENE R,CELONA L,et al. Benchmark Analysis of Representative Deep Neural Network Architectures [J].IEEE Access,2018,6:64270-64277.

作者簡介:李慧琳(1997—),女,漢族,湖南郴州人,碩士研究生在讀,研究方向:嵌入式系統;柴志雷(1975—),男,漢族,山西新絳人,教授,博士,研究方向:軟件定義的高效計算機系統、嵌入式系統、軟硬件協同設計等。

猜你喜歡
卷積神經網絡
基于卷積神經網絡溫室智能大棚監控系統的研究
基于深度卷積神經網絡的物體識別算法
深度學習算法應用于巖石圖像處理的可行性研究
基于深度卷積網絡的人臉年齡分析算法與實現
基于卷積神經網絡的樹葉識別的算法的研究
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合