• 正文
    • 4.1 動(dòng)態(tài)重構(gòu)硬件加速器系統(tǒng)總體架構(gòu)設(shè)計(jì)
    • 4.2 圖像預(yù)處理算法硬件加速設(shè)計(jì)
    • 4.2.1 圖像預(yù)處理算法
    • 4.2.2 可重構(gòu)模塊的接口設(shè)計(jì)
    • 4.2.3 預(yù)處理算法的IP核設(shè)計(jì)
    • 4.3 基于Vitis?AI的目標(biāo)檢測網(wǎng)絡(luò)推理加速器方案
    • 4.3.1 網(wǎng)絡(luò)壓縮
    • 4.3.2 網(wǎng)絡(luò)編譯
    • 4.4 小結(jié)
  • 推薦器件
  • 相關(guān)推薦
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

EDRCA-YOLO動(dòng)態(tài)重構(gòu)目標(biāo)檢測硬件加速器系統(tǒng)方案

2024/09/04
1565
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

4.1 動(dòng)態(tài)重構(gòu)硬件加速器系統(tǒng)總體架構(gòu)設(shè)計(jì)

動(dòng)態(tài)重構(gòu)硬件加速器架構(gòu)最重要的特征體現(xiàn)在系統(tǒng)運(yùn)行時(shí)能夠利用動(dòng)態(tài)重構(gòu)技術(shù),通過PS端主控制器通過加載新的可重配置文件,以此調(diào)用新運(yùn)算算子IP核來完成新的圖像預(yù)處理加速運(yùn)算。本系統(tǒng)可以通過調(diào)用多個(gè)動(dòng)態(tài)重構(gòu)的加速器通過流水線方式組合成新的圖像預(yù)處理硬件算法,并且能夠通過調(diào)用和部署深度學(xué)習(xí)算法在DPU模塊上,以滿足系統(tǒng)運(yùn)算、算法加速和不同環(huán)境下應(yīng)用的需求。

?EDRCA-YOLO加速器的硬件系統(tǒng)架構(gòu)框圖

本文提出了一種可以部署YOLO算法的高效動(dòng)態(tài)重構(gòu)目標(biāo)檢測算法加速器架構(gòu)(Efficient Dynamic Reconfigurable Target Detection Algorithm Accelerator Architecture for YOLO,EDRCA-YOLO),該加速器整體架構(gòu)如圖4-1所示。EDRCA-YOLO加速器系統(tǒng)在系統(tǒng)級(jí)層面,包含兩個(gè)子系統(tǒng),分別是視頻圖像預(yù)處理加速器系統(tǒng)和基于DPU的目標(biāo)檢測網(wǎng)絡(luò)推理加速系統(tǒng)。而在硬件級(jí)層面,整個(gè)加速器分為處理器系統(tǒng)端(Processing System,PS)和可編程邏輯端(Progarmmable Logic,PL),并將PL端分為五個(gè)部分,分別是動(dòng)態(tài)區(qū)域1、動(dòng)態(tài)區(qū)域2、動(dòng)態(tài)區(qū)域3、動(dòng)態(tài)區(qū)域4和靜態(tài)區(qū)域。

