999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于宇航級FPGA的YOLOv5s網絡模型硬件加速*

2023-11-11 09:01:58蔣康寧卞春江
空間科學學報 2023年5期
關鍵詞:特征設計

蔣康寧 周 海 卞春江 汪 伶

1(中國科學院國家空間科學中心 北京 100190)

2(中國科學院大學 北京 100049)

0 引言

隨著中國航天與遙感工程技術的高速發展,目前衛星所能采集到的空間遙感圖像具有很高的分辨率和復雜多樣的場景信息,對遙感數據的獲取量也日益增加。面對如此大量的復雜高分辨率遙感圖像,傳統的遙感圖像處理方法在精確性和魯棒性方面的缺陷愈發明顯[1],而基于卷積神經網絡(Convolutional Neural Network,CNN)[2]的目標檢測算法在這兩個方面具有較為明顯的優勢,將其引入遙感圖像處理領域[3],能夠有效推動該領域的發展。然而卷積神經網絡算法通常模型復雜且計算量龐大,如何將其部署在空間與資源有限的星上平臺并高效運行,是本文研究的重點。

自從卷積神經網絡被引入到圖像處理領域,目標檢測算法得到高速發展。其被分為兩大類:一是基于候選區域的兩階段目標檢測,典型的算法有R-CNN[4],Fast R-CNN[5],Faster R-CNN[6],R-FCN[7]和Mask R-CNN[8]等;二是不需要候選區域的單階段目標檢測,主要包括SSD[9]和YOLO[10-13]系列算法。YOLO系列算法的核心思想是利用整張圖作為網絡的輸入,直接在輸出層回歸Bounding Box(邊界框)的位置及其所屬的類別,其中YOLOv5是目前YOLO系列中最新的目標檢測算法。相比前幾代算法,YOLOv5檢測速度更快,更加輕量化,十分適合在對資源、功耗、實時性要求嚴格的星上系統部署。此外YOLOv5網絡對遙感圖像的檢測具有良好的性能,Tan等[14]提出了一種基于改進YOLOv5的艦船目標檢測方法,該方法將目標檢測框的長寬作為參數進行考慮并將損失函數進行曲線優化,同時結合坐標注意力機制,實現了對艦船目標的高速與高精度檢測,將檢測精度由原來的92.3%提升到96.7%,平均精度均值 (Mean Average Precision,mAP)由原來的92.5%提升到97.2%。

FPGA具有體積小、功耗低、可重構性和性能強等優勢,在加速卷積神經網絡方向受到了越來越多的關注[15],此外相比大體積和高功耗的圖形處理器(Graphics Processing Unit,GPU),FPGA更加適合在資源和空間受限的星上平臺使用。Zhang等[16]針對YOLOv2-tiny網絡模型提出了一種基于FPGA的低延遲加速器架構,通過引入雙符號乘法校正電路來減少卷積運算的計算時間,取得了較高的運算速率,但加速器在設計中對數據采用了8 bit量化,導致精度有所損失,而且硬件資源DSP的使用率也不是很高。Bi等[17]通過對YOLOv2算法研究,設計了特殊的浮點數矩陣乘法單元和雙緩存數據處理電路,提高了卷積神經網絡的計算速度,但加速器整體架構的工作頻率較低。Zhang等[18]提出了一種基于ARM + FPGA異構架構的可重構卷積神經網絡加速器,二者通過高級可擴展接口 (Advanced eXtensible Interface,AXI)總線進行通信,FPGA接收ARM發送的配置信號,分時完成各卷積層的運算,最終達到了較高的峰值性能。Nguyen等[19]為避免數據與外部存儲的頻繁交互,提出了一種Tera-OPS流式傳輸架構設計,通過重用中間數據以最小化每個卷積層的輸入緩沖區大小,同時避免了對片外存儲器的訪問,實現了較高的處理速率,但其為降低數據存儲量,采用的是二值化網絡,導致數據精度下降。使用FPGA加速卷積神經網絡的性能與片上資源關系甚密,如何利用有限的硬件資源設計出高效的加速器處理架構是很重要的研究問題[20]。

