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

基于FPGA 的Winograd 算法卷積神經網絡加速器設計與實現

2023-11-18 12:12:58牛朝旭孫海江
液晶與顯示 2023年11期

牛朝旭,孫海江*

(1.中國科學院 長春光學精密機械與物理研究所,吉林 長春 130033;2.中國科學院大學,北京 100049)

1 引 言

卷積神經網絡被廣泛應用于許多深度學習系統中,并在全息圖像重建[1]、光學計量[2]和自動駕駛[3]等多種計算機視覺任務中取得了顯著的成效。為了達到更高的精度,一些研究引入了多尺度特征增強[4]、弱光照圖像增強[5]以及RGB-D 特征融合[6]等更為復雜的算法,使得網絡計算復雜度和模型規模也更為龐大,進而導致了計算功耗的提升[7]。在一些低功耗的應用場景中,如星上AI 計算、遙感圖像在軌處理等,常規的硬件平臺部署卷積神經網絡十分困難[8]:通用的中央處理器(Central Processing Unit,CPU)無法滿足卷積神經網絡的計算需求;圖形處理器(Graphic Processing Units,GPU)功耗太高,無法應用于嵌入式環境;專用集成電路(Application Specific Integrated Circuit,ASIC)成本高昂且通用性差。與之相比,計算并行度高、功耗低、可重復編程的現場可編程門陣列(Field Programmable Gate Array,FPGA)更適合應用于星上智能計算、在軌目標識別等低功耗環境下的卷積神經網絡的硬件加速中。

傳統的空間卷積算法通過循環展開、并行計算的方法進行加速計算,在早期被人們廣泛使用,如脈動陣列[9]、層集群并行映射方法[10]等加速方法被先后提出。隨著卷積神經網絡的層次變深、卷積核尺寸變小,傳統的卷積方法在卷積效率上已經逐漸落后,快速卷積算法顯現出它的優勢。文獻[11]將快速傅里葉變換FFT 算法應用于卷積中以加速計算,但此方法只對大尺寸卷積核具有良好的加速效果,否則其轉換過程會引入大量補零操作,得不償失。文獻[12]提出在卷積計算中使用Winograd 算法降低計算復雜度。Winograd 算法是通過對輸入特征矩陣和權重矩陣做線性變換后再求哈達瑪積,減少了乘法次數,實現了硬件上計算效率的提升。文獻[13]提出在FPGA 上使用行緩存結構提高Winograd 算法切片之間的行數據重用。文獻[14]提出雙緩沖區5×5 流水線卷積方法。但是上述文獻并沒有充分復用重疊數據,也沒有在目前使用廣泛的小卷積核網絡上充分發揮FPGA 低功耗的特性。

本文設計了一種Winograd 算法卷積神經網絡加速器。首先設計了輸入數據緩存復用模塊,結合行緩存和列緩存重疊數據,最大化重用了片上數據,減少了頻繁數據搬運的開銷。針對FPGA并行運算特性,設計多通道并行Winograd 卷積運算陣列,并將卷積過程分解為六級流水線,提高了運算效率和吞吐量。為了提升計算速度和數據傳輸速度,使用權重8 位定點數(INT8)量化的方式來壓縮模型,數據量減少到1/4。最后針對遙感圖像分類數據集修改VGG16 網絡,將加速器部署至ZCU104 平臺進行實驗驗證。實驗結果表明,本設計相比其他FPGA 設計方案在功耗和計算效率上都有一定的提升。

2 Winograd 算法

文獻[15]提出的Winograd 算法可以用于減少有限脈沖響應(Finite Impulse Response,FIR)濾波器的乘法次數,之后被應用于卷積神經網絡加速中以減少乘法數量的方式來提升計算速度。在一維Winograd 卷積計算中,設卷積核尺寸為r,卷積結果輸出長度為m,則一維Winograd 卷積計算公式F(m,r)需要的乘法數量為m+r-1,而傳統卷積為m×r。可以看出,當r和m都大于1時,Winograd 卷積乘法數量更少。

以F(2,3)為例,用d=[d0d1d2d3]T表示輸入向量,g=[g0g1g2]T表示卷積核,r=[r0r1]T表示輸出向量,其計算過程可以表示為:

因此可知,普通卷積需要6 次乘法和4 次加法,即:

而F(2,3)的Winograd 卷積可寫成如下矩陣乘法形式:

其中m0、m1、m2、m3計算如下:

