郭子博,高瑛珂,胡航天,弓 鐸,劉 凱,吳憲云
1.西安電子科技大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,西安 710071
2.北京控制工程研究所,北京 100089
3.西安電子科技大學(xué) 通信工程學(xué)院,西安 710071
近些年,隨著算力和數(shù)據(jù)的激增,神經(jīng)網(wǎng)絡(luò)算法有了長足發(fā)展,在圖像、語音、視頻處理等任務(wù)上已展現(xiàn)出超越傳統(tǒng)算法的精度和效率[1-2]。特別是2012年AlexNet[3]網(wǎng)絡(luò)模型提出之后,基于卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural network,CNN)的智能圖像處理方法已經(jīng)逐步成為主流方法并開始應(yīng)用于航空航天、工業(yè)檢測、自動(dòng)駕駛等生產(chǎn)生活中的關(guān)鍵領(lǐng)域。
但卷積神經(jīng)網(wǎng)絡(luò)在提供強(qiáng)大的圖像特征提取能力的同時(shí)也帶來了龐大的計(jì)算參數(shù)和數(shù)以10億計(jì)的浮點(diǎn)計(jì)算量。為了獲取參數(shù)頻繁訪存以及浮點(diǎn)數(shù)計(jì)算也帶來了十分可觀的功耗,一個(gè)10億神經(jīng)元的全連接神經(jīng)網(wǎng)絡(luò)模型以20 FPS運(yùn)行時(shí),僅對內(nèi)存數(shù)據(jù)的存取就需要12.8 W的能耗[4],即便MobileNet[5]、ShuffleNet[6]這樣的輕量化網(wǎng)絡(luò)在部署過程中也會(huì)產(chǎn)生不小能耗。為此,無論是擁有大規(guī)模服務(wù)器集群的數(shù)據(jù)中心還是計(jì)算資源較少的邊緣設(shè)備都將面臨計(jì)算時(shí)間、資源占用、能源消耗之間的矛盾。典型的CPU平臺(tái)可以提供10~100 GFLOPS的算力,但其能效比通常低于1 GOP/J[7]。GPU平臺(tái)可提供10 TOPS以上的峰值性能,但其能耗消耗較大不適合部署在能效要求高的場景。可靈活定制的FPGA和ASIC平臺(tái)可針對卷積神經(jīng)網(wǎng)絡(luò)的模型結(jié)構(gòu)設(shè)計(jì)并行計(jì)算的體系結(jié)構(gòu),優(yōu)化計(jì)算和存取的流程,從而達(dá)到加速算法的效果。關(guān)于ASIC設(shè)計(jì),中科院的DianNao系列神經(jīng)網(wǎng)絡(luò)處理器[8]、MIT的Eyeriss芯片[9]、Google的TPU芯片[10]都展現(xiàn)出了優(yōu)秀的性能和能效比,但ASIC設(shè)計(jì)成本高、開發(fā)時(shí)間長,且結(jié)構(gòu)固定難以不斷適應(yīng)新的算法。FPGA高并行、可編程、低功耗的特性十分適合加速基于CNN的算法,近些年學(xué)術(shù)界也開展了一些相關(guān)研究。Han等人在ICLR2016會(huì)議上提出了一種網(wǎng)絡(luò)模型壓縮方法[4],通過該方法可壓縮網(wǎng)絡(luò)參數(shù)中的冗余,且在推理階段可使用定點(diǎn)數(shù)進(jìn)行計(jì)算。在FPGA2017會(huì)議上,其又提出了一種LSTM稀疏網(wǎng)絡(luò)的FPGA加速方法。該方法相較CPU有40倍的能效提升。Nakahara等人在FPGA2018會(huì)議上提出了一種輕量化的YOLOV2模型并實(shí)現(xiàn)了一種二值化卷積神經(jīng)網(wǎng)絡(luò)在FPGA上的實(shí)現(xiàn)方法,達(dá)到40.81 FPS處理速度,功耗為4.5 W[11]。美國東北大學(xué)Ding等人在FPGA2019會(huì)議上提出了一種在FPGA平臺(tái)上針對tiny-YOLO目標(biāo)檢測算法的異構(gòu)權(quán)重量化方法并在計(jì)算中通過FFT和IFFT來降低復(fù)雜度。在功耗21 W的情況下達(dá)到了314.2 FPS的檢測性能[12]。
綜上,權(quán)衡功耗和邊緣化場景的計(jì)算資源,本文提出了一種FPGA和CPU混合架構(gòu)加速CNN的方法,將少量涉及浮點(diǎn)操作的前后處理在CPU平臺(tái)計(jì)算,用于特征提取的CNN骨干網(wǎng)絡(luò)在FPGA平臺(tái)使用指令控制數(shù)據(jù)流的高速DSP脈動(dòng)陣列進(jìn)行并行加速計(jì)算,兩個(gè)平臺(tái)通過PCI-Express(peripheral component interconnect express)總線傳輸數(shù)據(jù)。使用YOLO目標(biāo)檢測算法進(jìn)行了大量實(shí)驗(yàn),驗(yàn)證了這種方法的有效性。
首先,為了有效利用FPGA內(nèi)部較少的存儲(chǔ)資源,本文在部署網(wǎng)絡(luò)模型之前,對其進(jìn)行了壓縮優(yōu)化。之后,在Xilinx FPGA上實(shí)現(xiàn)了一種由指令控制數(shù)據(jù)流的DSP陣列計(jì)算加速結(jié)構(gòu)。最終,還使用多線程技術(shù)優(yōu)化CPU處理速度,達(dá)到了流水處理效果。
為了簡化模型推理過程、優(yōu)化存儲(chǔ)空間,本文對原始網(wǎng)絡(luò)模型做了BN層(batch normalization layer)融合與動(dòng)態(tài)定點(diǎn)量化。
1.1.1 BN層融合
在訓(xùn)練過程中為了加速網(wǎng)絡(luò)的收斂防止過擬合,許多CNN網(wǎng)絡(luò)結(jié)構(gòu)會(huì)在卷積層后加入BN層(統(tǒng)計(jì)該層數(shù)據(jù)根據(jù)最大值將所有數(shù)據(jù)映射到0到1之間)。含BN層的卷積計(jì)算公式如式(1)所示:
其中,γ為縮放因子,σ2為方差,μ為均值,β為偏置。
1.1.2 動(dòng)態(tài)定點(diǎn)量化
除了BN層融合,為了去除網(wǎng)絡(luò)模型冗余并適應(yīng)FPGA計(jì)算方式本文還采用動(dòng)態(tài)定點(diǎn)量化方法[13]對模型進(jìn)行了量化壓縮。
如公式(2)所示,動(dòng)態(tài)定點(diǎn)數(shù)共享指數(shù),第一位為符號(hào)數(shù),其他位為尾數(shù)。Fl為指數(shù)位單獨(dú)存儲(chǔ)(在FPGA中在隨指令存儲(chǔ)),bw為數(shù)據(jù)位寬,F(xiàn)i代表尾數(shù)位置的值。在每層卷積計(jì)算結(jié)束后,從指令讀取Fl,采用移位的方式將數(shù)據(jù)進(jìn)行量化后繼續(xù)進(jìn)行前向傳播。
本文在FPGA上實(shí)現(xiàn)了一種RTL級(jí)指令控制數(shù)據(jù)流的體系結(jié)構(gòu)[14],該結(jié)構(gòu)使用高速DSP陣列[15]加速卷積計(jì)算。除此之外,該結(jié)構(gòu)保留了一定通用性,使用軟件生成的專用指令集可控制數(shù)據(jù)流以實(shí)現(xiàn)不同骨干網(wǎng)絡(luò)的前向傳播。少量涉及浮點(diǎn)數(shù)計(jì)算的圖像前處理和特征圖后處理本文設(shè)計(jì)使用CPU進(jìn)行計(jì)算,利用混合架構(gòu)的形式加速卷積神經(jīng)網(wǎng)絡(luò)算法的推理計(jì)算。
整體設(shè)計(jì)的數(shù)據(jù)流和控制流圖如圖1所示,CPU將前處理的特征圖通過PCI-Express總線存入片外內(nèi)存。特征緩存與權(quán)重緩存根據(jù)指令操作碼從片外內(nèi)存中讀取并緩存特征圖與權(quán)重?cái)?shù)據(jù)。這些數(shù)據(jù)經(jīng)指令控制被送入DSP陣列進(jìn)行乘加計(jì)算,計(jì)算結(jié)果在指令控制下經(jīng)過量化、激活、池化、上采樣等邏輯計(jì)算模塊的計(jì)算后得到特征圖。中間層特征圖寫回特征緩存參與后續(xù)的傳播,輸出層特征寫回片外內(nèi)存,CPU通過PCI-Express總線讀取并根據(jù)不同的算法進(jìn)行后處理得到最終結(jié)果并顯示輸出。其中,指令預(yù)存儲(chǔ)在片上緩存(ROM)中。
圖1 混合架構(gòu)總體設(shè)計(jì)圖Fig.1 Mixed architecture overall design diagram
卷積神經(jīng)網(wǎng)絡(luò)的核心算子是卷積,本文采用高速DSP脈沖陣列來實(shí)現(xiàn)卷積算子,其中核心設(shè)計(jì)就是DSP陣列以及適應(yīng)陣列的卷積分塊緩存。
1.3.1 DSP陣列設(shè)計(jì)
卷積計(jì)算本質(zhì)就是特征圖像素與各個(gè)卷積核權(quán)重的乘加計(jì)算。如圖2所示,以輸入輸出均為32通道的1×1卷積為例,結(jié)果特征圖Result的(1,1)位置第一通道像素來自輸入特征圖Fmap與卷積核W1對應(yīng)通道位置數(shù)值相乘再疊加,即32次乘與31次加計(jì)算,而該位置的其他通道像素則來自Fmap與Wn的計(jì)算。
圖2 1×1卷積計(jì)算示意圖Fig.2 Schematic diagram of 1 by 1 convolution calculation
主流卷積神經(jīng)網(wǎng)絡(luò)通常有眾多通道更深的卷積計(jì)算,浮點(diǎn)操作數(shù)(floating point operations,F(xiàn)LOPs)通常以10億計(jì),若串行計(jì)算必然導(dǎo)致可觀的延時(shí)。但如圖2下方MAC中所示,每個(gè)位置通道間的計(jì)算并無相關(guān)性,因此并行各通道乘與加計(jì)算可有效加速卷積計(jì)算。本文就用高速DSP陣列并行這部分計(jì)算達(dá)到了加速卷積計(jì)算的目的。DSP作為FPGA中的一種計(jì)算資源支持乘法、乘法累加、乘法加法、桶形移位等操作,而將多個(gè)DSP級(jí)聯(lián)在一起,利用DSP不同的計(jì)算模式可形成乘累加鏈,進(jìn)而實(shí)現(xiàn)并行乘加運(yùn)算的效果。
DSP陣列的具體設(shè)計(jì)如圖3所示,將32×16個(gè)DSP48E1資源級(jí)聯(lián)成一個(gè)矩形陣列,每一列由32個(gè)DSP級(jí)聯(lián),第一行采用A×B的計(jì)算模式,其他用A×B+PCIN模式(PCIN來自上層DSP計(jì)算結(jié)果)形成一條乘累加鏈。當(dāng)每列DSP傳入特征圖與權(quán)重的32個(gè)通道數(shù)值,可在一個(gè)時(shí)鐘內(nèi)完成圖2中MAC所示的32次乘加計(jì)算,在列方向上實(shí)現(xiàn)了輸入特征各通道間并行計(jì)算。
圖3 高速DSP陣列設(shè)計(jì)圖Fig.3 High speed DSP array design diagram
共16列則可同時(shí)做16個(gè)卷積核權(quán)重的計(jì)算,通過每列傳入相同特征圖,而不同列傳入不同卷積核權(quán)重實(shí)現(xiàn)。每列的輸出值為計(jì)算結(jié)果各通道數(shù)值,由此可在行方向?qū)崿F(xiàn)輸出特征各通道間并行計(jì)算。
Xilinx FPGA內(nèi)部DSP工作頻率經(jīng)過測試最高可達(dá)800 MHz,但受FPGA本身的性能限制,除DSP之外的其他計(jì)算不能達(dá)到如此高的頻率,換言之?dāng)?shù)據(jù)準(zhǔn)備模塊向DSP發(fā)送特征與權(quán)重?cái)?shù)據(jù)的速度遠(yuǎn)小于DSP計(jì)算速度。為了最大限度地發(fā)揮DSP的性能,本文在每個(gè)DSP旁放置了兩個(gè)CLB(可配置邏輯模塊)配置成Ping、Pong兩個(gè)緩存區(qū),在DSP計(jì)算前加載權(quán)重?cái)?shù)據(jù)。如圖4所示,每個(gè)DSP會(huì)在200 MHz頻率下進(jìn)行乘加計(jì)算,而Ping、Pong兩個(gè)CLB會(huì)以100 MHz頻率同時(shí)緩存兩個(gè)卷積核權(quán)重,F(xiàn)map則以100 MHz頻率傳入,減小存取所消耗的時(shí)間。通過這種雙緩存結(jié)構(gòu),本文提高了DSP的時(shí)鐘頻率。故陣列可在單時(shí)鐘周期(200 MHz)內(nèi),完成16個(gè)輸出通道計(jì)算。每個(gè)通道結(jié)果的數(shù)據(jù)位寬為48 bit,16個(gè)通道結(jié)果拼接為768 bit數(shù)據(jù)后,流傳輸至其他模塊進(jìn)行計(jì)算。
圖4 DSP輸入波形模擬圖Fig.4 DSP input waveform simulation diagram
1.3.2 DSP陣列通用化設(shè)計(jì)
在多數(shù)CNN模型中不同尺寸的卷積會(huì)被同時(shí)使用,但無論3×3亦或5×5等更大的卷積本質(zhì)依然是乘加計(jì)算,故也可用DSP陣列進(jìn)行加速。
以3×3卷積為例,其結(jié)果可等價(jià)于9個(gè)1×1卷積結(jié)果的和,1×1的卷積每個(gè)時(shí)鐘(100 MHz)會(huì)輸出一個(gè)結(jié)果,而3×3卷積則需要9個(gè)位置的值相加,故為了適應(yīng)大尺寸卷積,在最后一行DSP輸出結(jié)果后需累加前8個(gè)位置的值,即最后一行的計(jì)算模式補(bǔ)充為A×B+PCIN+C,C累加每個(gè)時(shí)鐘的輸出結(jié)果,在第9個(gè)時(shí)鐘(100 MHz)輸出一個(gè)結(jié)果像素,波形模擬圖如圖5所示。只需通過指令控制傳入陣列的特征與權(quán)重即可加速任意尺寸的卷積計(jì)算。
圖5 DSP輸出波形模擬圖(3×3卷積)Fig.5 DSP output waveform simulation diagram(3×3 conv)
1.3.3 緩存與卷積分塊設(shè)計(jì)
使用陣列加速的核心難點(diǎn)在于需要精確控制每個(gè)時(shí)鐘陣列中所有DSP參與計(jì)算的A與B必須為Weights和Fmap正確位置的值。需要注意的是陣列每次計(jì)算一個(gè)像素點(diǎn)32通道的值,輸入特征若超過32通道則需要對一次處理的32通道的中間結(jié)果進(jìn)行緩存,即卷積要分塊進(jìn)行,按照32通道為單位進(jìn)行計(jì)算,因此緩存數(shù)據(jù)的順序也需與之對照。
圖6展示了該操作以32通道為單位計(jì)算時(shí)的情況。在計(jì)算過程中首先取split0、split1、split2中slice0與Fmap-in中slice0對應(yīng)位置乘加,得到X×X×96尺寸的中間結(jié)果Psum(Partial Sum)。之后再計(jì)算slice1,每得到一個(gè)像素值則取Psum中相應(yīng)位置像素值進(jìn)行累加得到最終結(jié)果,而Psum在FPGA中使用FIFO(first input first output)存儲(chǔ)器緩存,通過指令控制是否需要取Psum進(jìn)行疊加計(jì)算。
圖6 分塊卷積示例圖Fig.6 Block convolution example diagram
通過分塊卷積的策略,DSP陣列可適應(yīng)32倍數(shù)的通道的卷積計(jì)算加速,而不足32通道的可以通過補(bǔ)0進(jìn)行彌補(bǔ)。整個(gè)陣列可根據(jù)指令不同送入相應(yīng)順序的Fmap實(shí)現(xiàn)不同尺寸和步長的卷積操作,不必每次都重新設(shè)計(jì)加速方案。
如圖7所示,為了發(fā)揮不同平臺(tái)的計(jì)算優(yōu)勢,本文設(shè)計(jì)在FPGA處理用以提取圖像特征的CNN網(wǎng)絡(luò)計(jì)算,在CPU計(jì)算少量涉及浮點(diǎn)計(jì)算的前后處理。
圖7 混合架構(gòu)加速設(shè)計(jì)圖Fig.7 Hybrid architecture acceleration design diagram
FPGA從CPU端接收前處理后的圖像進(jìn)行特征提取,將輸出特征圖返回給CPU做后處理并顯示最終結(jié)果。兩者通過PCI-Express總線交互,F(xiàn)PGA存儲(chǔ)使用AXI4傳輸協(xié)議統(tǒng)一編址,將Xilinx XDMA IP核掛載至AXI Interconnect即可在CPU通過驅(qū)動(dòng)訪問FPGA片上存儲(chǔ),Xilinx VC709 FPGA平臺(tái)數(shù)據(jù)傳輸速率約為4 Gb/s。數(shù)據(jù)交互控制采用標(biāo)志位輪詢方式,在FPGA開辟BRAM(BAR空間)作為CPU與FPGA通信標(biāo)志位,如圖8所示,CPU將前處理后的數(shù)據(jù)加載至片外內(nèi)存指定地址后將標(biāo)志位0置1,F(xiàn)PGA輪詢標(biāo)志位0,當(dāng)值為1時(shí)取指令計(jì)算,當(dāng)FPGA處理結(jié)束將特征圖加載至特定地址時(shí)將標(biāo)志位100置1,CPU在發(fā)送完成后輪詢標(biāo)志位100,當(dāng)值為1時(shí)讀取特征圖進(jìn)行后處理。
圖8 混合平臺(tái)數(shù)據(jù)交互流程圖Fig.8 Mixed platform data interaction flow chart
由于不同平臺(tái)的處理時(shí)間不同,在計(jì)算過程中若采用CPU與FPGA交替處理的串行方式,CPU與FPGA都將有部分閑置時(shí)間,無法真正發(fā)揮CPU與FPGA的性能。因此需要通過CPU多線程技術(shù)來實(shí)現(xiàn)CPU與FPGA并行計(jì)算。如圖9所示,在上位機(jī)開設(shè)2個(gè)共享內(nèi)存區(qū),并對內(nèi)存區(qū)設(shè)置標(biāo)志位。根據(jù)實(shí)驗(yàn),縮放圖像并按照FPGA存儲(chǔ)方式重排像素的前處理所耗時(shí)間遠(yuǎn)大于FPGA提取特征的時(shí)間,故CPU可使用多個(gè)線程同時(shí)對多幅圖像進(jìn)行前處理,并將圖像依次寫入內(nèi)存區(qū),F(xiàn)PGA驅(qū)動(dòng)線程則按順序輪詢內(nèi)存區(qū)標(biāo)志位,當(dāng)FLAG為1時(shí)發(fā)送內(nèi)存區(qū)圖像與圖像序號(hào)到FPGA進(jìn)行計(jì)算。同理,驅(qū)動(dòng)線程與后處理線程共享輸出內(nèi)存區(qū),由此可達(dá)到兩個(gè)平臺(tái)的流水處理。這將最大限度地發(fā)揮兩種不同平臺(tái)的性能。
圖9 多線程共享機(jī)制圖Fig.9 Multi-thread sharing mechanism diagram
根據(jù)不同的任務(wù),可配置相應(yīng)的線程來使得CPU與FPGA并行計(jì)算,最大限度地發(fā)揮CPU與FPGA的計(jì)算性能。圖10所示為前處理時(shí)間3倍于FPGA的時(shí)序?qū)Ρ葓D,可見多線程技術(shù)能有效緩解多平臺(tái)計(jì)算等待延時(shí)大的問題。
圖10 時(shí)序?qū)Ρ葓DFig.10 Time series comparison diagram
本文使用Xilinx VC709 FPGA進(jìn)行了仿真綜合實(shí)驗(yàn),根據(jù)最終的綜合報(bào)告,片上總功耗為7.36 W,主要資源消耗如表1所示。
表1 資源消耗表Table 1 Resource consumption table
可以看出由于使用了指令控制數(shù)據(jù)流的形式,前向傳播過程中所需的每種智能算子只會(huì)消耗一次片上資源,故有效地降低了資源的消耗,前向傳播的過程如圖11所示。本文采用目標(biāo)檢測領(lǐng)域經(jīng)典的全卷積神經(jīng)網(wǎng)絡(luò)算法YOLO[16]來測試結(jié)構(gòu)性能。用于提取圖像特征的骨干網(wǎng)絡(luò)選用的是一個(gè)24層的卷積神經(jīng)網(wǎng)絡(luò)即YOLOV3tiny檢測網(wǎng)絡(luò),其中該網(wǎng)絡(luò)的全部計(jì)算如表2所示。
表2 YOLO-V3tiny各層計(jì)算統(tǒng)計(jì)表Table 2 YOLO-V3tiny calculation table for each layer
圖11 YOLO-V3tiny前向傳播示意圖Fig.11 YOLO-V3tiny forward propagation diagram
測試平臺(tái)為CPU:Intel core i7 7700;FPGA:Xilinx VC709;內(nèi)存:64 GB DDR4內(nèi)存;測試操作系統(tǒng):ubuntu16.04。訓(xùn)練與量化使用GPU平臺(tái)完成,檢測推理部分使用CPU與FPGA的混合架構(gòu)完成,其中用于提取圖像特征的骨干網(wǎng)絡(luò)由FPGA進(jìn)行加速,YOLO層后處理在CPU平臺(tái)完成,最終在CPU平臺(tái)顯示檢測結(jié)果。圖12所示為遙感數(shù)據(jù)集測試結(jié)果,F(xiàn)PGA檢測速率為58 FPS,相較于GPU平臺(tái)平均精確度mAP(mean average precision)下降小于1%。
圖12 遙感圖像檢測結(jié)果圖Fig.12 Remote sensing image detection result diagram
根據(jù)YOLO算法的計(jì)算量與檢測時(shí)間,可以計(jì)算得到FPGA吞吐率可以達(dá)到120 GOPS,總功耗為7.36 W,能效比(GOPS/W)為16,表3是與其他一些CNN加速推理工作的對比。
表3 與其他工作的對比表Table 3 Comparison table with other jobs
可以看出,F(xiàn)PGA平臺(tái)在處理CNN卷積計(jì)算時(shí)的處理速度遠(yuǎn)快于通用性較強(qiáng)的CPU平臺(tái),雖然依然無法與GPU相比,但在星載、邊緣計(jì)算等低功耗的場景下GPU難以比擬FPGA低功耗、高能效比的優(yōu)勢。圖13為三種平臺(tái)的效能對比圖(為方便顯示數(shù)據(jù)進(jìn)行了歸一化處理)。文獻(xiàn)[11]提到了一種輕量化網(wǎng)絡(luò)量化方法的FPGA結(jié)構(gòu)具有較高的吞吐率,但其采用的二值化網(wǎng)絡(luò)會(huì)在精準(zhǔn)度方面有所損失。文獻(xiàn)[18]中提到了一種在Zynq Ultrascale+平臺(tái)上使用高級(jí)綜合完成的FPGA實(shí)現(xiàn)方法性能與本文相似,但在數(shù)據(jù)吞吐率上不如本文。
圖13 不同計(jì)算平臺(tái)能效對比圖Fig.13 Comparison diagram of energy efficiency of different computing platforms
除了使用Xilinx VC709 FPGA進(jìn)行實(shí)驗(yàn)外,本文還使用了全國產(chǎn)化平臺(tái)進(jìn)行了實(shí)驗(yàn)。測試平臺(tái)為申威1621服務(wù)器CPU,128 GB服務(wù)器內(nèi)存,復(fù)旦微國產(chǎn)FPGA(PCI-E接口,7 000萬門級(jí)),操作系統(tǒng)為普華國產(chǎn)操作系統(tǒng)5.0。經(jīng)過實(shí)驗(yàn)本文方法在國產(chǎn)FPGA上適配良好,吞吐率與VC709相當(dāng)。
為了測試國產(chǎn)平臺(tái)的穩(wěn)定性本文還增加測試了4 000張800×800分辨率的SAR艦船圖像在國產(chǎn)平臺(tái)上的檢測性能,最終的平均精確度mAP下降小于1%。
除此之外,本文在原版網(wǎng)絡(luò)上進(jìn)行了結(jié)構(gòu)化剪枝實(shí)驗(yàn),在保持SAR數(shù)據(jù)集檢測精度下降在0.05之內(nèi)的情況下,將網(wǎng)絡(luò)刪減至19層,檢測速率最高可以達(dá)到110 FPS,圖14為SAR艦船檢測的效果圖。
圖14 SAR艦船檢測效果圖Fig.14 SAR ship detection renderings
綜上,本文實(shí)現(xiàn)了一種基于DSP陣列的FPGA并行結(jié)構(gòu)并與CPU協(xié)同實(shí)現(xiàn)了目標(biāo)檢測算法YOLO的檢測過程,F(xiàn)PGA吞吐率達(dá)到120 GOPS。與典型GPU平臺(tái)相比,具有更高的能效比,探索了邊緣場景下應(yīng)用深度學(xué)習(xí)算法的方法。