針對星上平臺空間與資源受限,難以將模型復雜、計算量龐大的卷積神經網絡目標檢測算法部署在星上系統高效運行的問題,本文通過對YOLOv5s算法模型的詳細分析,設計了一種高性能實時并行處理架構,以及對卷積模塊、池化模塊、切片模塊和殘差模塊基于FPGA進行相應的分析與電路設計;此外針對FPGA片上存儲資源不足的問題,提出對特征圖與權重參數進行數據分塊與復用的優化策略,進而對該架構的實時處理性能進行仿真測試驗證,從計算速度和資源利用率等方面對設計進行綜合性能分析,并與其他算法模型在FPGA上的加速狀況進行對比。

1 加速器系統架構設計

1.1 整體架構設計

YOLOv5s網絡結構如圖1所示[21],主要由4個部分組成,即輸入端、Backbone主干網絡、Neck網絡和Prediction輸出端。

圖1 YOLOv5s的網絡結構Fig.1 Network structure of YOLOv5s

根據對YOLOv5s網絡模型的分析,基于FPGA平臺設計了如圖2所示的加速器整體架構,由于卷積運算占據了YOLOv5s網絡模型絕大部分的運算量,因此本端主要通過在FPGA上運行卷積運算實現YOLOv5s的前向推理加速。在圖2所示的處理器架構中,由于FPGA內部的存儲資源有限,特征圖和權重參數的數據量相對而言過于龐大,無法將其全部緩存在FPGA的片上緩存中,因此使用雙倍數據速率(Double Data Rate,DDR)外部存儲器儲存輸入特征圖、輸入權重和輸出特征圖數據;存儲訪問接口控制模塊通過控制內存接口生成器(Memory Interface Generator,MIG)核調度外部存儲器與片上緩存塊隨機存取存儲器(Block Random Access Memory,BRAM)之間數據的存儲與訪問;BRAM是片上緩存資源,外部存儲器的數據無法直接與FPGA的計算單元進行通信,需要通過BRAM緩存后再參與計算;處理元件 (Processing Element,PE)單元陣列負責完成輸入特征圖和輸入權重的卷積運算,其主要由DSP和加法器等計算單元組成。

圖2 加速器整體架構設計Fig.2 Accelerator overall architecture design

圖2中加速器架構的工作流程如下:首先FPGA通過存儲訪問接口控制模塊控制MIG核從DDR外部存儲器中讀取部分輸入特征圖和輸入權重數據,并將其分別緩存在輸入特征圖緩存隊列和輸入權重緩存隊列中;之后根據設計好的循環計算順序,依序將輸入特征圖數據和權重數據送入PE單元陣列進行處理,處理完畢后將輸出特征圖的中間結果暫存在輸出緩存隊列中;當計算得到輸出特征點時,將其傳輸到ReLU函數激活,部分卷積層需要經過殘差模塊和池化模塊的處理,最終通過存儲訪問接口控制模塊控制MIG核將輸出特征圖數據傳輸到DDR外部存儲器中。

1.2 卷積模塊設計

在YOLOv5s網絡模型中,卷積層占據整個神經網絡90%以上的運算量,消耗最多的計算資源和時間,因此基于FPGA對卷積神經網絡進行加速的設計側重于卷積并行計算的優化,以下兩方面是本文著重考慮的優化方向。

(1) 在FPGA片上計算資源允許的范圍之內,根據卷積神經網絡模型本身的特點,選擇合理的循環展開方式,盡可能地搭建最大規模的并行流水計算架構,縮減計算陣列在流水間所需的等待時鐘,從而提升加速器架構的性能。

(2) 在FPGA片上緩存資源允許的范圍之內,針對數據復用進行優化設計,最大限度地減少對外部存儲的訪問次數,以節約功耗。

1.2.1 循環并行展開設計

卷積神經網絡中的卷積計算由4個層次的循環組成,分別為卷積核循環、輸入通道循環、輸入特征圖循環和輸出通道循環[22],這4層循環有著較大的優化空間,其并行展開的方式和維度決定了卷積計算架構的設計,從而影響加速器優化設計的數據復用和存儲訪問模式,需要根據卷積神經網絡模型本身的特點來選取合適的循環展開方式和維度。