其中,輸入信號d的變換需要4 次加法。而對于卷積神經網絡推理階段的卷積核g,其數值是固定的,其變換可以預先計算好進行存儲,同時其中的除2 操作可以用位移代替,所以計算需求可以忽略。輸出項r還需要中間項m進行4 次乘法和4 次加法,所以F(2,3)的Winograd 乘法數量為4 次、加法數量為8 次。相較于傳統卷積,以加法為代價,節省了33%的乘法數,考慮到在硬件實現的乘法的實現成本遠高于加法。因此使用Winograd 算法能夠提升運算速度。

上述計算可以整理為如下的矩陣形式:

一維Winograd 卷積推廣到二維Winograd 卷積,可得到如下矩陣形式:

其中W和In 是輸入數據,Out 是輸出結果。AT、G、BT都是常數矩陣,在F(22,32)時為:

Winograd 卷積計算F(22,32)的過程如圖1 所示。一次F(22,32)卷積計算可以將乘法數從36次降低為16 次,計算效率提升了2.25 倍。

圖1 Winograd 卷積過程示意圖Fig.1 Schematic diagram of Winograd convolution process

3 卷積神經網絡加速器的構成

卷積神經網絡加速器的整體架構如圖2 所示。因為基于ZYNQ 平臺,所以分為可編程邏輯(Progarmmable Logic,PL)端和處 理系統(Processing System,PS)端兩部分。PL 端負責計算卷積神經網絡的卷積、池化、全連接等相關層,PS 端負責控制PL 端的運行以及傳輸數據。兩部分主要通過AXI-DMA 進行數據交互,并使用AXI-FIFO起到對數據流緩沖的作用,防止數據接收不及時造成的數據丟失。

圖2 卷積神經網絡加速器硬件架構圖Fig.2 Hardware architecture diagram of convolutional neural network accelerator

PS 端讀取SD 卡中的權重數據和特征數據到DDR 內存,通過寫寄存器控制當前PL 端運行網絡的層數。之后開始計算,通過AXI-DMA 使用AXI-Stream 總線向PL 端寫入DDR 上的數據,緩存至特征數據緩存模塊或權重數據緩存模塊。在卷積層中,將卷積計算按照并行計算方式循環展開,之后根據計算窗口位置的不同,輸出數據到六級流水線卷積層,得到中間計算結果后累加緩存,完成整幅輸出通道的計算后經AXI-DMA輸出數據到DDR 上,作為下一層特征數據存儲。依此類推,直至完成網絡全部層的計算,得到輸出結果。

4 卷積神經網絡加速器設計

4.1 硬件8 位定點數量化

32 位浮點數在FPGA 上進行乘加運算時會消耗更多的片上資源,占用更多的位寬。為了提高數據吞吐速率和加速器計算效率,可以使用量化后的8 位定點數,在精度損失不大的情況下達到壓縮模型的目的。為了更適合FPGA 硬件電路實現,本文選擇了線性對稱且逐層的量化方式。

量化的過程就是放縮的過程。將32 位浮點數的數值范圍線性縮小到8 位定點數的數值范圍,就得到了INT8 的權重數據。其量化公式如式(11)所示:其中:x表示32 位浮點數據,scale 表示縮放比例,zero_point 表示映射零點偏移,round 表示四舍五入的取整操作。因為采用對稱式量化,所以zero_point 為0。通過KL 散度校準訓練可以得到最優縮放比例,提升量化后精度。VGG16 網絡逐層量化后的部分結果如表1 所示,可以看到量化后結果全部為整數,且縮放比例均為2 的整數冪,可以通過移位實現縮放,易于在硬件上實現8 位定點數量化。

表1 VGG-16 網絡量化后的部分結果Tab.1 Partial results after quantification of VGG-16 network

硬件量化流程如圖3 所示。將32 位浮點數權重經過訓練后量化,可以得到8 位定點權重,與8 位定點特征數據卷積后,擴展位寬到16 位。經過多通道累加,輸出數據位寬擴展到32 位。之后累加上偏置,利用移位量化得到下一層計算所需的8 位定點特征數據。為減小誤差,移位量化時對需要舍去的小數位采用向偶數進位的模式。

圖3 硬件量化流程圖Fig.3 Diagram of hardware quantification flow

4.2 輸入數據緩存復用模塊

