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

基于混合架構的卷積神經網絡算法加速研究

2022-03-22 03:34:50郭子博高瑛珂胡航天吳憲云
計算機工程與應用 2022年6期
關鍵詞:指令特征檢測

郭子博,高瑛珂,胡航天,弓 鐸,劉 凱,吳憲云

1.西安電子科技大學 計算機科學與技術學院,西安 710071

2.北京控制工程研究所,北京 100089

3.西安電子科技大學 通信工程學院,西安 710071

近些年,隨著算力和數據的激增,神經網絡算法有了長足發展,在圖像、語音、視頻處理等任務上已展現出超越傳統算法的精度和效率[1-2]。特別是2012年AlexNet[3]網絡模型提出之后,基于卷積神經網絡(convolutional neural network,CNN)的智能圖像處理方法已經逐步成為主流方法并開始應用于航空航天、工業檢測、自動駕駛等生產生活中的關鍵領域。

但卷積神經網絡在提供強大的圖像特征提取能力的同時也帶來了龐大的計算參數和數以10億計的浮點計算量。為了獲取參數頻繁訪存以及浮點數計算也帶來了十分可觀的功耗,一個10億神經元的全連接神經網絡模型以20 FPS運行時,僅對內存數據的存取就需要12.8 W的能耗[4],即便MobileNet[5]、ShuffleNet[6]這樣的輕量化網絡在部署過程中也會產生不小能耗。為此,無論是擁有大規模服務器集群的數據中心還是計算資源較少的邊緣設備都將面臨計算時間、資源占用、能源消耗之間的矛盾。典型的CPU平臺可以提供10~100 GFLOPS的算力,但其能效比通常低于1 GOP/J[7]。GPU平臺可提供10 TOPS以上的峰值性能,但其能耗消耗較大不適合部署在能效要求高的場景??伸`活定制的FPGA和ASIC平臺可針對卷積神經網絡的模型結構設計并行計算的體系結構,優化計算和存取的流程,從而達到加速算法的效果。關于ASIC設計,中科院的DianNao系列神經網絡處理器[8]、MIT的Eyeriss芯片[9]、Google的TPU芯片[10]都展現出了優秀的性能和能效比,但ASIC設計成本高、開發時間長,且結構固定難以不斷適應新的算法。FPGA高并行、可編程、低功耗的特性十分適合加速基于CNN的算法,近些年學術界也開展了一些相關研究。Han等人在ICLR2016會議上提出了一種網絡模型壓縮方法[4],通過該方法可壓縮網絡參數中的冗余,且在推理階段可使用定點數進行計算。在FPGA2017會議上,其又提出了一種LSTM稀疏網絡的FPGA加速方法。該方法相較CPU有40倍的能效提升。Nakahara等人在FPGA2018會議上提出了一種輕量化的YOLOV2模型并實現了一種二值化卷積神經網絡在FPGA上的實現方法,達到40.81 FPS處理速度,功耗為4.5 W[11]。美國東北大學Ding等人在FPGA2019會議上提出了一種在FPGA平臺上針對tiny-YOLO目標檢測算法的異構權重量化方法并在計算中通過FFT和IFFT來降低復雜度。在功耗21 W的情況下達到了314.2 FPS的檢測性能[12]。

綜上,權衡功耗和邊緣化場景的計算資源,本文提出了一種FPGA和CPU混合架構加速CNN的方法,將少量涉及浮點操作的前后處理在CPU平臺計算,用于特征提取的CNN骨干網絡在FPGA平臺使用指令控制數據流的高速DSP脈動陣列進行并行加速計算,兩個平臺通過PCI-Express(peripheral component interconnect express)總線傳輸數據。使用YOLO目標檢測算法進行了大量實驗,驗證了這種方法的有效性。

1 模型加速方法

首先,為了有效利用FPGA內部較少的存儲資源,本文在部署網絡模型之前,對其進行了壓縮優化。之后,在Xilinx FPGA上實現了一種由指令控制數據流的DSP陣列計算加速結構。最終,還使用多線程技術優化CPU處理速度,達到了流水處理效果。

1.1 模型優化

為了簡化模型推理過程、優化存儲空間,本文對原始網絡模型做了BN層(batch normalization layer)融合與動態定點量化。

1.1.1 BN層融合

在訓練過程中為了加速網絡的收斂防止過擬合,許多CNN網絡結構會在卷積層后加入BN層(統計該層數據根據最大值將所有數據映射到0到1之間)。含BN層的卷積計算公式如式(1)所示:

其中,γ為縮放因子,σ2為方差,μ為均值,β為偏置。

1.1.2 動態定點量化

除了BN層融合,為了去除網絡模型冗余并適應FPGA計算方式本文還采用動態定點量化方法[13]對模型進行了量化壓縮。

如公式(2)所示,動態定點數共享指數,第一位為符號數,其他位為尾數。Fl為指數位單獨存儲(在FPGA中在隨指令存儲),bw為數據位寬,Fi代表尾數位置的值。在每層卷積計算結束后,從指令讀取Fl,采用移位的方式將數據進行量化后繼續進行前向傳播。

1.2 總體設計

本文在FPGA上實現了一種RTL級指令控制數據流的體系結構[14],該結構使用高速DSP陣列[15]加速卷積計算。除此之外,該結構保留了一定通用性,使用軟件生成的專用指令集可控制數據流以實現不同骨干網絡的前向傳播。少量涉及浮點數計算的圖像前處理和特征圖后處理本文設計使用CPU進行計算,利用混合架構的形式加速卷積神經網絡算法的推理計算。

整體設計的數據流和控制流圖如圖1所示,CPU將前處理的特征圖通過PCI-Express總線存入片外內存。特征緩存與權重緩存根據指令操作碼從片外內存中讀取并緩存特征圖與權重數據。這些數據經指令控制被送入DSP陣列進行乘加計算,計算結果在指令控制下經過量化、激活、池化、上采樣等邏輯計算模塊的計算后得到特征圖。中間層特征圖寫回特征緩存參與后續的傳播,輸出層特征寫回片外內存,CPU通過PCI-Express總線讀取并根據不同的算法進行后處理得到最終結果并顯示輸出。其中,指令預存儲在片上緩存(ROM)中。

圖1 混合架構總體設計圖Fig.1 Mixed architecture overall design diagram

1.3 DSP加速陣列設計

卷積神經網絡的核心算子是卷積,本文采用高速DSP脈沖陣列來實現卷積算子,其中核心設計就是DSP陣列以及適應陣列的卷積分塊緩存。

1.3.1 DSP陣列設計

卷積計算本質就是特征圖像素與各個卷積核權重的乘加計算。如圖2所示,以輸入輸出均為32通道的1×1卷積為例,結果特征圖Result的(1,1)位置第一通道像素來自輸入特征圖Fmap與卷積核W1對應通道位置數值相乘再疊加,即32次乘與31次加計算,而該位置的其他通道像素則來自Fmap與Wn的計算。

圖2 1×1卷積計算示意圖Fig.2 Schematic diagram of 1 by 1 convolution calculation

主流卷積神經網絡通常有眾多通道更深的卷積計算,浮點操作數(floating point operations,FLOPs)通常以10億計,若串行計算必然導致可觀的延時。但如圖2下方MAC中所示,每個位置通道間的計算并無相關性,因此并行各通道乘與加計算可有效加速卷積計算。本文就用高速DSP陣列并行這部分計算達到了加速卷積計算的目的。DSP作為FPGA中的一種計算資源支持乘法、乘法累加、乘法加法、桶形移位等操作,而將多個DSP級聯在一起,利用DSP不同的計算模式可形成乘累加鏈,進而實現并行乘加運算的效果。

DSP陣列的具體設計如圖3所示,將32×16個DSP48E1資源級聯成一個矩形陣列,每一列由32個DSP級聯,第一行采用A×B的計算模式,其他用A×B+PCIN模式(PCIN來自上層DSP計算結果)形成一條乘累加鏈。當每列DSP傳入特征圖與權重的32個通道數值,可在一個時鐘內完成圖2中MAC所示的32次乘加計算,在列方向上實現了輸入特征各通道間并行計算。

圖3 高速DSP陣列設計圖Fig.3 High speed DSP array design diagram

共16列則可同時做16個卷積核權重的計算,通過每列傳入相同特征圖,而不同列傳入不同卷積核權重實現。每列的輸出值為計算結果各通道數值,由此可在行方向實現輸出特征各通道間并行計算。

Xilinx FPGA內部DSP工作頻率經過測試最高可達800 MHz,但受FPGA本身的性能限制,除DSP之外的其他計算不能達到如此高的頻率,換言之數據準備模塊向DSP發送特征與權重數據的速度遠小于DSP計算速度。為了最大限度地發揮DSP的性能,本文在每個DSP旁放置了兩個CLB(可配置邏輯模塊)配置成Ping、Pong兩個緩存區,在DSP計算前加載權重數據。如圖4所示,每個DSP會在200 MHz頻率下進行乘加計算,而Ping、Pong兩個CLB會以100 MHz頻率同時緩存兩個卷積核權重,Fmap則以100 MHz頻率傳入,減小存取所消耗的時間。通過這種雙緩存結構,本文提高了DSP的時鐘頻率。故陣列可在單時鐘周期(200 MHz)內,完成16個輸出通道計算。每個通道結果的數據位寬為48 bit,16個通道結果拼接為768 bit數據后,流傳輸至其他模塊進行計算。

圖4 DSP輸入波形模擬圖Fig.4 DSP input waveform simulation diagram

1.3.2 DSP陣列通用化設計

在多數CNN模型中不同尺寸的卷積會被同時使用,但無論3×3亦或5×5等更大的卷積本質依然是乘加計算,故也可用DSP陣列進行加速。

以3×3卷積為例,其結果可等價于9個1×1卷積結果的和,1×1的卷積每個時鐘(100 MHz)會輸出一個結果,而3×3卷積則需要9個位置的值相加,故為了適應大尺寸卷積,在最后一行DSP輸出結果后需累加前8個位置的值,即最后一行的計算模式補充為A×B+PCIN+C,C累加每個時鐘的輸出結果,在第9個時鐘(100 MHz)輸出一個結果像素,波形模擬圖如圖5所示。只需通過指令控制傳入陣列的特征與權重即可加速任意尺寸的卷積計算。

圖5 DSP輸出波形模擬圖(3×3卷積)Fig.5 DSP output waveform simulation diagram(3×3 conv)

1.3.3 緩存與卷積分塊設計

使用陣列加速的核心難點在于需要精確控制每個時鐘陣列中所有DSP參與計算的A與B必須為Weights和Fmap正確位置的值。需要注意的是陣列每次計算一個像素點32通道的值,輸入特征若超過32通道則需要對一次處理的32通道的中間結果進行緩存,即卷積要分塊進行,按照32通道為單位進行計算,因此緩存數據的順序也需與之對照。

圖6展示了該操作以32通道為單位計算時的情況。在計算過程中首先取split0、split1、split2中slice0與Fmap-in中slice0對應位置乘加,得到X×X×96尺寸的中間結果Psum(Partial Sum)。之后再計算slice1,每得到一個像素值則取Psum中相應位置像素值進行累加得到最終結果,而Psum在FPGA中使用FIFO(first input first output)存儲器緩存,通過指令控制是否需要取Psum進行疊加計算。

圖6 分塊卷積示例圖Fig.6 Block convolution example diagram

通過分塊卷積的策略,DSP陣列可適應32倍數的通道的卷積計算加速,而不足32通道的可以通過補0進行彌補。整個陣列可根據指令不同送入相應順序的Fmap實現不同尺寸和步長的卷積操作,不必每次都重新設計加速方案。

2 CPU與FPGA交互設計

如圖7所示,為了發揮不同平臺的計算優勢,本文設計在FPGA處理用以提取圖像特征的CNN網絡計算,在CPU計算少量涉及浮點計算的前后處理。

圖7 混合架構加速設計圖Fig.7 Hybrid architecture acceleration design diagram

FPGA從CPU端接收前處理后的圖像進行特征提取,將輸出特征圖返回給CPU做后處理并顯示最終結果。兩者通過PCI-Express總線交互,FPGA存儲使用AXI4傳輸協議統一編址,將Xilinx XDMA IP核掛載至AXI Interconnect即可在CPU通過驅動訪問FPGA片上存儲,Xilinx VC709 FPGA平臺數據傳輸速率約為4 Gb/s。數據交互控制采用標志位輪詢方式,在FPGA開辟BRAM(BAR空間)作為CPU與FPGA通信標志位,如圖8所示,CPU將前處理后的數據加載至片外內存指定地址后將標志位0置1,FPGA輪詢標志位0,當值為1時取指令計算,當FPGA處理結束將特征圖加載至特定地址時將標志位100置1,CPU在發送完成后輪詢標志位100,當值為1時讀取特征圖進行后處理。

圖8 混合平臺數據交互流程圖Fig.8 Mixed platform data interaction flow chart

由于不同平臺的處理時間不同,在計算過程中若采用CPU與FPGA交替處理的串行方式,CPU與FPGA都將有部分閑置時間,無法真正發揮CPU與FPGA的性能。因此需要通過CPU多線程技術來實現CPU與FPGA并行計算。如圖9所示,在上位機開設2個共享內存區,并對內存區設置標志位。根據實驗,縮放圖像并按照FPGA存儲方式重排像素的前處理所耗時間遠大于FPGA提取特征的時間,故CPU可使用多個線程同時對多幅圖像進行前處理,并將圖像依次寫入內存區,FPGA驅動線程則按順序輪詢內存區標志位,當FLAG為1時發送內存區圖像與圖像序號到FPGA進行計算。同理,驅動線程與后處理線程共享輸出內存區,由此可達到兩個平臺的流水處理。這將最大限度地發揮兩種不同平臺的性能。

圖9 多線程共享機制圖Fig.9 Multi-thread sharing mechanism diagram

根據不同的任務,可配置相應的線程來使得CPU與FPGA并行計算,最大限度地發揮CPU與FPGA的計算性能。圖10所示為前處理時間3倍于FPGA的時序對比圖,可見多線程技術能有效緩解多平臺計算等待延時大的問題。

圖10 時序對比圖Fig.10 Time series comparison diagram

3 實驗結果與分析

本文使用Xilinx VC709 FPGA進行了仿真綜合實驗,根據最終的綜合報告,片上總功耗為7.36 W,主要資源消耗如表1所示。

表1 資源消耗表Table 1 Resource consumption table

可以看出由于使用了指令控制數據流的形式,前向傳播過程中所需的每種智能算子只會消耗一次片上資源,故有效地降低了資源的消耗,前向傳播的過程如圖11所示。本文采用目標檢測領域經典的全卷積神經網絡算法YOLO[16]來測試結構性能。用于提取圖像特征的骨干網絡選用的是一個24層的卷積神經網絡即YOLOV3tiny檢測網絡,其中該網絡的全部計算如表2所示。

表2 YOLO-V3tiny各層計算統計表Table 2 YOLO-V3tiny calculation table for each layer

圖11 YOLO-V3tiny前向傳播示意圖Fig.11 YOLO-V3tiny forward propagation diagram

3.1 實驗結果

測試平臺為CPU:Intel core i7 7700;FPGA:Xilinx VC709;內存:64 GB DDR4內存;測試操作系統:ubuntu16.04。訓練與量化使用GPU平臺完成,檢測推理部分使用CPU與FPGA的混合架構完成,其中用于提取圖像特征的骨干網絡由FPGA進行加速,YOLO層后處理在CPU平臺完成,最終在CPU平臺顯示檢測結果。圖12所示為遙感數據集測試結果,FPGA檢測速率為58 FPS,相較于GPU平臺平均精確度mAP(mean average precision)下降小于1%。

圖12 遙感圖像檢測結果圖Fig.12 Remote sensing image detection result diagram

3.2 結果分析

根據YOLO算法的計算量與檢測時間,可以計算得到FPGA吞吐率可以達到120 GOPS,總功耗為7.36 W,能效比(GOPS/W)為16,表3是與其他一些CNN加速推理工作的對比。

表3 與其他工作的對比表Table 3 Comparison table with other jobs

可以看出,FPGA平臺在處理CNN卷積計算時的處理速度遠快于通用性較強的CPU平臺,雖然依然無法與GPU相比,但在星載、邊緣計算等低功耗的場景下GPU難以比擬FPGA低功耗、高能效比的優勢。圖13為三種平臺的效能對比圖(為方便顯示數據進行了歸一化處理)。文獻[11]提到了一種輕量化網絡量化方法的FPGA結構具有較高的吞吐率,但其采用的二值化網絡會在精準度方面有所損失。文獻[18]中提到了一種在Zynq Ultrascale+平臺上使用高級綜合完成的FPGA實現方法性能與本文相似,但在數據吞吐率上不如本文。

圖13 不同計算平臺能效對比圖Fig.13 Comparison diagram of energy efficiency of different computing platforms

3.3 國產化平臺實驗

除了使用Xilinx VC709 FPGA進行實驗外,本文還使用了全國產化平臺進行了實驗。測試平臺為申威1621服務器CPU,128 GB服務器內存,復旦微國產FPGA(PCI-E接口,7 000萬門級),操作系統為普華國產操作系統5.0。經過實驗本文方法在國產FPGA上適配良好,吞吐率與VC709相當。

為了測試國產平臺的穩定性本文還增加測試了4 000張800×800分辨率的SAR艦船圖像在國產平臺上的檢測性能,最終的平均精確度mAP下降小于1%。

除此之外,本文在原版網絡上進行了結構化剪枝實驗,在保持SAR數據集檢測精度下降在0.05之內的情況下,將網絡刪減至19層,檢測速率最高可以達到110 FPS,圖14為SAR艦船檢測的效果圖。

圖14 SAR艦船檢測效果圖Fig.14 SAR ship detection renderings

4 結束語

綜上,本文實現了一種基于DSP陣列的FPGA并行結構并與CPU協同實現了目標檢測算法YOLO的檢測過程,FPGA吞吐率達到120 GOPS。與典型GPU平臺相比,具有更高的能效比,探索了邊緣場景下應用深度學習算法的方法。

猜你喜歡
指令特征檢測
聽我指令:大催眠術
“不等式”檢測題
“一元一次不等式”檢測題
“一元一次不等式組”檢測題
如何表達“特征”
不忠誠的四個特征
當代陜西(2019年10期)2019-06-03 10:12:04
ARINC661顯控指令快速驗證方法
測控技術(2018年5期)2018-12-09 09:04:26
LED照明產品歐盟ErP指令要求解讀
電子測試(2018年18期)2018-11-14 02:30:34
抓住特征巧觀察
小波變換在PCB缺陷檢測中的應用
主站蜘蛛池模板: 免费jizz在线播放| 中文字幕久久波多野结衣 | 九色视频最新网址| 中文字幕首页系列人妻| 亚洲精品动漫| 日韩无码视频播放| 99九九成人免费视频精品| 亚洲系列无码专区偷窥无码| 一级毛片免费的| 国产女同自拍视频| 久久国产乱子| 精品撒尿视频一区二区三区| 国产一二视频| 亚洲人成网站色7799在线播放| 久久香蕉国产线看观| 91精品久久久久久无码人妻| 精品一区二区三区自慰喷水| 国产精品露脸视频| 国产精品第一区| 亚洲人成在线精品| 亚洲综合中文字幕国产精品欧美 | 国产精品自拍露脸视频| 18禁影院亚洲专区| 色综合天天综合| 日本一区二区三区精品国产| 久久综合五月| 青青操视频免费观看| 午夜a视频| 免费xxxxx在线观看网站| 国产无人区一区二区三区| 中国一级特黄视频| 色综合国产| 日韩色图在线观看| 美臀人妻中出中文字幕在线| jizz在线免费播放| 一区二区午夜| 国产精品久久久久久搜索| 天天爽免费视频| 亚洲欧美综合在线观看| 国产成年无码AⅤ片在线| 国产成人高清精品免费5388| 午夜毛片免费观看视频 | 婷婷五月在线视频| 尤物在线观看乱码| 伊人成人在线| 99视频只有精品| 国产精品毛片一区| 国产精品99久久久久久董美香| 永久成人无码激情视频免费| 国产精品国产主播在线观看| 亚洲人成网线在线播放va| 国产第二十一页| 伊人大杳蕉中文无码| 最新加勒比隔壁人妻| 国产成人1024精品下载| 999国产精品永久免费视频精品久久| 国产精品无码久久久久AV| AV网站中文| 久久精品aⅴ无码中文字幕| 青青草国产在线视频| 女人18毛片一级毛片在线 | 欧美日韩一区二区三区四区在线观看| 啪啪永久免费av| 高清不卡毛片| 福利视频99| 福利在线一区| 无码国产偷倩在线播放老年人| 亚洲无码视频喷水| 国产亚洲一区二区三区在线| 中文字幕乱码中文乱码51精品| 免费在线一区| av在线5g无码天天| 制服丝袜在线视频香蕉| 特黄日韩免费一区二区三区| 黑人巨大精品欧美一区二区区| 国产91全国探花系列在线播放| 国产91丝袜在线播放动漫| 国产AV无码专区亚洲A∨毛片| 十八禁美女裸体网站| 永久免费无码日韩视频| 欧美不卡视频在线| 国产电话自拍伊人|