YOLOv5s的網絡模型結構較深,卷積層數多達70層,且卷積核的尺寸包括3×3和1×1兩種規格,其中卷積核尺寸為1×1的卷積層占據了大多數,如果采用卷積核循環展開進行處理架構的優化設計,會造成較大的資源浪費。 通過對YOLOv5s的網絡參數分析可知,對于該網絡中的70層卷積層,其中66層的輸入通道數和輸出通道數的最大公因數均為32,且各層輸入特征圖的最大公因數為20×20。考慮到FPGA片內的乘法器數量和片上存儲資源BRAM的數量,為了盡可能最大化處理架構的運算并行度,同時要滿足片上存儲資源的要求,YOLOv5s網絡比較適合采用輸入通道和輸出通道循環展開,此時輸入通道和輸出通道循環展開的并行度均為32,因此硬件處理架構的整體并行度為1024。

在上述處理架構中,總共用到了1024個DSP單元,而實際本文實驗所用到的FPGA中總共擁有3600個DSP單元。之所以在設計中沒有使用那么多計算單元,是因為該架構是針對星上平臺設計的,考慮到太空中復雜的空間環境,空間高能粒子造成的輻射和沖擊會對FPGA產生諸多影響[23],其中最主要的影響為單粒子效應 (Single Event Effect,SEE)[24]。為盡量避免單粒子效應對電路造成的負面影響,需要進行抗輻照加固設計,本文所采取的措施為三模冗余技術 (Triple Modular Redundancy,TMR)[25],因此在本次設計中FPGA中可用的DSP單元數量降低為總數的1/3,即1200個,同時考慮到輸入通道和輸出通道循環展開策略,最終將所需的DSP數量定為1024個。

1.2.2 卷積計算架構

根據YOLOv5s的循環展開優化分析,設計了如圖3所示的并行計算矩陣,該矩陣以輸入通道和輸出通道進行循環展開,總共有32×32個計算單元,即需要1024個DSP單元。由于權重數據需要從緩存隊列中同時為多個計算單元更新,因此將權重緩存隊列設置為1×32×32,也即總共有32個權重緩存隊列,且每個隊列中包含32個BRAM權重緩存單元,共計有1024個權重緩存單元。在進行權重數據更新時,每個權重緩存隊列只更新當前計算矩陣縱列的32個計算單元,因此整個計算矩陣每次可更新1024個計算單元的權重。針對輸入特征圖緩存隊列,采用逐點遞進的方式對計算單元陣列進行更新特征點,更新特征點時每個輸入通道將各自當前的一個特征點復制成32個后填充給矩陣橫排的32個計算單元,此時每個輸入通道只更新了一個特征點,而整個計算矩陣包含32個輸入通道,因此輸入特征圖每次可以更新32個特征點。當權重數據和輸入特征點更新完畢后,每個計算單元里的乘法器將權重數據和輸入特征點數據進行相乘,然后每個輸出通道采用五級流水的加法樹將本通道內的32個乘積進行相加,即可得到一個中間結果并將其存儲在中間結果緩存隊列中。

圖3 YOLOv5s卷積層并行計算矩陣Fig.3 Parallel calculation matrix of YOLOv5s convolution layer

1.2.3 帶寬分析

根據提出的卷積計算架構,權重參數和特征圖的更新是同時進行的,因此二者的外部緩存各自使用了一個DDR3存儲器,存儲器的工作頻率為800 MHz,且雙沿有效,數據位寬為64 bit。考慮到MIG核的工作效率為70%左右,則DDR3存儲器的最高帶寬約為70 Gbit·s-1, 即

其中,fDDR3為存儲器的工作頻率,Dbw為存儲器的數據位寬,EMIG為MIG核的工作效率。針對權重參數和特征圖,本文選用的數據精度為16 bit,FPGA的工作頻率為200 MHz。對權重參數和特征圖的帶寬需求進行分析。

在卷積計算架構中,每個時鐘需要更新1024個權重參數,因此權重的帶寬需求高達3200 Gbit·s-1,即