PL端的靜態(tài)區(qū)域主要完成視頻流數(shù)據(jù)的輸入、視頻幀傳輸以及輸出,還有中斷、時(shí)鐘、復(fù)位信號(hào)的管理和對(duì)于動(dòng)態(tài)區(qū)域的邏輯解耦,PL端與PS端的通信采用128位AXI4總線協(xié)議的總線,如S_AXI_HPC0_FPD、S_AXI_HPC1_FPD、S_AXI_HP0_FPD、S_AXI_HP1_FPD,以及32位的S_AXI_LPD、M_AXI_HPM0_LPD。其中S_AXI_HPC0_FPD、S_AXI_HPC1_FPD高性能接口提供了高性能計(jì)算(HPC)外設(shè)的AXI總線訪問接口,其中FPD代表“Fixed Platform Domain”,而對(duì)應(yīng)的M_AXI_HPM0_LPD接口是一種高性能主接口,并在低功耗域內(nèi)訪問PL端的主接口,其接口總線設(shè)置為32位,通過AXI Interconnect模塊對(duì)PL端的動(dòng)態(tài)重構(gòu)模塊和DFX_Shutdown管理器模塊相連,作為傳輸控制命令信號(hào)的接口。S_AXI_HPC0_FPD、S_AXI_HPC1_FPD均為高性能接口通過與DPU模塊相連,為DPU和PS端的處理器提供高速通信,而S_AXI_LPD為DPU與PS端處理器之間提供低速的AXI總線訪問,使得主控制器能夠發(fā)送控制命令,對(duì)DPU進(jìn)行控制。S_AXI_HP0_FPD、S_AXI_HP1_FPD、S_AXI_HP2_FPD、S_AXI_HP3_FPD作為高性能的AXI總線從接口,接口設(shè)置為128位并與三個(gè)DFX_Shutdown管理器模塊相連。DFX_Shutdown管理器模塊用于在動(dòng)態(tài)重構(gòu)期間確保動(dòng)態(tài)區(qū)域和靜態(tài)區(qū)域之間的AXI總線接口的通信安全。當(dāng)系統(tǒng)處于工作狀態(tài)時(shí),發(fā)送至可重配置模塊的AXI通信任務(wù)以及從可重配置模塊(RM)發(fā)出的AXI通信任務(wù)將會(huì)被終止,以確保系統(tǒng)不會(huì)因?yàn)镽M的通信任務(wù)無法完成而造成系統(tǒng)死鎖的狀態(tài),而當(dāng)系統(tǒng)處于非工作狀態(tài)時(shí),通信任務(wù)按照先前的狀態(tài)繼續(xù)。EDRCA-YOLO系統(tǒng)架構(gòu)中包含兩個(gè)DFX_Shutdown管理器模塊,分別與VDMA模塊的M_AXI_MM2S接口和M_AXI_S2MM接口。

在信號(hào)管理上,系統(tǒng)利用時(shí)鐘管理器Clocking Wizard IP進(jìn)行時(shí)鐘信號(hào)管理,利用中斷管理器AXI Interrupt Controller IP對(duì)時(shí)鐘信號(hào)和中斷信號(hào)進(jìn)行管理。EDRCA-YOLOv5s加速器共設(shè)置了三個(gè)初始時(shí)鐘信號(hào),分別是100MHz、200MHz和300MHz,分別為驅(qū)動(dòng)靜態(tài)區(qū)域的各模塊,以及動(dòng)態(tài)區(qū)域1、動(dòng)態(tài)區(qū)域2、動(dòng)態(tài)區(qū)域3和動(dòng)態(tài)區(qū)域4的可重配置運(yùn)算模塊提供初始時(shí)鐘,并通過Clocking Wizard IP 核對(duì)信號(hào)進(jìn)行倍頻處理,分別得到600MHz和300MHz的是時(shí)鐘信號(hào)并與DPU IP核的dpu_2x_clk接口和m_axi_dpu_aclk接口連接。當(dāng)一個(gè)中斷信號(hào)被觸發(fā)時(shí),系統(tǒng)會(huì)保存當(dāng)前的硬軟件系統(tǒng)狀態(tài),并將控制權(quán)轉(zhuǎn)移給負(fù)責(zé)處理中斷事件的中斷處理,然后系統(tǒng)恢復(fù)先前的程序狀態(tài),以便程序在中斷發(fā)生前繼續(xù)執(zhí)行。復(fù)位信號(hào)則分為靜態(tài)區(qū)域和動(dòng)態(tài)重構(gòu)區(qū)域,靜態(tài)區(qū)域的時(shí)鐘復(fù)位信號(hào)由處理器復(fù)位模塊將系統(tǒng)復(fù)位信號(hào)同步到靜態(tài)區(qū)域的時(shí)鐘域,整個(gè)動(dòng)態(tài)區(qū)域的時(shí)鐘復(fù)位信號(hào)由單獨(dú)的處理器系統(tǒng)復(fù)位IP核模塊控制。此外在靜態(tài)區(qū)域中為了確保EDRCA-YOLO加速器系統(tǒng)的硬件設(shè)計(jì)在運(yùn)行中保持動(dòng)態(tài)重構(gòu)分區(qū)功能模塊和靜態(tài)邏輯功能模塊之間不發(fā)生邏輯混亂的情況,本設(shè)計(jì)使用Decoupler模塊對(duì)每個(gè)可重構(gòu)模塊做邏輯解耦處理,可以在重新配置期間對(duì)動(dòng)態(tài)區(qū)域和和靜態(tài)區(qū)域之間的邏輯進(jìn)行隔離,并且在區(qū)域內(nèi)使用DFX_Shutdown管理器模塊管理AXI4-Lite、AXI4-Stream和AXI4總線接口,以此為加速器的運(yùn)行提供一個(gè)安全的工作環(huán)境。