FPGA 的存儲資源可以分為片上存儲和片外存儲兩種。片上存儲主要是Block RAM,它存儲和讀取的速度快,但是容量小,無法將網絡權重數據全部保存在片上,只能夠將其存于片外存儲DDR 中,再分批輸入到片上進行計算。

卷積計算時一個輸出通道的結果需要累加全部輸入通道的中間計算結果。為了減少片上緩存的占用,采用輸入通道切片的方式處理特征數據。計算完成一組輸出通道對應的全部輸入通道切片后,再切換到下一組輸出通道。

切片卷積的整體流程如圖4 所示。開始某一卷積層計算后,循環完成部分卷積核的切片卷積計算。待部分卷積核的全部層卷積完成后,更換卷積核繼續進行循環卷積,直至全部卷積核都已運算完成,結束當前卷積層運算。

圖4 切片卷積流程圖Fig.4 Slice convolution flow chart

為了便于不同輸入通道同時計算,使用特征數據融合設計。原輸入順序是輸入第一通道后再輸入下一通道,這種方式需要將全部數據輸入完成后才可開始計算,占用較多的存儲空間。而經過數據融合,可以將同一位置的4 個輸入通道數據組合傳輸,如圖5 所示。這種設計可以充分利用輸入數據位寬,在得到中間結果后,不需要暫存中間數據就可以完成結果累加,減少了片上緩存的占用。

圖5 特征數據融合設計圖Fig.5 Design drawing of feature data fusion

在輸入數據緩存復用模塊中,因為Winograd卷積的特殊性,輸出窗口大小為4×4,步長為2。這就導致相鄰窗口間有步長為2 的數據重疊。為了復用行重疊數據,本文設計了循環復用的輸入數據緩存模塊,如圖6 所示。設置6 個Block RAM,每個存儲一行特征數據。數據以128 bit 位寬順序寫入,當寫入完成前4 個Block RAM 后,在寫入第5 個Block RAM 的同時,并行輸出前4 個Block RAM。當Block RAM 數據全部輸出后,第5、6 個Block RAM 也完成寫入,此時在寫入第1 個Block RAM 的同時,復用第3、4 個Block RAM 數據,并行輸出后4 個Block RAM。依此交替,3 個狀態構成循環的一個周期。在降低片上存儲占用的同時,實現了串并轉換和行數據復用。

圖6 輸入數據緩存復用模塊示意圖Fig.6 Schematic diagram of input data buffer reuse module

4.3 Winograd 流水線卷積模塊

卷積計算存在內部的并行性,分別是行并行、列并行、輸入通道并行、輸出通道并行和核內并行。從算法層面看,這5 種并行方式可以任意組合先后順序。但從硬件實現的角度,合理的并行計算方式可以節省片上資源,提高計算效率。經分析,本文選擇使用4 輸入通道并行、8 輸出通道并行、核內16 并行度的方式進行卷積計算。

Winograd 卷積需要逐步計算完成,采用流水線的設計方式可以提高計算效率。卷積模塊共分為六級流水線,其結構如圖7 所示。

圖7 六級流水線卷積設計圖Fig.7 Convolution design drawing of six stage assembly line

第一級是列數據復用組合輸出。模塊接收并暫存輸入數據緩存模塊輸出的4×2 數據,即圖中的灰色數據塊。等下一周期橙色數據塊輸入后,組合為4×4 窗口大小輸出到第二級,便于下一級進行Winograd 矩陣變換。暫存數據也替換為橙色數據塊。下一周期綠色數據塊輸入后再次組合輸出,如此循環往復。緩存的4 行2 列數據每周期切換,實現了相鄰窗口之間的列重疊數據復用,提高了數據利用效率。

第二級和第三級是矩陣變換。特征矩陣和權重矩陣都需要進行變換。由于權重是預先訓練完成的,可以提前變換后保存在DDR 上直接輸入,降低片上資源的占用。因此只需要對特征矩陣乘上常數矩陣進行變換。

第四級是多通道并行乘加。多輸入通道和多輸出通道可以并行相乘,這也是計算最為集中的環節。不同輸入通道的中間結果累加后才可以得到輸出數據,為了優化時序,使用加法樹的方式進行累加。

最后經過第五級和第六級矩陣變換之后,就可以得到8 個輸出通道的2×2 輸出數據。作為中間結果輸出到緩存模塊暫存。

以VGG-16 網絡的第一層卷積為例,當輸入圖像為圖8 時,可以得到輸出前8 個輸出通道結果以灰度圖展示如圖9。