其中,fFPGA為FPGA的工作頻率,Nweight為權重參數一次更新的數量,Pweight為權重參數的數據精度。根據式(2)的計算,顯然權重的帶寬需求遠超DDR3所能提供的帶寬速率。如果在計算時采用對權重外部存儲頻繁訪問的方式,則計算單元陣列需要等待的周期極長,從而會造成加速器架構的計算效率低下。由于YOLOv5s是一個輕量化網絡,其每層的權重參數量并不算很大,以FPGA的片上緩存可完全存下其任意單獨一層的權重,因此只需在每層卷積開始時把當前層的所有權重讀入FPGA片上緩存中,之后便可持續復用,從而避免了權重讀取成為加速器架構高效運行的瓶頸。

相比權重參數,特征圖每個時鐘周期只需更新32個特征點,而且特征圖更新的帶寬需求與其復用度有關,即

其中,fFPGA為FPGA的工作頻率,NFM為特征點參數一次更新的數量,PFM為特征圖的數據精度,UFM為特征圖的復用度。式(3)表明,特征圖的復用度越高,其帶寬需求也就越低,因此當特征圖不被復用時,其帶寬需求最高,為100 Gbit·s-1,略大于DDR3的帶寬速率。其中,決定特征圖復用度大小的因素根據卷積核尺寸的不同而有所區別:針對卷積核尺寸為1×1的層,特征圖的復用度即為輸出通道數量與輸出通道并行度的比值;而針對卷積核尺寸為3×3的層,特征圖復用度除了與上述比值有關以外,還由于3×3的卷積窗口在特征圖上滑動時也會對特征圖產生一定的復用,因此其有著比卷積核尺寸為1×1的層更高的特征圖復用度。此外,雖然DDR3本身的最高帶寬約為70 Gbit·s-1,但特征圖的DDR存儲器不僅需要讀出輸入特征圖,還需要寫入輸出特征圖,因此其實際的特征圖讀取帶寬速率還會有所降低,這就會導致特征圖的帶寬需求成為瓶頸。通過計算分析可知,只有卷積核尺寸為1×1且輸出通道數為64及以下的卷積層,其帶寬需求會略有瓶頸,實際上這些卷積層的計算量占比較少,而其余卷積層的理想計算效率幾乎均可達到100%,因此加速器整體上是十分高效的。

1.2.4 數據分塊與數據復用

通常卷積神經網絡的輸入特征圖和權重參數數量龐大,FPGA內部的存儲資源有限,難以將其完全存下,需要將完整的數據等分為多個較小的數據塊,依次讀入FPGA片上緩存,也即數據分塊。其中輸入特征圖數據分塊的實現方式是沿著特征圖的輸入通道方向、以輸入通道并行度為基本單元進行劃分(見圖4),圖4中彩色數據帶即為被分塊的數據,分塊后的特征圖數據易于緩存和復用,有利于節約資源和功耗開銷。針對特征圖的復用,主要表現為卷積窗口在特征圖上滑動時所產生的復用(見圖5),針對尺寸為3×3的卷積核,使用三行線性緩沖隊列進行特征圖的預取,當卷積窗口在預取的特征圖上滑動時,當前窗口會與前一個窗口的數據存在部分重合,即可實現特征圖的復用。由于卷積窗口在行方向和列方向上均有滑動,因此對特征圖有著很高的復用率,當滑動的步長為1,2時,數據復用率分別可達88.9%,55.6%。

圖4 輸入特征圖數據分塊(彩色數據帶為被分塊的數據)Fig.4 Input feature map data block (The colored data bands are the data being chunked)

圖5 卷積窗口在特征圖上滑動產生的復用(黃色部分代表卷積窗口)Fig.5 Multiplexing generated by sliding the convolution window on the feature map (The yellow part represents the convolution window)

另外,由于YOLOv5s任意單獨一層的權重數量并不算很多,可由FPGA片上緩存全部存下,因此對其采用了循環分塊的優化方式。在每一層的卷積開始時就把當前層的所有權重數據加載至FPGA片上緩存,以卷積計算矩陣的并行度為基本單元將權重劃分為若干小塊,如圖6所示。每次加載部分特征圖到卷積計算矩陣的同時,加載相對應的小塊權重,直至當前部分的特征圖與所有權重計算完畢后,加載下一部分特征圖以及相對應的小塊權重,即可實現對權重數據的復用,以此避免了因頻繁訪問外部存儲所造成的時間與功耗開銷。