四個(gè)動(dòng)態(tài)區(qū)域通過加載圖像運(yùn)算加速器負(fù)責(zé)EDRCA-YOLO加速器的圖像預(yù)處理加速任務(wù),因而需要?jiǎng)討B(tài)重構(gòu)加速器系統(tǒng)架構(gòu)具備穩(wěn)定和高帶寬。故在動(dòng)態(tài)區(qū)域構(gòu)造可重構(gòu)模塊時(shí),對(duì)可重構(gòu)模塊的接口進(jìn)行專用化設(shè)計(jì),各個(gè)信號(hào)接口和寄存器地址都是固定的,在VIVADO HLS開發(fā)工具中使用高層次編譯語言(HLS)設(shè)計(jì)一個(gè)專用加速器模板,為每一個(gè)運(yùn)算加速器生成統(tǒng)一的硬件接口,具體接口設(shè)置如4.2節(jié)的圖4-2所示,其采用的32位地址位寬度的m_AXI4總線,該總線采用突發(fā)傳輸模式,適用大規(guī)模連續(xù)地址的數(shù)據(jù)讀取和寫入,最大運(yùn)行帶寬17GB/s,以滿足圖像處理算法部署在硬件上對(duì)運(yùn)算速度的需求。

4.2 圖像預(yù)處理算法硬件加速設(shè)計(jì)

由于軍事戰(zhàn)場的環(huán)境惡劣,移動(dòng)端的自動(dòng)目標(biāo)識(shí)別系統(tǒng)所采集的圖像往往會(huì)被陰天、霧霾天氣、煙霧環(huán)境和高速移動(dòng)帶來的模糊所影響,使得系統(tǒng)拍攝的圖像質(zhì)量下降。由于FTDS數(shù)據(jù)集不能將軍事戰(zhàn)場上面臨的所有環(huán)境都整合到一個(gè)數(shù)據(jù)集中,若目標(biāo)檢測網(wǎng)絡(luò)輸入圖像的環(huán)境和訓(xùn)練集中的環(huán)境相差甚遠(yuǎn),將會(huì)對(duì)目標(biāo)檢測系統(tǒng)的檢測效果帶來很大的影響,比如帶來明顯的精度下降。為了降低不利環(huán)境下對(duì)自動(dòng)目標(biāo)識(shí)別系統(tǒng)精度的影響,故本動(dòng)態(tài)重構(gòu)算法加速器系統(tǒng)在PL端增加了圖像實(shí)時(shí)預(yù)處理環(huán)節(jié),預(yù)先對(duì)采集的圖像做圖像增亮和去霧霾和煙塵的算法加速處理,之后再傳輸?shù)揭訢PU IP核為運(yùn)算核心的GSConv-YOLOV5s目標(biāo)檢測網(wǎng)絡(luò)加速器子系統(tǒng)中做進(jìn)一步的處理。

4.2.1 圖像預(yù)處理算法

在實(shí)際的戰(zhàn)地情況下,需要對(duì)不同的環(huán)境采用不同的圖像處理算法,以適應(yīng)不同的現(xiàn)場需求。通常遇到的環(huán)境情況有環(huán)境過暗、過亮、模糊、霧霾和煙塵,且考慮到本系統(tǒng)的硬件計(jì)算資源有限,適合采用基礎(chǔ)算子通過本系統(tǒng)主控制端將各個(gè)算子調(diào)用組合為新的圖像預(yù)處理算法,以節(jié)約硬件計(jì)算資源,故本系統(tǒng)對(duì)于這些環(huán)境下的圖像增強(qiáng)處理算法和其組成算子,歸納為表4-1所示。其中,LUT(Look-Up Table)是顏色查找表算法,用于圖像的亮度調(diào)節(jié);add是圖像加法算法,用于圖像增強(qiáng)對(duì)比度;filiter2D是卷積濾波算法,用于對(duì)圖像進(jìn)行去噪和邊緣的檢測;rbg2gray是用于將圖片由彩色轉(zhuǎn)換為灰度的算法;gray2rgb是將圖片由灰度轉(zhuǎn)換成彩色的算法。

