亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        面向目標檢測的卷積神經(jīng)網(wǎng)絡優(yōu)化方法①

        2022-04-30 05:13:18張志超章隆兵肖俊華
        高技術(shù)通訊 2022年3期
        關(guān)鍵詞:池化層浮點數(shù)據(jù)流

        張志超 王 劍 章隆兵 肖俊華

        (*計算機體系結(jié)構(gòu)國家重點實驗室(中國科學院計算技術(shù)研究所) 北京 100190)

        (**中國科學院計算技術(shù)研究所 北京 100190)

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

        (****中國電子科技集團公司第十五研究所 北京 100083)

        0 引言

        以卷積神經(jīng)網(wǎng)絡(convolution neural network,CNN)為代表的深度學習技術(shù)廣泛應用于圖像分類、目標檢測等應用中。遙感影像領域目標檢測與識別應用也廣泛應用卷積神經(jīng)網(wǎng)絡技術(shù)。近年來深度學習的發(fā)展經(jīng)歷了由小模型[1]到大模型[2-3]、再由大模型到輕量型模型[4-6]的發(fā)展。然而深度卷積神經(jīng)網(wǎng)絡算法存在計算復雜度高、參數(shù)存儲量大等特點,導致其在星載、機載等功耗受限環(huán)境下進行目標檢測處理運算時間長、功耗大等問題,并且面向領域應用的算法需要較高的目標檢測準確率?,F(xiàn)有的卷積神經(jīng)網(wǎng)絡的加速研究包括參數(shù)量化[7-10]、輕量型網(wǎng)絡結(jié)構(gòu)設計[4-6]、硬件結(jié)構(gòu)設計[11-12]等方法。

        基于輕量型網(wǎng)絡結(jié)構(gòu)設計[4-6]的方法展現(xiàn)了較高的準確率,在嵌入式處理器上能夠達到近實時的處理性能,在圖形處理器(graphics processing unit,GPU)平臺處理性能高但功耗大。在星載、機載等數(shù)據(jù)產(chǎn)生終端,存在數(shù)據(jù)量大、平臺處理功耗受限等情況,需要結(jié)合現(xiàn)場可編程門陣列(field programmable gate array,FPGA)方法進行浮點精度模型加速設計,提升處理能力。

        一般的目標檢測模型采用浮點訓練推理的方式使用,參數(shù)量化[7-9]的方法存在精度降低問題,需要特定的硬件結(jié)構(gòu)支撐量化計算來提升性能,并且對于緊湊小模型的量化收效甚微[10]。通用的基于FPGA 加速浮點CNN 模型[11,13]受限于通用模型復雜度高,基于乘累加的卷積計算方法存在達不到線速吞吐問題,造成加速效果有限,需要突破浮點乘累加造成的線速吞吐瓶頸,提升CNN 加速處理能力。

        本文在研究了大量CNN 加速方法后,針對遙感影像廣域場景篩選機場目標區(qū)域的垂直應用需求,采取面向領域應用定制輕量化CNN 目標檢測模型,結(jié)合基于數(shù)據(jù)流調(diào)度的FPGA 加速浮點卷積神經(jīng)網(wǎng)絡的方法以及基于乘法矩陣與前向加法鏈的卷積計算陣列設計,構(gòu)建軟硬件CNN 模型一致性的加速方案,解決了卷積計算中浮點加速線速吞吐的問題,達到了功耗受限條件下實時計算的需求,符合應用要求的高準確率,并且使得軟硬件開發(fā)去耦合,軟件人員能夠進一步優(yōu)化模型以及研究模型的認知不確定性[14]等問題,以提供更可信任的深度學習模型。

        1 卷積神經(jīng)網(wǎng)絡模型設計

        針對星載、機載等功耗受限數(shù)據(jù)產(chǎn)生終端進行遙感影像機場目標檢測的垂直應用需求,需要在大尺度區(qū)域中選出感興趣區(qū)域?qū)δ繕诉M行識別,這種熱點區(qū)域的識別能夠顯著降低細粒度目標識別的尺度范圍,進一步縮小目標識別的運算開銷。面向機場目標檢測的卷積網(wǎng)絡模型,采用基于LeNet-5[1]與Yolo-v2[15]啟發(fā)的網(wǎng)絡骨干結(jié)構(gòu)及目標檢測策略設計目標檢測網(wǎng)絡模型,利用當前的小卷積核緊致模型的運算量低的特點,在解決目標檢測識別準確率基礎上,盡可能設計小的卷積網(wǎng)絡降低模型計算量需求,便于后續(xù)的基于FPGA 的處理加速。

        1.1 基于CNN 的目標區(qū)域篩選算法

        針對從大區(qū)域遙感影像中篩選機場目標區(qū)域的技術(shù)需求,分析出機場目標于周圍環(huán)境特征明顯,該問題類似于MNIST 手寫數(shù)字識別問題。本文受LeNet-5 模型和Yolo-v2 目標檢測模型的啟發(fā),自定義了一個10 層的輕量型目標識別網(wǎng)絡用于篩選機場區(qū)域目標,進而降低大區(qū)域衛(wèi)星影像中飛機目標識別的計算量。該目標識別網(wǎng)絡的檢測層利用了Yolo-v2 的候選款篩選算法,將這10 層卷積的輕量型命名為Conv10_Yolo。該目標區(qū)域篩選算法的網(wǎng)絡結(jié)構(gòu)如圖1 所示,里面包含10 層卷積層和2 層池化層,該卷積網(wǎng)絡的輸入為128 ×128 像素的3 通道衛(wèi)星影像,輸出為4 ×4 ×30 維的目標檢測向量。

        圖1 基于CNN 的目標區(qū)域選擇算法網(wǎng)絡結(jié)構(gòu)

        具體的Conv10_Yolo 每層的卷積或池化參數(shù)配置如表1 所示,初始選用大卷積(4 ×4)來提取特征,利用卷積的步進降低輸出維度,中間層主要采用2 ×2 卷積以及3 ×3 卷積進行特征提取,后續(xù)層主要采用1 ×1 卷積與2 ×2 卷積進行特征提取,檢測輸出層采用1 ×1 卷積輸出檢測目標屬性信息。

        表1 基于CNN 的目標區(qū)域選擇算法網(wǎng)絡結(jié)構(gòu)

        目標檢測層采用1 ×1 卷積實現(xiàn),輸出維度為4×4 ×30 的檢測向量。該檢測層參考了Yolo-v2 的相對坐標檢測思路,包含5 個候選框,每個候選款包含6 個目標屬性,具體如圖2 所示。該檢測層輸出的坐標為預測的候選款相對中心點坐標,具體坐標解算參考Yolo-v2 的坐標解算。候選框的預設值采用KNN 聚類方法,對訓練數(shù)據(jù)中目標尺寸太小的進行維度聚類得到候選框的預設值,具體值為[1.13,1.92,1.70,2.04,1.99,0.98,2.28,1.73,2.70,2.69],共5 組x、y坐標值。目標檢測層卷積輸出為相對于候選框的偏移量,目標框的解算按照Yolo-v2的解算思路進行計算。

        圖2 檢測層輸出向量維度分解

        1.2 模型復雜度分析

        該部分分析面向目標區(qū)域篩選的卷積神經(jīng)網(wǎng)絡快速識別算法的卷積網(wǎng)絡模型參數(shù)與計算復雜度。

        通用的卷積參數(shù)計算如式(1)所示。

        其中,IC(input channel)為輸入通道大小,OC(output channel)為輸出通道大小,k為卷積核尺寸。

        卷積層計算乘累加數(shù)量如式(2)所示。

        其中,OW(output width)為卷積計算輸出寬度,OH(output height)為卷積計算輸出高度。

        卷積層計算的操作數(shù)通常有GOPs指標,該指標將卷積乘法和加法分開計算,通常一個包含bias的卷積計算加法數(shù)量與乘法數(shù)量一致,具體如式(3)所示。

        通過計算得出,該模型的權(quán)重總大小為1.85 MB,總乘累加操作數(shù)為0.044 GMAC,總卷積計算操作數(shù)為0.088 GOPs。由此可見,該檢測模型為一個深層輕量化的目標檢測網(wǎng)絡,適于在FPGA 上實現(xiàn)全浮點精度的卷積網(wǎng)絡運算加速。

        2 基于數(shù)據(jù)流調(diào)度的浮點CNN 加速器設計

        在FPGA 上加速目標檢測模型,需要解決模型一致性問題,降低應用移植的難度,保持模型檢測準確率的一致性。采用基于數(shù)據(jù)流調(diào)度的浮點卷積神經(jīng)網(wǎng)絡加速器設計方法,使得卷積網(wǎng)絡的浮點參數(shù)權(quán)重保持在片上存儲,多層卷積網(wǎng)絡計算同時以流水線的方式在片上執(zhí)行,即解決了模型加速與能效比問題,又能符合加速模型與原始模型計算一致性的需求。

        2.1 基于數(shù)據(jù)流調(diào)度的卷積神經(jīng)網(wǎng)絡加速總體架構(gòu)

        針對基于卷積神經(jīng)網(wǎng)絡的目標區(qū)域篩選算法,設計基于數(shù)據(jù)流計算的卷積神經(jīng)網(wǎng)絡加速器。Xilinx UltraScale+系列新品的內(nèi)部物理結(jié)構(gòu)分布為3個超級邏輯區(qū)(super logic region,SLR),每個邏輯區(qū)覆蓋芯片內(nèi)部的一個Die,整顆芯片由3 顆Die 通過基底層互聯(lián)。

        考慮邏輯分區(qū)問題,將整個數(shù)據(jù)流計算分為3大塊。第1 塊超級邏輯區(qū)(SLR0)覆蓋卷積網(wǎng)絡的前3 層卷積層計算,即Conv1、Conv2、Conv3 的計算;第2 塊超級邏輯區(qū)(SLR1)覆蓋中間3 層卷積層計算和2 層最大池化層計算,即Conv4、Mp4、Conv5、Mp5、Conv6 的計算;第3 塊超級邏輯區(qū)(SLR2)覆蓋后4 層卷積層計算,即Conv7、Conv8、Conv9 以及Conv10 的計算。

        超級邏輯區(qū)之間通過Xilinx 堆疊硅片互聯(lián)(stacked silicon interconnect,SSI)技術(shù)互聯(lián),在超級邏輯區(qū)邊緣有特定的專用寄存器進行跨邏輯區(qū)通信,基底層有超長線(super long line,SLL)來連接專用傳輸寄存器。超級邏輯區(qū)的內(nèi)部訪存和跨邏輯區(qū)通信需求,均通過SLL 互聯(lián)實現(xiàn)。具體的基于數(shù)據(jù)流計算的卷積神經(jīng)網(wǎng)絡加速總體架構(gòu)如圖3 所示。

        圖3 基于數(shù)據(jù)流計算的CNN 加速總體架構(gòu)

        2.2 基于數(shù)據(jù)流調(diào)度的卷積層設計

        通常的卷積層計算由卷積乘加計算、批歸一化處理以及非線性響應等部分組成。在基于FPGA 的卷積加速設計中,設計一個大的卷積乘加矩陣是卷積計算性能的必要條件。在沒有硬核浮點支持的FPGA 中,如何設計一個保持線速處理的乘加矩陣也是一個難點。在基于數(shù)據(jù)流的FPGA 卷積計算單元里,卷積層的輸入調(diào)度、權(quán)重調(diào)度也必須達到卷積計算矩陣的線速輸入條件,這樣才能避免卷積計算矩陣空轉(zhuǎn),浪費計算性能。本部分闡述基于數(shù)據(jù)流的卷積層計算,主要包括卷積層權(quán)重輸入、權(quán)重緩存、卷積輸入調(diào)度、卷積計算陣列、批歸一化處理、非線性響應等部分。具體的基于數(shù)據(jù)流的卷積層初始化與計算流程如圖4 所示,其中權(quán)重初始化只在權(quán)重緩存初始化的時候運行一次,后續(xù)的卷積計算不再需要從動態(tài)隨機存取存儲器(dynamic random access memory,DRAM)中調(diào)度緩存數(shù)據(jù),降低了存儲帶寬的開銷,可避免卷積計算陣列需要等待權(quán)重數(shù)據(jù)。

        圖4 卷積層初始化與計算流程

        (1)卷積特征圖內(nèi)存表示

        卷積輸入及輸出特征圖在內(nèi)存中維持“H×W×C”的內(nèi)存分布,卷積輸入及輸出特征圖在數(shù)據(jù)流中按照“H×W×C”的方式傳輸,即通道優(yōu)先(channel first)的方式傳輸。圖像與特征圖本質(zhì)上是一個三維矩陣,圖像一般具有RGB三維通道,特征圖的通道數(shù)為16~2048,如果把圖像或者特征圖的通道數(shù)看成一個像素點的屬性,則圖像的抽象表示可以維持一個“二維抽象”,具備寬×高的像素點集合,像素的屬性個數(shù)是可變的。后面的卷積計算就可以基于像素處理,圖像或者特征圖可以抽象為一個二維的處理過程。

        進一步把圖像或者特征圖的“H×W”個像素平鋪,則圖像或者特征圖可以進一步維持一個“一維抽象”,即“H×W”行像素點,這種表示不僅適合內(nèi)存的線性存儲,也適用于在數(shù)據(jù)流中傳輸圖像或者特征圖。具體的輸入圖像與特征圖的內(nèi)存表示如圖5所示。

        圖5 卷積層輸入圖像與特征圖的內(nèi)存表示

        后續(xù)的計算流程在輸入輸出上都維持這樣的“H×W×C”的內(nèi)存表示?;诮y(tǒng)一的內(nèi)存表示,多個卷積層計算可以通過先入先出隊列(first input first output,FIFO)互聯(lián)并協(xié)同計算,避免中間結(jié)果經(jīng)由內(nèi)存導入導出,消耗內(nèi)存帶寬,同時也浪費一定量的卷積層計算周期。

        (2)卷積層數(shù)據(jù)流調(diào)度

        基于數(shù)據(jù)流的卷積計算要求輸入數(shù)據(jù)及權(quán)重都能夠達到線速吞吐,這樣卷積計算單元的流水周期不會出現(xiàn)空轉(zhuǎn),計算效率達到最高?;诰€速吞吐的數(shù)據(jù)流調(diào)度要求,設計多端口的權(quán)重緩存,能夠提供處理單元(process element,PE)組權(quán)重,每組權(quán)重有單指令多數(shù)據(jù)(single instruction multiple data,SIMD)個權(quán)重32 位浮點數(shù);設計多端口卷積輸入緩存,能夠提供SIMD個32 位浮點數(shù)特征圖輸入;同時引入與卷積輸入緩存Stride(卷積滑窗步進)行同等大小的輸入FIFO,與卷積輸入緩存構(gòu)成異構(gòu)“乒乓”緩存,去耦合上個階段的卷積計算輸出調(diào)度和本階段的卷積計算輸入調(diào)度。輸入特征圖的輸入寬度為上一層PE個數(shù)量的32 位浮點數(shù),通過輸入FIFO 轉(zhuǎn)換寬度為SIMD個32 位浮點數(shù)據(jù)。卷積計算單元的輸出為PE個32 位浮點數(shù)據(jù)計算輸出。具體的卷積層數(shù)據(jù)流調(diào)度如圖6 所示,實現(xiàn)了一組數(shù)據(jù)計算多個卷積輸出,利用了輸入數(shù)據(jù)的局部性。

        圖6 卷積層數(shù)據(jù)流調(diào)度

        (3)卷積層輸入緩存設計

        卷積層輸入緩存與輸入FIFO 的大小一致,結(jié)構(gòu)不同,卷積層輸入緩存將“H×W×C”的輸入特征圖轉(zhuǎn)換為卷積核所需的“k×k×C”的輸入,通過在多組寄存器滑窗,為卷積計算陣列提供計算卷積所需的線性輸入。具體的卷積輸入緩存設計如圖7 所示。

        圖7 卷積層輸入緩存設計

        卷積層輸入緩存包括k+Stride行寄存器組,其中k為卷積核大小,Stride為卷積滑窗的步進大小。每行寄存器緩存輸入特征圖多個通道一行的數(shù)據(jù),即“W×C”個數(shù)據(jù),W為輸入特征圖的寬度,IC為輸入特征圖的通道數(shù)。每個寄存器行都可以按照SIMD個浮點數(shù)的寬度輸出數(shù)據(jù),一個像素的多個通道數(shù)據(jù)按照SIMD的寬度分為b個Block,每個Block 按照順序放在寄存器行里。由于二維卷積的空間訪存特性,需要從多個寄存器行里順序讀取數(shù)據(jù),按照卷積核行列計算的要求順序輸出SIMD寬度的輸入特征圖數(shù)據(jù)流。

        多個寄存器組分開存放,可以將卷積輸入特征圖的輸出調(diào)度和輸入調(diào)度分開,除了初始化讀入k行輸入特征圖像素,后續(xù)可以按照Stride行補充輸入特征圖數(shù)據(jù)。雖然訪問的同一個卷積輸入緩存,利用多行卷積輸入緩存寄存器,由此可以將輸入數(shù)據(jù)與輸出數(shù)據(jù)調(diào)取去耦合,避免數(shù)據(jù)依賴和數(shù)據(jù)污染,實現(xiàn)無鎖的數(shù)據(jù)輸入輸出同時調(diào)度,滿足卷積計算單元SIMD個浮點數(shù)據(jù)的輸出線速調(diào)度要求。

        (4)卷積層權(quán)重緩存設計

        針對在片上緩存該層卷積計算所需的全部卷積,并且權(quán)重緩存的輸出能按照卷積計算陣列“PE×SIMD”的計算模式輸出面向多個處理單元(PE)輸出每組SIMD個浮點權(quán)重數(shù)據(jù)等要求,設計卷積層權(quán)重緩存。

        卷積層參數(shù)按照式(4)維度順序進行存放,其中PE為卷積計算單元的處理單元個數(shù),SIMD為每個卷積處理單元輸入數(shù)據(jù)的寬度,每個數(shù)據(jù)均為32位浮點數(shù)據(jù)。

        卷積權(quán)重緩存T的計算如下:

        其中,IC為卷積核輸入通道數(shù)量,OC為卷積核輸出通道數(shù)量,k為卷積核大小。

        卷積層權(quán)重緩存具有PE組獨立的緩存行,每個行的輸出寬度為SIMD個浮點數(shù),由于卷積計算陣列的多個PE輸出為輸出特征圖的一個像素的連續(xù)屬性,故需要在權(quán)重緩存里將卷積權(quán)重按照多個PE行寄存器交叉存儲,保證輸出的PE組權(quán)重通過卷積計算陣列計算得到的是連續(xù)的輸出特征圖一個像素內(nèi)部的連續(xù)屬性值。具體的存放順序如圖8 所示。

        圖8 卷積層權(quán)重緩存設計

        (5)卷積陣列計算單元設計

        針對卷積計算高吞吐量的計算需求,設計卷積計算陣列,每個時鐘周期能夠處理“PE×SIMD”個乘累加計算,其中PE為卷積陣列的行數(shù),SIMD為卷積輸入特征圖數(shù)據(jù)的個數(shù),輸出為PE個卷積計算輸出,PE個浮點數(shù)據(jù)屬于同一個輸出特征圖像素的連續(xù)屬性值。

        通常卷積計算存在一個乘累加計算矩陣,基于定點數(shù)的累加計算,通過高級綜合工具調(diào)度出來的累加器延遲為1個clk,累加計算可以達到線速吞吐;而基于浮點數(shù)的累加計算,通過高級綜合工具調(diào)度出來的累加器延遲為4 個clk,吞吐達不到線速,嚴重影響整個卷積計算陣列的吞吐速率。具體的累加器性能分析如圖9 所示。

        圖9 累加器性能分析

        考慮浮點累加器調(diào)度延遲問題主要在與累加器輸出要反饋到累加器輸入上,這個延遲決定了累加器的吞吐速率,如果能夠打破累加器的后向反饋,則可以使累加器性能達到線速,進而卷積計算陣列達到線速。

        由于卷積的累加次數(shù)是固定的,且隨著每個卷積層參數(shù)而累加次數(shù)不同。基于數(shù)據(jù)流的卷積計算陣列支持面向不同的卷積層分別配置卷積計算參數(shù),包括卷積陣列大小、卷積累加的次數(shù),為此設計了一個基于前向累加鏈的卷積累加器。卷積計算單元的每個PE輸出SIMD個數(shù)據(jù),通過加法樹1 匯集成一個數(shù)據(jù)輸出,通過加法樹2、3 分別匯聚k個數(shù)累加,后續(xù)可以通過個加法器進行后續(xù)累加(圖10)?;谇跋蚣臃ㄦ湹木矸e累加器共需N個加法器,計算公式如式(6)所示,ICF的計算公式如式(7)所示。

        圖10 基于前向加法鏈的卷積累加器設計

        由于累加矩陣可以在后續(xù)完成累加計算,故卷積陣列只需要實現(xiàn)為乘法陣列,具體的基于乘法矩陣與前向加法鏈的卷積計算陣列如圖11 所示,包含3 部分:(1)乘法矩陣,完成“PE×SIMD”個數(shù)的乘法運算;(2)加法樹矩陣,將SIMD個數(shù)匯聚成一個數(shù);(3)加法鏈,完成同一個卷積計算的累加功能?;谇跋蚣臃ㄦ湹木矸e陣列設計,打破了浮點數(shù)累加的后向反饋,不依賴于加法器的具體延遲,通過延長流水線的方式達到了卷積計算的線速累加和輸出。

        圖11 基于乘法矩陣與前向加法鏈的卷積計算陣列

        (6)批歸一化及非線性響應設計

        批歸一化及非線性響應均為面向每個處理元素單獨處理,比較容易實現(xiàn)并行處理,多個并行處理之間不需要交互數(shù)據(jù),具體的批歸一化及非線性響應設計如圖12 所示。

        圖12 批歸一化與非線性響應流程

        批歸一化的計算如式(8)所示。

        其中,alpha、gamma、mean以及std均為批歸一化參數(shù),可以從模型權(quán)重中獲取。

        非線性響應部分支持Leak ReLU 和ReLU 函數(shù),具體的計算公式如式(9)所示,Leak ReLU 的參數(shù)alpha一般為0.1,ReLU 的參數(shù)alpha為0。

        2.3 基于數(shù)據(jù)流調(diào)度的池化層設計

        池化層的輸入一般為上一層的卷積計算輸出,池化層的輸出為下一層卷積計算的輸入。基于數(shù)據(jù)流調(diào)度的池化層計算流程包括池化層輸入調(diào)度以及池化層計算單元兩部分。池化層計算的并行數(shù)PE與上一層卷積計算的PE保持一致。每個階段的數(shù)據(jù)流均為PE個浮點數(shù)據(jù)。輸入特征圖與輸出特征圖仍然維持“H×W×C”的數(shù)據(jù)抽象,便于后續(xù)通過流數(shù)據(jù)接口輸出給下一個卷積計算層。具體的池化層計算流程如圖13 所示。

        圖13 池化層計算流程

        (1)池化層計算單元設計

        根據(jù)卷積模型計算的需要,本部分池化層的設計只支持最大值池化功能。池化層計算單元輸入為PE個卷積計算輸出,通過與池化層的中間結(jié)果寄存器進行比較,如果比中間結(jié)果寄存器數(shù)據(jù)值大,則更新中間結(jié)果寄存器的存儲值。經(jīng)過一定次數(shù)的迭代,最終從中間結(jié)果寄存器輸出到輸出寄存器。具體的池化層計算單元如圖14 所示。

        圖14 池化層計算單元

        (2)池化層中間結(jié)果緩存設計

        池化層中間結(jié)果緩存面向池化層的數(shù)據(jù)調(diào)度和中間結(jié)果緩存以及最終的池化輸出,需要設計一個面向輸入數(shù)據(jù)流的池化計算緩存。輸出調(diào)度不能中斷池化單元的正常計算流程,并且輸入與輸出同時維持統(tǒng)一的特征圖數(shù)據(jù)流格式。

        池化計算一般為“k×k”的二維計算,而輸入特征圖數(shù)據(jù)是按照“H×W×C”的統(tǒng)一數(shù)據(jù)流格式輸出的,這就需要設計一個多行緩存,能夠無縫切換不同行的池化計算中間結(jié)果,且無需更改輸入數(shù)據(jù)的“通道優(yōu)先”的格式。

        具體的池化層包含PE組緩存行,每行緩存有Pool_Dim個緩存塊,每個緩存塊有PE_Blocks個中間結(jié)果寄存器(見圖15)。PE_Blocks的計算如式(10)所示。計算不同行的池化過程,需要切換池化層的中間緩存,使得中間結(jié)果能夠存儲在合適的位置,PE行池化數(shù)據(jù)并行處理,處理完后輸出,寬度為PE個浮點數(shù)據(jù)流。

        圖15 池化層中間結(jié)果緩存

        3 實驗結(jié)果和分析

        3.1 加速器性能設計與分析

        由于該加速器采用了基于數(shù)據(jù)流調(diào)度的多層卷積網(wǎng)絡協(xié)同加速的模式構(gòu)建長流水線,獲得性能提升,因此每一個卷積模塊的配置,即PE、SIMD的選值,影響該層的計算能力。同時多層的計算能力要相匹配,使得多層的處理能力大致相當而又避免過大的處理核由于流水線吞吐的限制,發(fā)揮不出應有的性能。本部分通過分析模型計算硬件預估性能,結(jié)合HLS 高級綜合資源占用分析,選取性能最高的Conv10_Yolo 卷積加速器配置進行分階段設計,以適應FPGA 芯片的分超級邏輯區(qū)放置資源。

        Conv10_Yolo_FPS 2902 卷積網(wǎng)絡加速器配置如表2 所示,基于高級語言綜合(HLS)設計的處理速度達到了2902.56 fps,基于HLS 設計的硬件卷積處理資源性能達到了279.056 GFLOPS。

        表2 Conv10_Yolo_FPS 2902 卷積網(wǎng)絡加速器配置

        3.2 CNN 加速器資源占用與功耗分析

        Conv10_Yolo 卷積網(wǎng)絡加速器使用HLS 形成處理核IP 以及Vivado 板卡仿真結(jié)合的方式獲得最終可執(zhí)行的比特流,Vivado _HLS 版本為2019.1。由于加速器核過大,超出了一個邏輯分區(qū)的可用資源總量,導致Vivado 后續(xù)的綜合實現(xiàn)的時序不能收斂,需要對加速器核進行切分,分成3 個獨立的IP核分別進行仿真分析,具體的資源占用對比如圖16所示。3 個階段的IP 資源占用均不超過一個邏輯分區(qū)的資源總量,其中資源占用最多的是Step1 的DSP 資源,達到了77%,各個階段IP 資源平均占用不超過52%,有利于后續(xù)的綜合實現(xiàn)時序收斂。

        圖16 IP 核資源占用分析

        Vivado 版本為2019.1,基于Vivado 仿真工具的Conv10_Yolo 卷積網(wǎng)絡加速器資源占用分析如表3所示。資源占用量最高的為DSP 資源,達到了55.92%,限制了加速器規(guī)模進一步擴大,具體的資源占比柱狀圖如圖17 所示。

        表3 基于Vivado 的Conv10_Yolo_FPS 2902 卷積網(wǎng)絡加速器資源占用表

        圖17 加速器資源占用分析

        基于Vivado 仿真工具的Conv10_Yolo 卷積網(wǎng)絡加速器功耗分析如表4 所示,功耗為19.078 W。

        表4 基于Vivado 的Conv10_Yolo_FPS 2902 卷積網(wǎng)絡加速器功耗分析

        3.3 模型訓練與性能結(jié)果

        基于開源Google Earth 衛(wèi)星影像數(shù)據(jù),本文收集了全球多個國家多時相的機場影像作為訓練數(shù)據(jù),采用人工標注的方式在機場圖片中獲得機場目標標注信息,總共標注了506 張128 ×128 像素尺寸的分辨率8 m 左右的機場目標標注數(shù)據(jù)集?;谠摂?shù)據(jù)集展開機場目標篩選實驗。

        實驗FPGA 硬件采用Xilinx VCU 1525 開發(fā)板卡進行性能測試,在FPGA 平臺上達到了2802.08 fps 的處理速率,折合有效的吞吐量為247.496 GFLOPS,機場目標識別平均準確率達到97.59%。具體的測試結(jié)果如圖18 和圖19 所示,其中灰色框為目標真實值,黑色框為檢測結(jié)果,圖示結(jié)果顯示檢測機場的準確率較高,達到了應用的需求。

        圖18 機場目標識別結(jié)果1

        圖19 機場目標識別結(jié)果2

        3.4 與GPU 處理卷積計算性能對比

        實驗硬件配置為E5-2650-v4 CPU 以及Nvidia Titan X GPU,軟件配置為Ubuntu14.04,Cuda 版本為9.0.176,TensorFlow 版本為1.5.1,Keras 版本為2.2.4。訓練參數(shù)Batch 為16,迭代次數(shù)為20 000 次,IOU閾值設置為0.3,框的概率閾值設置為0.3?;贕PU 平臺測試機場目標識別能力,平均準確率達到97.59%,基于GPU 的處理速度為126.01 fps。通過FPGA 平臺和GPU 平臺分別對Conv10_Yolo 卷積網(wǎng)絡加速器進行性能測試,結(jié)果如表5 所示,該設計在FPGA 平臺上達到了2802.08 fps 的處理速率,處理速度達到了GPU 的22 倍,功耗低于GPU 處理平臺。與大模型[15-16]相比,該設計處理速度更快,能耗更低。

        表5 與GPU 處理卷積計算性能對比

        3.5 與通用FPGA 加速卷積計算性能對比

        本文將Conv10_Yolo的性能與之前的工作對比,本文提出的Conv10_Yolo 加速器吞吐量達到了247.49 GFLOPS。文獻[12,17]的工作采用了基于硬核浮點計算單元的Intel Arria 10 器件,吞吐量較高,除了采用浮點硬核加速的工作,本文方法的運算吞吐量達到了最高值,為247.49 GFLOPS;運算效能也達到了最高值,為12.97 GFLOPS/W。相對于文獻[11]、文獻[18]、文獻[19]、文獻[20]的工作,本文方法使用更少的DSP 資源達到了更高的運算吞吐量,有效解決了浮點卷積加速的線速瓶頸。實驗數(shù)據(jù)表明,基于乘法矩陣與前向加法鏈的卷積計算陣列設計,解決了浮點卷積乘累加造成的線速吞吐瓶頸,提升了浮點卷積網(wǎng)絡加速的處理速度與能效比,滿足了星載、機載等功耗受限條件下進行高準確率目標檢測的功耗、加速吞吐量等要求。

        表6 相關(guān)FPGA 浮點加速卷積網(wǎng)絡工作對比

        4 結(jié)論

        本文面向遙感影像機場目標識別應用,定制了一個輕量化的目標檢測網(wǎng)絡,提出了基于乘法矩陣與前向加法鏈的卷積計算陣列設計,解決了卷積加速的乘累加線速吞吐計算瓶頸。并通過基于FPGA的數(shù)據(jù)流調(diào)度技術(shù),對該檢測網(wǎng)絡的浮點模型進行加速,達到了功耗受限環(huán)境下實時高準確率的計算需求,同時解耦合了軟硬件協(xié)同加速的開發(fā)流程,降低了應用開發(fā)人員利用FPGA 進行加速計算的門檻。通過在Xilinx VCU 1525 開發(fā)板上構(gòu)建實現(xiàn)了浮點卷積目標檢測網(wǎng)絡,在機場目標區(qū)域檢測應用中平均準確率為97.59%,目標檢測處理速度為2802 fps,功耗為19.07 W,運算性能為247.49 GFLOPS。實驗結(jié)果表明,該方案達到了應用需求的高準確率,解決了浮點卷積加速的線速吞吐難點,計算吞吐量以及計算能效比達到了最優(yōu),同時功耗滿足應用環(huán)境的需求。下一步可以就相關(guān)場景的細粒度目標識別加速問題進行研究。

        猜你喜歡
        池化層浮點數(shù)據(jù)流
        LEO星座增強GNSS PPP模糊度浮點解與固定解性能評估
        卷積神經(jīng)網(wǎng)絡模型研究分析*
        基于卷積神經(jīng)網(wǎng)絡的紙幣分類與點鈔
        汽車維修數(shù)據(jù)流基礎(下)
        基于深度學習卷積神經(jīng)網(wǎng)絡的人體行為識別研究
        科技傳播(2020年6期)2020-05-25 11:07:46
        基于浮點DSP的鐵路FSK信號檢測
        基于全卷積神經(jīng)網(wǎng)絡的SAR圖像目標分類*
        一種提高TCP與UDP數(shù)據(jù)流公平性的擁塞控制機制
        基于數(shù)據(jù)流聚類的多目標跟蹤算法
        基于FPGA的浮點FIR濾波器設計
        五月婷婷开心六月激情| 伊人色综合九久久天天蜜桃| 狠狠躁夜夜躁AV网站中文字幕| 97无码人妻一区二区三区蜜臀| 亚洲国产av精品一区二| 中文字幕国产亚洲一区| 国产精品福利一区二区| 久久和欧洲码一码二码三码| 综合无码一区二区三区四区五区| 日本啪啪一区二区三区| 国产又黄又湿又爽的免费视频| 免费的日本一区二区三区视频| 小sao货水好多真紧h无码视频| 亚洲最大日夜无码中文字幕| 国产在线观看免费一级| 国产一区二区三区精品乱码不卡| 国产精品黄色片在线看| 免费a级作爱片免费观看美国| 66lu国产在线观看| 国产三级国产精品三级在专区| 国产在线一区二区三区香蕉| 亚洲国产精品无码久久一区二区| 亚洲av无码一区二区三区人妖| 日韩一区二区超清视频| 国产日韩乱码精品一区二区| av免费在线免费观看| 国产无吗一区二区三区在线欢| 四虎影视永久在线精品| 国产亚洲av手机在线观看| 一区视频免费观看播放| 国产成人精品久久亚洲高清不卡 | 中文字幕乱码亚洲在线| 国产片精品av在线观看夜色| 亚洲av无码男人的天堂在线| 噜噜噜色97| 日本人妻系列中文字幕| 国产人妻大战黑人20p| 国产 国语对白 露脸| 日韩精品一区二区三区在线观看的| 亚洲av老熟女一区二区三区 | 厨房人妻hd中文字幕|