圖6 權重數據的循環分塊(不同顏色的部分代表各分塊權重)Fig.6 Cyclic block of weight data (Parts of different colors represent each weight block)

1.2.5 循環計算順序優化

根據之前的分析,由于YOLOv5s網絡模型本身的特點,在基于FPGA實現該網絡時適合選用輸入通道和輸出通道循環展開,為此設計了如下循環計算順序:首先將被分塊后的輸入特征圖數據沿著32個輸入通道從外部DDR存儲器中讀入到輸入特征圖片上緩存區,同時將所有的權重數據從外部存儲器中讀到權重片上緩沖區;卷積計算開始后,提取32個輸入通道輸入特征圖以及相應的卷積權重到PE陣列進行計算,計算完成后判斷是否所有輸入通道的特征圖計算完畢,如果沒有則更新下一32個通道的輸入特征圖,并對當前32個輸出通道的權重進行相應切換,直至完成所有輸入通道的特征圖與當前32個輸出通道權重的計算;然后判斷是否所有輸出通道的權重都已計算完畢,如果沒有,則更新下一32個輸出通道的卷積權重,并重復上述步驟,直至完成所有輸出通道,卷積計算結束。YOLOv5s的循環計算順序如圖7所示。

圖7 循環計算順序Fig.7 Cycle calculation sequence

1.3 池化模塊設計

YOLOv5s網絡模型中并沒有使用傳統的池化層進行特征圖的下采樣,其只在SPP結構中使用了步長均為1,尺寸分別為5×5,9×9和13×13的最大值池化層。由于這三種最大值池化層的池化窗口尺寸都比較大,且步長為1,如果直接使用比較器陣列求取每個池化窗口的最大值,不僅需要大量的時間開銷,而且數據復用度很低,會造成較大的資源浪費。考慮到上述情況,為降低時間開銷和減少資源浪費,針對上述三種較大尺寸的池化窗口,選用多級小尺寸池化窗口串聯代替大尺寸池化窗口的方式進行優化,以5×5池化窗口為例,具體優化設計如圖8所示。

圖8 5×5池化窗口多級串聯優化設計Fig.8 Multi-stage series optimization design of 5×5 pooling window

從圖8可以直觀看出,使用一個步長為1、尺寸為3×3的池化窗口對一個5×5的特征圖進行最大值池化時,每次池化均會得到一個當前窗口的最大特征點,當遍歷完整張特征圖時,會得到一個新的3×3特征圖,再使用3×3的池化窗口對該特征圖進行最大值池化一次,即可得到原5×5特征圖的最大值,等價于直接使用一個5×5的池化窗口對5×5的特征圖直接操作取最大值。

從圖8還可以看出,一個2級3×3的池化窗口可以代替一個5×5的池化窗口進行運算。使用5×5池化窗口進行最大值池化時,采用流水線的工作方式,一個池化窗口需要使用24個比較器才能每經過1個時鐘輸出一個窗口的最大值;而在使用2級3×3池化窗口實現最大值池化時,同樣是采用流水線的工作方式,只需要使用16個比較器即可在1個時鐘內完成上述相同的工作。同理,對于9×9和13×13的池化窗口可以分別使用4級和6級3×3的池化窗口級聯進行替代,此時9×9池化窗口所需的比較器數量從80個降低至32個,13×13池化窗口所需的比較器數量從168個降低至48個。這種采用多級3×3池化窗口代替多種較大尺寸池化窗口的優化設計方法,不僅能夠在保證計算結果不變的前提下,有效減少計算資源的開銷,而且可以將多種尺寸的池化窗口歸一化至3×3一種尺寸,從而極大地降低了設計的復雜度和工程實現的工作量。

對于3×3池化模塊的設計,可以使用流水線的方式將其分解成多級小模塊進行實現,如圖9所示,池化模塊實現方式如下:開辟3行首尾相連的緩存隊列,每行隊列緩存輸入特征圖完整的一行數據;當輸入特征圖數據緩存完畢后,將隊列中的數據依次填充進3×3池化窗口中,填充完成后選擇窗口中前兩列的數據進行比較,并將每行得到的較大值和窗口第三列的數據傳輸給下一級小模塊進行比較,輸出得到尺寸為1×3的數據列;同樣將其傳輸給下一級小模塊進行比較,得到1×2的數據列;將其傳輸給最后一級小模塊比較輸出,即可得到原3×3池化窗口的最大值。而且由于該池化模塊是流水線的設計,當第二級小模塊工作時,第一級小模塊可以同時處理新的3×3池化窗口的數據,有效降低了時間開銷。