如表4-1所示,本系統(tǒng)采用的圖像增強(qiáng)算法主要有伽馬變換、基于拉普拉斯濾波的圖像銳化和直方圖均衡化算法。

(1)伽馬變換算法,是一種基于灰度級(jí)的非線性圖像增強(qiáng)算法,可以通過調(diào)整圖像的灰度級(jí)分布來改變圖像的對(duì)比度和亮度。伽馬變換主要用于處理灰度圖像,對(duì)于本系統(tǒng)所用三維彩色圖像可以對(duì)每個(gè)顏色通道單獨(dú)進(jìn)行伽馬變換,使得較暗的區(qū)域的亮度得到提升,而較亮的區(qū)域的亮度得到降低,經(jīng)過伽馬變換,圖像整體的細(xì)節(jié)表現(xiàn)會(huì)得到增強(qiáng)。伽瑪變換的數(shù)學(xué)表達(dá)公式如公式(4-1)所示。

式中:

r——灰度圖像的輸入值(原來的灰度值),取值范圍為[0,1];

s——經(jīng)過伽馬變換后的灰度輸出值;

C——灰度縮放系數(shù),通常取1;

γ——伽馬因子大小,控制了整個(gè)變換的縮放程度。

(2)基于拉普拉斯濾波的圖像銳化算法,一種經(jīng)典的圖像增強(qiáng)算法,它通過增強(qiáng)圖像的高頻分量來使圖像變得更加銳利,凸顯圖像中物體的邊緣輪廓。但是拉普拉斯濾波算法對(duì)噪聲比較敏感,因此本系統(tǒng)先通過高斯平滑算法去除圖像中的高頻噪聲,再對(duì)相應(yīng)的噪聲進(jìn)行抑制,然后采用3′3尺寸大小的拉普拉斯卷積核,對(duì)原始圖像進(jìn)行離散卷積運(yùn)算得到高頻分量圖像,再通過疊加運(yùn)算將原始圖像和高頻分量圖像疊加,生成銳化后的圖像。其中在疊加高頻分量圖像時(shí),可以通過控制增益因子,以控制圖像銳化程度。

(3)直方圖均衡化算法,是一種用于提高圖像對(duì)比度的數(shù)字圖像處理技術(shù),其通過圖像的直方圖將原始圖像的像素值分布重新映射到一個(gè)均勻的分布上,從而使得圖像中的霧霾和模糊效果得到一定程度的改善,使得圖像更加清晰明亮。其表達(dá)式如式(4-2)所示。

式中:

L——灰度總數(shù);

k——累計(jì)次數(shù),k=0,1,2,…,L-1;

r——圖像的灰度級(jí)數(shù),

——各個(gè)灰度級(jí)治病像素在圖像中出現(xiàn)的概率;

——圖像中個(gè)灰度級(jí)中的像素個(gè)數(shù);

M——圖像高的像素?cái)?shù);

N——圖像寬的像素?cái)?shù)。

Sk——累計(jì)第K次的累計(jì)值。

4.2.2 可重構(gòu)模塊的接口設(shè)計(jì)

如圖4-2所示,每個(gè)動(dòng)態(tài)區(qū)域都對(duì)應(yīng)著一個(gè)可重構(gòu)模塊,EDRCA-YOLO加速器架構(gòu)的可重構(gòu)模塊(Reconfigurable Module,RM)有兩條總線,它們分別是32位的AXI_Stream輸入和輸出數(shù)據(jù)總線和32位的S_AXI_Control命令總線。這兩條總線都通過128位的系統(tǒng)總線與DDR4相連,通過地址寄存器即可調(diào)用可重構(gòu)模塊內(nèi)部的加速器組對(duì)運(yùn)算層并行加速。可重構(gòu)模塊的參考時(shí)鐘為300MHz,由硬件平臺(tái)的時(shí)鐘通過內(nèi)部PLL,輸出控制時(shí)鐘300MHz。系統(tǒng)的復(fù)位信號(hào)源來自FPGA外部的復(fù)位鍵。當(dāng)系統(tǒng)上電后,硬件平臺(tái)初始化DDR4控制器,并向復(fù)位模塊發(fā)送復(fù)位信號(hào),之后每個(gè)可重構(gòu)模塊和FPGA的外圍設(shè)備就處于預(yù)備狀態(tài)。