圖8 河流圖的遙感圖像Fig.8 Remote sensing image of river map

圖9 卷積輸出灰度圖Fig.9 Grayscale image of convolution output

4.4 數據累加輸出模塊

數據累加輸出模塊(圖10)獲取到卷積模塊的輸出數據后,按照輸出通道不同,暫存在緩存A 的不同Block RAM 中。當存儲完一組卷積核的一組輸出結果后,在下一組結果輸入前依次讀出,一起輸入加法樹累加后再次存入Block RAM,覆蓋之前的結果。當這組卷積核的全部結果計算完成后,切換緩存,使緩存B 繼續存儲結果,緩存A 則輸出所有計算結果到DDR 中。這種設計可以在不中斷數據輸入和計算的同時輸出結果,減少了數據輸出時的阻塞時間。

圖10 數據累加輸出模塊狀態圖Fig.10 Status diagram of data accumulation output module

在卷積計算之后,裁剪了邊緣處的數據,輸出特征圖像的尺寸會減小。隨著網絡層數的加深,如果不做處理,特征圖像尺寸會越來越小,造成信息的丟失。為了防止這一現象,在一層數據輸出時進行padding 填充,即對特征圖像周圍補0。為了減少數據傳輸時間、節省存儲資源,在設計中省略了第一行和最后一行全部數據為0 的值,只在中間行的首尾列補0,在特征數據窗口讀取時再補首末行的0。

5 實驗結果及分析

5.1 實驗環境

本文的實驗平臺為Xilinx 公司的ZCU104 開發板,芯片型號為XCZU7EV-2FFVC1156。PS 端片外存儲為2 GB 大小的DDR4,PL 端片上存儲為38 Mb 的Block RAM 和Ultra RAM,可以滿足實驗需求。在RTL 代碼編寫完成后,使用Vivado 2018.3 進行仿真測試。在綜合實現完成后,編寫SDK 程序,燒錄上板進行實驗。

本文基于經典的VGG-16 網絡進行了改進。VGG-16 網絡具有提取特征能力強,結構清晰簡單、易于修改的特點,且其卷積核尺寸小,全部為3×3,更便于Winograd 算法的應用。但是VGG-16 網絡主 要針對ImageNet ILSVRC2012 數據集進行1 000 種標簽的分類,為了將其適用于遙感圖像分類的任務中,使用NWPU-RESISC45 數據集對其進行遷移學習,并修改最后的全連接層輸出為45,對應數據集的飛機、機場、棒球場、籃球場、沙灘等45 種標簽。修改后的VGG-16 網絡結構如表2 所示。

表2 修改后的VGG-16 的網絡結構Tab.2 Revised VGG-16 network structure table

5.2 性能分析

設定加速器時鐘頻率為200 MHz,經綜合實現后硬件資源占用情況如表3 所示。其中LUT表示片上所有查找表;LUTRAM 表示作為存儲資源使用的查找表;BRAM 和URAM 表示片上的專用塊RAM 存儲器;DSP 則表示片上運算單元,主要用于乘法運算當中。

表3 硬件資源占用情況Tab.3 Hardware resource usage

可以看出,加速器使用DSP 資源比例相較LUT 和BRAM 等資源比例較低,原因在于數據帶寬限制了數據傳輸速度。如果通過提高DSP 使用量的方式繼續提升加速效果,可以更換硬件資源更豐富、帶寬更大的開發板平臺或者使用PL 端的DDR 存儲圖像和權重數據。在時序穩定的前提下,也可以通過提高時鐘頻率來獲得更快的加速效果。

實驗時,首先讀取SD 卡中的權重數據和圖像數據到DDR 內存上,讀取后的圖像數據如圖11所示,位于DDR內存的0×1 000 000地址處。

圖11 圖像數據存入DDR 內存展示圖Fig.11 Display diagram of image data stored in DDR memory

硬件實驗平臺如圖12 所示。讀取圖8 所示圖像后完成計算,通過串口輸出到上位機得到圖像分類的標簽與分類概率,如圖13 所示。

圖12 ZCU104 硬件平臺測試圖Fig.12 ZCU104 hardware platform test diagram

在NWPU-RESISC45 數據集上驗證后得到FPGA 實現遙感圖像分類的TOP-1 準確率,與GPU 實現的準確率對比如表4 所示。在精度損失不超過1%的情況下,將網絡大小壓縮為原大小的28.6%,效果顯著。