圖9 池化模塊實現方式Fig.9 Working method of the pooling module

1.4 切片模塊設計

Focus組件主要由切片操作和卷積操作構成,先將尺寸為3×640×640的輸入特征圖進行切片,得到尺寸為12×320×320的特征圖,再使用32個卷積核進行卷積操作,得到尺寸為32×320×320的特征圖。其中切片操作是一種類似2倍下采樣的操作,且不會丟失特征圖信息,切片操作如圖10所示。

圖10 切片操作Fig.10 Slice operation

根據切片操作的方法和硬件數字電路以數據流的形式傳輸數據的特點,切片模塊的設計如下:假設單張輸入特征圖的尺寸為N×N,當特征圖數據以數據流的形式進行輸入時,每輸入一個有效數據,計數加1:當計數小于等于N時,說明這是輸入特征圖的第奇數行數據,當計數為奇數時,將該計數的有效數據從第一通道輸出,當計數為偶數時,將該計數的有效數據從第二通道輸出;當計數大于等于N且小于等于2N時,說明這是輸入特征圖的第偶數行數據,當計數為奇數時,將該計數的有效數據從第三通道輸出,當計數為偶數時,將該計數的有效數據從第4通道輸出;當計數大于2N時,將計數器清零,再次輸入就又是特征圖奇數行的數據,重復上述操作步驟,直至單張輸入特征圖輸入完成,即可得到切片后的無損2倍下采樣特征圖。切片操作流程如圖11所示。

圖11 切片操作實現流程Fig.11 Implementation flow chart of the slicing operation

切片操作采用上述方法進行實現,主要利用了FPGA流式傳輸數據的特點,切片操作是針對輸入特征圖進行一種類似2倍下采樣的處理,并沒有對特征圖數據進行實際的計算,當數據流進來時只需要將其按照特定的順序進行分開輸出即可完成,當特征圖輸入完成時也即完成了對其的切片操作,整個處理過程十分簡潔高效。

1.5 殘差組件的實現

YOLOv5s網絡模型在CSP結構中引入了殘差組件,殘差結構如圖12所示,由兩個卷積層和一個向量加法器構成,因此殘差組件是在卷積計算模塊的基礎上實現的。殘差計算模塊由輸入數據緩沖器、卷積計算模塊、加法器模塊和內存控制器模塊組成,其中輸入特征圖三隊列緩沖用于緩存卷積計算模塊的輸入特征圖數據,殘差模塊特征圖緩沖器也緩存相同的數據且保持不變,當三隊列緩沖器的特征圖數據完成兩級卷積計算后,將其輸出數據與緩沖器2的數據同時流向向量加法器,完成殘差計算,其中由內存控制器模塊負責實現數據緩沖器的輸入與輸出。

圖12 殘差結構及數據流向Fig.12 Residual structure and data flow

2 實驗結果

2.1 實驗環境設置

實驗使用Xilinx Vivado 2020.2集成設計環境進行硬件平臺開發,硬件編程語言為Verilog HDL,通過專用的仿真軟件ModelSim 2019進行功能仿真,并使用Xilinx公司Virtex-7系列的VC709連接套件作為硬件平臺,其搭載一型號為XC7 VX690 T的FPGA芯片,且該套件最高可以輸出200 MHz的時鐘頻率,擁有693120個邏輯單元、 52920 kbit的BRAM和3600個DSP等片上資源。

2.2 實驗結果與分析