可重構(gòu)模塊根據(jù)不同的計(jì)算任務(wù)的需要,可在可重構(gòu)模塊內(nèi)嵌不同規(guī)格和數(shù)量的圖像處理運(yùn)算加速器模塊,為了提高可重構(gòu)模塊的集成度。當(dāng)可重構(gòu)模塊分配到不同的重構(gòu)區(qū)域時(shí),需要遵循同一個(gè)重構(gòu)區(qū)域的原則,即可重構(gòu)模塊占用的片上硬件資源數(shù)量應(yīng)盡可能接近,以增強(qiáng)模塊計(jì)算性能和減少硬件資源的浪費(fèi)[25]。內(nèi)嵌單個(gè)和兩個(gè)的可重構(gòu)模塊模板頂層設(shè)計(jì)框圖如圖4-2所示,為了防止動(dòng)態(tài)邏輯區(qū)域和靜態(tài)邏輯區(qū)域的邏輯混疊讓系統(tǒng)發(fā)生嚴(yán)重錯(cuò)誤,故對(duì)可重構(gòu)模塊進(jìn)行了解耦設(shè)計(jì),在靜態(tài)區(qū)域使用Decoupler模塊對(duì)可重構(gòu)模塊的邏輯進(jìn)行解耦。

4.2.3 預(yù)處理算法的IP核設(shè)計(jì)

圖像預(yù)處理算法硬件加速核的設(shè)計(jì)在Vitis?HLS(2020.2)開發(fā)工具上完成,并且通過調(diào)用Vitis視覺庫的函數(shù)API接口加速硬件開發(fā)過程。其中Vitis視覺庫提供了一種與OpenCV庫函數(shù)類似的專用于FPGA的標(biāo)準(zhǔn)硬件函數(shù)庫,并通過Vitis統(tǒng)一設(shè)計(jì)平臺(tái)開發(fā)與部署應(yīng)用。如表4-1所示,預(yù)處理算法所需算子有LUT、add、filter2D、GaussianBlur、rbg2gray、gray2rbg,均調(diào)用Vitis視覺庫中對(duì)應(yīng)的函數(shù)API接口。對(duì)于硬件加速核的IP核接口設(shè)計(jì),以Filter2d算子為例,如圖4-3所示,外設(shè)接口包含32位的AXI_Stream的輸入與輸出接口,時(shí)鐘信號(hào)、復(fù)位信號(hào)和32位的s_AXI_Control接口,與可重構(gòu)模塊的外設(shè)接口設(shè)計(jì)相同。對(duì)于Filter2d算子頂層函數(shù)的設(shè)計(jì),在HLS中綜合的頂層函數(shù)是filter2d_accel(?)函數(shù):void filter2d_accel(stream_t& stream_in, stream_t& stream_out, short int filter[FILTER_SIZE*FILTER_SIZE], unsigned char shift, unsigned int rows,?unsigned int cols)。其中的stream_in和stream_out為視頻流的輸入和輸出;rows、cols分別為圖像高度和寬度;FILTER_SIZE為卷積核尺寸;shift為移位步長。在該函數(shù)中,先通過xf::cv::AXIvideo2xfMat函數(shù),將AXI_Stream數(shù)據(jù)類型的視頻流數(shù)據(jù)轉(zhuǎn)換成xf::cv::Mat數(shù)據(jù)類型,再調(diào)用Vitis視覺庫中的xf::cv::filter2D函數(shù),最后再通過xf::cv::xfMat2AXIvideo函數(shù)將xf::cv::Mat數(shù)據(jù)類型的視頻流數(shù)據(jù)轉(zhuǎn)換成AXI_Stream數(shù)據(jù)類型,之后通過Vitis?HLS開發(fā)工具即可得到filter2d_accel?的IP核,其他算子的IP核設(shè)計(jì)過程與filter2d算子相同。根據(jù)上述表述,對(duì)圖像預(yù)處理算子LUT、add、filter2D、rbg2gray、gray2rbg分別在Vitis HLS(2020.2)開發(fā)工具上進(jìn)行設(shè)計(jì)并導(dǎo)出IP軟核,并加載到Vivado(2020.2)開發(fā)工具的軟核庫中以備PL端的硬件系統(tǒng)設(shè)計(jì)使用。