表4 硬件實現后網絡精度對比Tab.4 Comparison of network accuracy after hardware implementation

將加速器與其他方案的實驗結果進行對比,如表5 所示。由于不同的設計方案采用的FPGA平臺不同,因此將計算效率和能效作為主要性能指標進行分析。本文提出的加速器與文獻[16]的Caffeine 結構、文獻[17]的Angel-Eye 結構相比,使用了更少的硬件DSP 資源,實現了更高的計算吞吐量。與文獻[18]中提出的將乘加樹與脈動陣列相結合的乘加陣列相比,雖然由于硬件規模不同,在卷積層計算性能方面存在差距,但是本設計在能效比上較為接近,且DSP 計算效率提升為1.635 倍。

表5 與現有FPGA 加速方案的對比Tab.5 Comparison with existing FPGA acceleration schemes

6 結 論

本文提出了一種基于FPGA 的Winograd 算法卷積神經網絡加速器。在卷積算法方面,采用Winograd算法減少乘法運算量,并設計了輸入數據緩存復用和流水線相結合的方式,充分復用了行列間的重疊數據,提高了傳輸效率。使用8 位定點數對權重和數據量化,提高數據吞吐速率和加速器計算效率。經過六級流水線并行卷積計算之后,得到的數據分組循環累加,降低了片上緩存的占用。在ZCU104開發板上的實驗表明,加速器卷積層計算性能達到了354.5 GOPS,片上DSP 計算效率達到0.69,與相關研究相比,實現了1.6 倍以上的提升。本設計在計算效率上優于其他FPGA加速器設計方案,能夠以較高能效完成遙感圖像分類任務中的硬件加速計算。

主站蜘蛛池模板: 精品国产美女福到在线不卡f| 色精品视频| 亚洲一欧洲中文字幕在线| 亚洲码一区二区三区| 亚洲国产中文欧美在线人成大黄瓜| 色成人综合| 秘书高跟黑色丝袜国产91在线| 狠狠干综合| 国产一区二区三区夜色| 久久精品娱乐亚洲领先| 国产美女主播一级成人毛片| 99在线观看免费视频| 专干老肥熟女视频网站| 国产精品深爱在线| 国产激情影院| 国产一区二区三区日韩精品| 亚洲视频色图| 超碰aⅴ人人做人人爽欧美 | 伊人色在线视频| 亚洲有无码中文网| 91啦中文字幕| 亚洲人成人无码www| 久无码久无码av无码| 91青青视频| 成人国产精品网站在线看| 日本尹人综合香蕉在线观看 | 黄片一区二区三区| 永久免费无码日韩视频| 尤物成AV人片在线观看| 无码丝袜人妻| 夜夜高潮夜夜爽国产伦精品| 精品无码视频在线观看| 国产第一色| 亚洲欧美色中文字幕| 亚洲爱婷婷色69堂| 免费观看男人免费桶女人视频| 亚洲视频在线观看免费视频| 国产精品自拍露脸视频| 亚洲天堂日韩av电影| 国产专区综合另类日韩一区| 无码国产伊人| 国产理论最新国产精品视频| 波多野结衣视频网站| 久爱午夜精品免费视频| 无码中文字幕精品推荐| 国产导航在线| 毛片一级在线| 亚洲精品久综合蜜| 国产69精品久久久久妇女| 国产成人精品高清在线| 日韩午夜伦| 国产中文一区a级毛片视频| 综合五月天网| 欧洲亚洲欧美国产日本高清| swag国产精品| 91国内在线观看| 国产特级毛片| 欧美在线观看不卡| 欧美久久网| 啦啦啦网站在线观看a毛片| 国产精品综合久久久| 国产99精品久久| 中文字幕日韩丝袜一区| 亚洲无码高清一区二区| www.精品视频| 国产成人精品男人的天堂| 日韩精品成人网页视频在线 | 黄色成年视频| 中文字幕在线看| 99久久精品国产精品亚洲 | 美女无遮挡拍拍拍免费视频| 亚洲一区二区精品无码久久久| 伊人久久久久久久| 极品尤物av美乳在线观看| 美女免费黄网站| 亚洲成a人片在线观看88| 国内自拍久第一页| 58av国产精品| 精品久久久久久成人AV| 国产真实乱人视频| 片在线无码观看| 日韩精品中文字幕一区三区|