實驗采用的數據精度為16 bit定點,并將FPGA運行的時鐘頻率設置為200 MHz。表1給出的是將本文實驗結果與其他文獻進行對比的情況,其中不同文獻的仿真環境版本略有差異,但仿真結果能夠反映FPGA的真實運行情況,仿真環境版本的不同對實驗結果并無實際影響。從表中可以看出,相較于文獻[17]和[18],本文在吞吐率和能耗比方面都有著碾壓性的優勢;而對于文獻[16]和[19],之所以在吞吐率方面本文結果略低,是因為前兩者在數據精度方面分別使用了8 bit量化和二值化網絡,而本文采用的是16 bit量化,若是采用與之相同的數據精度,則在吞吐率和能耗比方面將會有更好的表現;此外,在DSP計算效率方面,文獻[16]略低于本文結果。

表1 不同的CNN在FPGA上實現的情況比較Table 1 Comparison of different CNN implementations on FPGA

根據文獻[26],引入EDSP用于評估DSP的計算效率,其計算方法如下:

其中,PDSP為DSP矩陣的實際計算性能(394.4 GOPS);β為單個DSP在一個時鐘周期內所能處理的操作數,當數據精度為16 bit時β=2;NDSP為DSP矩陣中DSP的數量,取值1024;fFPGA為FPGA工作頻率,取值 200 MHz。

根據前文對帶寬需求的理論分析,各卷積層的DSP計算效率受到卷積核尺寸和輸出通道數大小的影響,通過實際的Vivado仿真波形測試得知,不同卷積層的DSP計算效率分類如下:對于卷積核尺寸為1×1、輸出通道數為32及以下的卷積層,DSP計算效率約為55.3%,占據7層;對于卷積核尺寸為1×1、輸出通道數為64的卷積層,DSP計算效率約為83.5%,占據11層;而對于輸出通道數為128及以上、任意卷積核尺寸的卷積層,以及卷積核尺寸為3×3、任意輸出通道數的卷積層,DSP計算效率幾乎均可以達到99%左右,占據52層。以某一計算效率達到99%的卷積層為例,該卷積層的卷積核尺寸為128×64×3×3、輸入特征圖大小為64×160×160,步長為1,FPGA的工作頻率為200 MHz,理想計算時間為9.216 ms,而實際自特征圖從DDR加載開始,直至本層所有特征圖卷積計算結束,總共用時9.23948 ms,DSP計算效率高達99.7%。通過綜合計算,對于整個包含70層卷積層的YOLOv5s網絡來說,平均DSP計算效率高達96.29%。

針對部分卷積層的DSP計算效率較低的情況,根本原因是特征圖讀取的帶寬需求超出了單片DDR3存儲器所能提供的帶寬速率,可以通過增加存儲器的數量以滿足所有卷積層的特征圖讀取帶寬需求,從而實現所有卷積層的計算效率均達到99%。但是對于星上平臺來說,DDR3存儲器成本很高,而DSP計算效率較低的卷積層占比較少,目前整個網絡的平均DSP計算效率已高達96.29%,通過增加存儲器數量所獲得的加速器性能提升并不明顯,因此綜合考慮來看,本文設計的硬件加速器在性能與成本方面均有著較好的表現。

3 結論

隨著中國遙感工程技術的進步,所獲取的遙感圖像具有高分辨率和背景復雜的特點,為提高對其目標檢測的精確性和魯棒性,基于卷積神經網絡的遙感圖像處理算法被應用于在軌實時目標檢測任務。但是星上平臺的空間與資源十分有限,難以將模型復雜、計算量龐大的卷積神經網絡算法部署在星上系統高效運行。針對這種情況,本文選用YOLOv5s網絡作為目標算法,并基于宇航級FPGA設計了一種卷積神經網絡前向推理硬件加速架構。

通過對YOLOv5s網絡的結構進行分析,基于FPGA設計了一種卷積神經網絡實時處理硬件加速架構,該架構以卷積加速模塊為核心,包括池化模塊、切片模塊以及殘差模塊等部分。其中,針對網絡中5×5,9×9和13×13三種大尺寸池化模塊,提出一種使用3×3池化窗口級聯代替上述三種大尺寸池化窗口的輕量化設計,使得這三種池化模塊分別節省了33.3%,60%和71.4%的比較器資源。最后對該架構進行實現與仿真測試,結果表明在200 MHz的FPGA工作頻率下,該架構的數據吞吐量為394.4 GOPS,功耗僅為14.662 W,說明在資源和功耗受限的星上平臺中使用FPGA對卷積神經網絡進行硬件加速具有顯著優勢。