4.3 基于Vitis?AI的目標(biāo)檢測網(wǎng)絡(luò)推理加速器方案

Vitis?AI 集成開發(fā)環(huán)境框架圖

基于Vitis AI的目標(biāo)檢測網(wǎng)絡(luò)推理加速器方案是在XILINX公司的片上系統(tǒng)上部署深度學(xué)習(xí)網(wǎng)絡(luò)推理的高效解決方案,并且通過Vitis AI的開發(fā)工具庫可以依托Ubuntu?Linux操作系統(tǒng)實(shí)現(xiàn)深度學(xué)習(xí)模型的網(wǎng)絡(luò)優(yōu)化、編譯和部署[103]。如圖4-4所示,Vitis AI的開發(fā)工具庫支持Xilinx?ZYNQ?MPSoC系列的邊緣嵌入式硬件平臺(tái)和Xilinx Alveo系列的硬件加速卡。這些平臺(tái)提供了高性能的計(jì)算資源,使得在這些硬件平臺(tái)上通過Vitis?AI開發(fā)工具庫部署深度學(xué)習(xí)網(wǎng)絡(luò)時(shí)可以獲得很高的加速比。由圖可知Vitis?AI開發(fā)工具包包含AI優(yōu)化器、AI量化器和AI編譯器,在網(wǎng)絡(luò)優(yōu)化階段,可以使用各種技術(shù)來減小網(wǎng)絡(luò)的計(jì)算量和內(nèi)存占用,如算法優(yōu)化和剪枝,以最小的精度下降為代價(jià)以提高模型性能。除此以外算法優(yōu)化部分還包括循環(huán)優(yōu)化(展開、平鋪和交換),以最大限度地提高片上存儲(chǔ)器的數(shù)據(jù)流效率和緩存性能。為了提高系統(tǒng)數(shù)據(jù)吞吐量和減少延遲,最后的硬件架構(gòu)設(shè)計(jì)包對(duì)于本文所提出的GSConv-YOLOv5s目標(biāo)檢測算法的硬件部署中需要較多運(yùn)算量的圖像前處理部分進(jìn)行硬件并行加速設(shè)計(jì),和合理的流水線并行設(shè)計(jì)與有效的內(nèi)存管理。在網(wǎng)絡(luò)編譯階段,可以選擇使用Vitis AI提供的優(yōu)化器來生成高效的硬件描述語言(Verilog?HDL)代碼,以便在硬件平臺(tái)上實(shí)現(xiàn)網(wǎng)絡(luò)推理。用戶可以通過編寫一些簡單的腳本來自動(dòng)化這些任務(wù),從而簡化整個(gè)流程。

論文中所采用的開發(fā)流程包括Vitis AI和PYNQ-Kria軟硬協(xié)同框架。首先,通在Ubuntu?18.04的Linux操作環(huán)境下部署Vitis AI集成開發(fā)環(huán)境,用于將網(wǎng)絡(luò)訓(xùn)練階段得到的模型參數(shù)文件作為輸入。然后在通過在Docker虛擬環(huán)境中采用PyTorch深度學(xué)習(xí)框架以及Vitis?AI開發(fā)工具包來構(gòu)建KV260硬件平臺(tái)匹配的編譯環(huán)境,并通過AI優(yōu)化器將網(wǎng)絡(luò)模型參數(shù)文件進(jìn)行網(wǎng)絡(luò)優(yōu)化,還通過AI量化器將32位浮點(diǎn)型數(shù)據(jù)量化為8為整數(shù)定點(diǎn)型數(shù)據(jù),再通過AI編譯器構(gòu)建出匹配KV260硬件開發(fā)平臺(tái)的硬件部署文件。最后將文件部署在在KV260上事先安裝好的PYNQ-Kria軟硬協(xié)同框架的PetaLinux操作環(huán)境中,使用C++和Python調(diào)用Vitis?AI集成開發(fā)環(huán)境下生成的硬件部署文件,來加載調(diào)用DPU完成網(wǎng)絡(luò)推理加速任務(wù)。

4.3.1 網(wǎng)絡(luò)壓縮

網(wǎng)絡(luò)壓縮是通過減少模型參數(shù)的數(shù)量來減小模型大小的一種技術(shù)??梢允褂眉糁土炕燃夹g(shù)來實(shí)現(xiàn)。其中,剪枝技術(shù)可以通過刪除模型中不必要的連接來減少模型參數(shù)的數(shù)量,進(jìn)一步提高建模的準(zhǔn)確性和可靠性。雖然FPGA可以有效地處理定點(diǎn)型數(shù)據(jù),但無法滿足浮點(diǎn)數(shù)據(jù)計(jì)算所需的大量存儲(chǔ)空間。因此,為了提高網(wǎng)絡(luò)模型的性能,必須對(duì)其實(shí)行參量縮小,這一過程基本上包括參量剪枝和參數(shù)量化兩個(gè)步驟。使用Vitis AI工具,可以有效地將參量縮小到圖4-4中的形式。

網(wǎng)絡(luò)壓縮流程圖

一般來說,未經(jīng)裁剪的卷積神經(jīng)網(wǎng)絡(luò)采取緊密型網(wǎng)絡(luò)連接方式,當(dāng)中含有大批權(quán)重值極低的網(wǎng)絡(luò)連接分支,這些網(wǎng)絡(luò)連接分支占用巨量存儲(chǔ)和計(jì)算資源,但對(duì)網(wǎng)絡(luò)性能的影響卻很小。因此,通過參數(shù)剪枝技術(shù),可以有效地去除權(quán)值極低的網(wǎng)絡(luò)連接,從而減少網(wǎng)絡(luò)參數(shù)量。在Vitis AI開發(fā)工具中,AI優(yōu)化器可以通過不斷重復(fù)的網(wǎng)絡(luò)剪枝操作,將網(wǎng)絡(luò)參數(shù)量減少到最小,從而達(dá)到最佳的運(yùn)行速度,同時(shí)保證精度損失可接受。為了達(dá)到最佳效果,可以在每兩輪剪枝期間加以微調(diào),即經(jīng)過幾輪重訓(xùn)練,以達(dá)到5倍以上的壓縮率。然而,剪枝性能與網(wǎng)絡(luò)模型密切相關(guān),不同的網(wǎng)絡(luò)模型會(huì)產(chǎn)生不同的剪枝效果。

剪枝后的網(wǎng)絡(luò)模型參數(shù)依然是32位浮點(diǎn)型數(shù)據(jù),但是在將其送往FPGA執(zhí)行加速運(yùn)算之前,必須將其轉(zhuǎn)化為8位定點(diǎn)型數(shù)據(jù),這一過程被稱之為參數(shù)量化。比如,8位定點(diǎn)量化可以將32位的浮點(diǎn)數(shù)取最近似的8位整數(shù),從而將參數(shù)信息壓縮至原來的1/4,以便更好地描述模型的特征。Vitis AI開發(fā)工具中的AI量化器可以有效地定量CNN模式,它可以將原始網(wǎng)絡(luò)凍結(jié),生成序列圖GraphDef,接著從一分組無標(biāo)記的數(shù)據(jù)集中抽取圖像,經(jīng)過定量校準(zhǔn),最后對(duì)網(wǎng)絡(luò)系統(tǒng)中的卷積層、池化層等32位的浮點(diǎn)型參數(shù)加以定量量化,從而大大提高了量化后網(wǎng)絡(luò)模型的準(zhǔn)確性和可靠性,而且可以有效地減少精度損失,從而提升模型的性能和可靠性。最后,加入量化微調(diào)步驟,通過小批次的重訓(xùn)練讓定點(diǎn)參數(shù)進(jìn)一步收斂,從而避免過大的精度損失。

4.3.2 網(wǎng)絡(luò)編譯