針對星上卷積神經網絡遙感圖像目標檢測算法難以部署的問題,首次提出將基于FPGA的YOLOv5s網絡部署在星上系統,并在FPGA片上資源允許的范圍內,搭建出最大規模的適用于YOLOv5s網絡計算的硬件加速架構,用于加速網絡的前向推理計算。針對YOLOv5s網絡的模型參數進行分析,得出其卷積層在輸入通道和輸出通道方向均存在高度的并行性,且二者的展開并行度均為32,由此沿著這兩個方向做并行展開計算,提出一種并行度為1024的高性能DSP計算矩陣,使得整個網絡最終獲得的平均DSP計算效率高達96.29%。

猜你喜歡
特征設計
抓住特征巧觀察
何為設計的守護之道?
現代裝飾(2020年7期)2020-07-27 01:27:42
新型冠狀病毒及其流行病學特征認識
《豐收的喜悅展示設計》
流行色(2020年1期)2020-04-28 11:16:38
如何表達“特征”
不忠誠的四個特征
當代陜西(2019年10期)2019-06-03 10:12:04
瞞天過海——仿生設計萌到家
藝術啟蒙(2018年7期)2018-08-23 09:14:18
抓住特征巧觀察
設計秀
海峽姐妹(2017年7期)2017-07-31 19:08:17
有種設計叫而專
Coco薇(2017年5期)2017-06-05 08:53:16
主站蜘蛛池模板: 五月婷婷丁香色| 国产精品久线在线观看| 国产精品香蕉在线| 呦视频在线一区二区三区| 国产精品无码制服丝袜| 狠狠色综合久久狠狠色综合| 久久黄色毛片| 欧美国产在线精品17p| 亚洲成在人线av品善网好看| 国产亚洲精品精品精品| 国产成人精品高清不卡在线| 欧美日韩中文国产| 熟女日韩精品2区| 欧美啪啪网| 成人国产精品一级毛片天堂| 欧美一级大片在线观看| 国产欧美日韩综合一区在线播放| 欧美中文字幕在线视频| 欧美日韩亚洲国产| 精品欧美一区二区三区久久久| 亚洲欧美一区在线| 五月激情婷婷综合| 狠狠干综合| 国产精品午夜福利麻豆| 午夜无码一区二区三区在线app| 爱做久久久久久| 国产午夜福利亚洲第一| 亚洲成a人片| www.99在线观看| 91po国产在线精品免费观看| 四虎永久免费地址在线网站 | 国产自在线播放| 91极品美女高潮叫床在线观看| 国产精品自在线拍国产电影| 亚洲精品天堂在线观看| 五月丁香伊人啪啪手机免费观看| 国产午夜无码片在线观看网站 | 天天躁狠狠躁| 久久鸭综合久久国产| 免费视频在线2021入口| 国产一级毛片在线| 69av在线| 国产在线自乱拍播放| 欧美97欧美综合色伦图| 在线观看国产精美视频| 久草热视频在线| 成人综合在线观看| 国产最爽的乱婬视频国语对白| 亚洲成在人线av品善网好看| 免费观看男人免费桶女人视频| 国产精品林美惠子在线播放| 日韩av电影一区二区三区四区| 在线观看国产黄色| 国产精品福利导航| 日韩a级片视频| 91精品小视频| 亚洲一区二区三区在线视频| 国产精品久久自在自线观看| 国产欧美日韩精品综合在线| 天堂在线www网亚洲| 色综合久久无码网| 麻豆精选在线| 97在线免费| 日韩福利视频导航| 麻豆精品在线| 午夜不卡视频| 国产精品久久久久久久伊一| 色欲国产一区二区日韩欧美| 日韩福利在线视频| 亚洲欧美一区二区三区蜜芽| 人人妻人人澡人人爽欧美一区| 久久亚洲国产一区二区| 四虎精品黑人视频| 日韩欧美综合在线制服| 久久亚洲精少妇毛片午夜无码 | 香蕉综合在线视频91| 激情视频综合网| 一区二区日韩国产精久久| 亚洲国产午夜精华无码福利| 国产精品成人一区二区不卡| 一区二区三区高清视频国产女人| 国产乱人乱偷精品视频a人人澡|