網(wǎng)絡(luò)編譯是一個(gè)非常重要的步驟。網(wǎng)絡(luò)編譯的目的是將訓(xùn)練好的深度學(xué)習(xí)模型轉(zhuǎn)化為能夠在加速器上運(yùn)行的代碼。在Vitis AI中,可以使用Xilinx的DNNDK工具對(duì)深度學(xué)習(xí)模型進(jìn)行編譯。Vitis AI的網(wǎng)絡(luò)編譯技術(shù)主要包括兩個(gè)方面:模型轉(zhuǎn)換和模型優(yōu)化。模型轉(zhuǎn)換是將訓(xùn)練好的深度學(xué)習(xí)模型轉(zhuǎn)換為能夠在加速器上運(yùn)行的代碼。Vitis AI提供了多種模型轉(zhuǎn)換工具,包括DNNC(Deep Neural Network Compiler)、DNNDK(Deep Neural Network Development Kit)和VART(Vitis AI Runtime)。這些工具可以將模型從不同的框架(如TensorFlow、PyTorch、Caffe和ONNX)轉(zhuǎn)換為可以在加速器上運(yùn)行的代碼。模型優(yōu)化是指對(duì)深度學(xué)習(xí)模型進(jìn)行優(yōu)化,以提高其性能和功效效率。在Vitis AI中,有多種模型優(yōu)化技術(shù)可供選擇,包括剪枝和量化、數(shù)據(jù)重排和內(nèi)存對(duì)齊、層次并行、數(shù)據(jù)流。其中剪枝可以減少模型的大小和復(fù)雜度,從而提高推理速度。量化可以將高精度的浮點(diǎn)數(shù)轉(zhuǎn)換為低位寬的定點(diǎn)數(shù),從而減少存儲(chǔ)和計(jì)算需求;重排數(shù)據(jù)可以減少內(nèi)存帶寬的需求,從而提高性能。內(nèi)存對(duì)齊可以使數(shù)據(jù)存儲(chǔ)在連續(xù)的內(nèi)存位置上,從而提高緩存效率;層次并行可以將模型分成多個(gè)子模型,以在多個(gè)FPGA核心上并行執(zhí)行,從而提高性能;數(shù)據(jù)流可以將模型分成多個(gè)流水線階段,以最大化處理器的利用率,從而提高性能。

4.4 小結(jié)

本文重點(diǎn)描述了動(dòng)態(tài)重構(gòu)加速器系統(tǒng)架構(gòu)EDRCA-YOLO的詳細(xì)設(shè)計(jì)。首先,對(duì)介紹了動(dòng)態(tài)重構(gòu)硬件加速器系統(tǒng)總體架構(gòu)的設(shè)計(jì)。然后,闡述了圖像預(yù)處理算法及其硬件加速設(shè)計(jì),詳細(xì)描述了可重構(gòu)模塊和圖像預(yù)處理算法的IP核接口設(shè)計(jì)。最后,闡述了基于Vitis AI的目標(biāo)檢測網(wǎng)絡(luò)模型推理加速器方案及網(wǎng)絡(luò)壓縮和網(wǎng)絡(luò)編譯的步驟。

推薦器件

更多器件
器件型號(hào) 數(shù)量 器件廠商 器件描述 數(shù)據(jù)手冊(cè) ECAD模型 風(fēng)險(xiǎn)等級(jí) 參考價(jià)格 更多信息
AFBR-2528CZ 1 Broadcom Limited Receiver,

ECAD模型

下載ECAD模型
$20.44 查看
KSZ8864CNXIA 1 Microchip Technology Inc DATACOM, ETHERNET TRANSCEIVER, QCC64

ECAD模型

下載ECAD模型
$7.74 查看
ASEMB-24.000MHZ-LC-T 1 Abracon Corporation MEMS OSC XO 24.0000MHZ CMOS SMD

ECAD模型

下載ECAD模型
$2.68 查看

相關(guān)推薦

登錄即可解鎖
  • 海量技術(shù)文章
  • 設(shè)計(jì)資源下載
  • 產(chǎn)業(yè)鏈客戶資源
  • 寫文章/發(fā)需求
立即登錄

公益知識(shí)星球:95后創(chuàng)業(yè)者;CCF學(xué)生會(huì)員;知識(shí)星球:ESTJ-A,森森FPGA學(xué)術(shù)技術(shù)分享;微信公眾號(hào):Lucky時(shí)先生;需要合作,請(qǐng)聯(lián)系微信:c1996sks,備注合作+單位

知乎