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

        ?

        基于FPGA的YOLOv3-tiny卷積神經(jīng)網(wǎng)絡(luò)加速設(shè)計

        2022-05-06 04:57:04梅志偉丁興軍劉金鵬
        艦船電子對抗 2022年2期
        關(guān)鍵詞:網(wǎng)絡(luò)層運算卷積

        梅志偉,丁興軍,劉金鵬

        (中國船舶集團(tuán)有限公司第八研究院,江蘇 揚州 225101)

        0 引 言

        YOLO(You Only Look Once)是用于目標(biāo)檢測的一種卷積神經(jīng)網(wǎng)絡(luò)模型,與網(wǎng)絡(luò)模型區(qū)域卷積神經(jīng)網(wǎng)絡(luò)(RCNN)、單步多框檢測算法(SSD)等相比,YOLO在確保檢測精度的前提下,大幅度提升檢測速度。在2018年提出的YOLO第三代版本中,包括了YOLOv3和YOLOv3-tiny,相比YOLOv3,YOLOv3-tiny精簡了網(wǎng)絡(luò)層數(shù),減少了計算量,屬于輕量級的神經(jīng)網(wǎng)絡(luò)模型,更適合應(yīng)用在嵌入式終端進(jìn)行硬件加速。

        卷積神經(jīng)網(wǎng)絡(luò)模型包含訓(xùn)練和推理2個過程。訓(xùn)練包含forward和BP(backward propagation)2個步驟,通過對已知大量樣本的學(xué)習(xí),迭代計算損失函數(shù)更新網(wǎng)絡(luò)節(jié)點權(quán)重得到最終網(wǎng)絡(luò)模型,訓(xùn)練過程包含大量的數(shù)據(jù)計算,通常在高性能的圖形處理器(GPU)上運算。推理只包含forward過程,沒有迭代計算和反饋,計算量相對較低,適合應(yīng)用在計算資源和存儲資源相對受限的嵌入式終端。現(xiàn)場可編程門陣列(FPGA)開發(fā)周期短,性能高,編程靈活,通過設(shè)計合適的硬件電路對卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行推理加速,能夠取得大幅度的性能提升。

        對于卷積神經(jīng)網(wǎng)絡(luò)硬件加速,國內(nèi)外學(xué)者進(jìn)行了廣泛研究。通過設(shè)計大規(guī)模的乘加陣列,谷歌團(tuán)隊的張量處理器(TPU)引進(jìn)脈動陣列,增加數(shù)據(jù)復(fù)用,減少數(shù)據(jù)流動,提升計算性能,但對不同規(guī)格卷積核的數(shù)據(jù)重組難度高,代價大,效率偏低。麻省理工學(xué)院(MIT)的Eyeriss為了減小能耗,最大化局部數(shù)據(jù)復(fù)用,通過數(shù)據(jù)復(fù)用與編碼壓縮數(shù)據(jù)來減少數(shù)據(jù)搬移,從而達(dá)到能效優(yōu)化的目的,但不同的網(wǎng)絡(luò)計算需要重新配置映射到陣列,而且乘加陣列中扇出較多,陣列時序和規(guī)模提升難度較大。針對YOLO系列算法的卷積神經(jīng)網(wǎng)絡(luò)硬件加速,重慶大學(xué)張麗麗基于高級綜合(HLS)開發(fā)工具對YOLO算法進(jìn)行定點運算,探索網(wǎng)絡(luò)結(jié)構(gòu)并行和卷積計算并行,速度上提升6~7倍,但在設(shè)計上脫離了硬件架構(gòu),加速性能有進(jìn)一步提升的空間。華南理工大學(xué)羅聰研究了數(shù)據(jù)復(fù)用和網(wǎng)絡(luò)二值化處理方式,達(dá)到了高運算性能,但在檢測精度上有所下降。電子科技大學(xué)張雲(yún)軻等研究了壓縮網(wǎng)絡(luò)結(jié)構(gòu),利用流水線和并行運算,達(dá)到了車輛檢測的實時性要求,但它只針對車輛檢測,相對原YOLO算法其應(yīng)用面較窄。針對上述情況,在保證通用目標(biāo)檢測應(yīng)用場景的前提下,根據(jù)YOLO-tiny網(wǎng)絡(luò)層設(shè)計精度可變的定點量化,對定點數(shù)進(jìn)行重訓(xùn)練,同時設(shè)計特定而高效的硬件架構(gòu),在保證檢測精度的情況下,減少了資源使用,提升了加速效率。

        1 YOLOv3-tiny網(wǎng)絡(luò)特性分析

        YOLOv3-tiny網(wǎng)絡(luò)層結(jié)構(gòu)如表1所示,YOLOv3-tiny一共包含13個卷積層(conv)、6個池化層(pooling,均為最大值池化)、1個上采樣層(upsample)、2個路由層(route)和2個yolo層。其中對于weight和output列中數(shù)據(jù)量計算中選取的均為量化后的8 bit定點數(shù)。網(wǎng)絡(luò)結(jié)構(gòu)中yolo層主要是對數(shù)據(jù)做logistic變換。logistic變換是一種非線性變換,其計算中包括指數(shù)等運算,不適合在FPGA上實現(xiàn)。考慮到其在網(wǎng)絡(luò)前向計算過程中的時間消耗較少,因此加速模塊中不包含對yolo層的加速,將這一層計算放到CPU中完成。網(wǎng)絡(luò)結(jié)構(gòu)中route1層是將前面某一層的輸出作為下一層的輸入操作,route2層是將前面2層在通道數(shù)上進(jìn)行拼接,硬件實現(xiàn)上控制讀取數(shù)據(jù)的地址即可進(jìn)行拼接操作。池化層與上采樣層計算模式簡單,池化層都是對輸入特征圖中的2×2個數(shù)據(jù)進(jìn)行比較,得到一個最大值,保存到輸出特征圖中。上采樣層將輸入特征圖中的每個數(shù)據(jù)復(fù)制4次,得到2×2的數(shù)據(jù),保存到輸出特征圖中,這2種類型的網(wǎng)絡(luò)層在硬件上進(jìn)行數(shù)值比較和數(shù)據(jù)復(fù)制,即可完成加速。

        表1 YOLOv3-tiny網(wǎng)絡(luò)層結(jié)構(gòu)

        卷積層是YOLOv3-tiny網(wǎng)絡(luò)的核心網(wǎng)絡(luò)層,YOLOv3-tiny的計算量絕大部分集中在卷積層。卷積層中包含大量的乘累加運算和一部分非線性運算。非線性運算在FPGA中均可通過查表法實現(xiàn),硬件加速重點關(guān)注卷積層中的乘累加運算。與AlexNet網(wǎng)絡(luò)的卷積層比較,YOLOv3-tiny網(wǎng)絡(luò)的卷積層在結(jié)構(gòu)上卷積核有3×3和1×1 2種規(guī)格,卷積核步長(stride)均為1,結(jié)構(gòu)較為規(guī)整,輸入輸出通道數(shù)均為16的倍數(shù)。輸出特征圖的寬和高經(jīng)過最大值池化后,整體呈下降趨勢,最大的規(guī)格為224×224,最小的規(guī)格為7×7。從數(shù)值上分析,為了提升計算性能,增加輸入輸出維度上的并行計算設(shè)計。為了提升乘加陣列的計算效率,設(shè)計基本乘加陣列計算單元,適應(yīng)特征圖尺寸。

        2 YOLOv3-tiny硬件加速設(shè)計

        2.1 可變定點數(shù)量化

        卷積神經(jīng)網(wǎng)絡(luò)往往存在數(shù)據(jù)冗余,在訓(xùn)練時通常使用32 bit浮點類型來表示權(quán)重參數(shù),數(shù)據(jù)在參數(shù)精度上存在冗余。神經(jīng)網(wǎng)絡(luò)對低精度權(quán)重值有非常高的容忍度,較低精度的權(quán)重值也不會降低神經(jīng)網(wǎng)絡(luò)的性能。在推理時將32 bit浮點參數(shù)量化為低比特定點數(shù),可以在幾乎不損失網(wǎng)絡(luò)性能的條件下,顯著降低參數(shù)存儲需求和數(shù)據(jù)傳輸帶寬需求。YOLOv3-tiny原始的權(quán)重參數(shù)用32 bit浮點數(shù)表示,其平均精度(mean Average Precision,mAP)為59.16。測試了權(quán)重由不同位寬表示下的性能損失情況,如圖1所示??梢姡?dāng)位寬減少到12時,性能略微下降,從8 bit開始,位寬每減少一位,性能下降明顯。根據(jù)不同數(shù)據(jù)位數(shù)的網(wǎng)絡(luò)檢測精度和計算機中常用的存儲位數(shù),選擇將32位浮點數(shù)量化為8位定點數(shù)。

        圖1 不同參數(shù)位寬下的性能下降情況

        定點數(shù)是指小數(shù)點位置固定的數(shù)值表達(dá)方式。一個位(一般為2的整數(shù)冪)定點數(shù)可以表示為(-1)××2-,其中是符號位,是(-1)位的數(shù)值部分,代表了十進(jìn)制小數(shù)點的位置,起到比例因子的作用。例如,一個8 bit的整數(shù),當(dāng)=0時,表示范圍為-128~127,精度為2=1;當(dāng)=5時,表示范圍為-4~3.968 75,精度為2=0.031 25。在8 bit情況下,不同下的數(shù)值表示范圍和精度不同。在位寬確定的情況下,定點數(shù)的數(shù)值范圍和精度相互矛盾,需要合理選擇比例因子。

        為了保證網(wǎng)絡(luò)檢測精度,在量化時要選擇合理的比例因子。對YOLOv3-tiny網(wǎng)絡(luò)每層的權(quán)重參數(shù)和輸出特征圖的范圍進(jìn)行了統(tǒng)計,每層輸出特征圖的原始數(shù)值范圍和量化后可表示的數(shù)值范圍如表2所示。針對YOLOv3-tiny中各個網(wǎng)絡(luò)層不同的數(shù)據(jù)分布,選擇可變精度的定點數(shù)表示量化后的數(shù)據(jù),對每層的權(quán)重參數(shù)、批歸一化參數(shù)等進(jìn)行了統(tǒng)計,并確定了比例因子。

        表2 YOLOv3-tiny網(wǎng)絡(luò)每層的輸出特征圖數(shù)值范圍

        2.2 定點數(shù)重訓(xùn)練

        當(dāng)量化后參數(shù)位寬下降至8時,網(wǎng)絡(luò)性能也存在小幅度下降。引入了重訓(xùn)練機制,對量化后的權(quán)重參數(shù)進(jìn)行重新訓(xùn)練,可將性能恢復(fù)至與高精度參數(shù)性能相當(dāng)?shù)牡夭健⒍祷窠?jīng)網(wǎng)絡(luò)的重訓(xùn)練方法應(yīng)用在YOLOv3-tiny卷積神經(jīng)網(wǎng)絡(luò)上,對8 bit量化參數(shù)進(jìn)行重訓(xùn)練,訓(xùn)練流程為:

        //1.forward propagation

        for(=0;

        {

        }

        //2.backward propagation and update

        for(=layer_max;>=0;--)

        {

        }

        2.3 并行計算與數(shù)據(jù)存儲

        并行計算設(shè)計是硬件加速模塊設(shè)計的關(guān)鍵。為了提升硬件加速模塊的性能,在卷積神經(jīng)網(wǎng)絡(luò)加速上需要盡可能讓基本計算單元同時進(jìn)行計算,同時還要兼顧FPGA的資源消耗、硬件加速模塊的工作效率和數(shù)據(jù)吞吐量。并行計算設(shè)計是以上各個因素綜合考慮的結(jié)果。并行設(shè)計可在卷積計算過程中參與的數(shù)據(jù)維度上進(jìn)行選擇設(shè)計,卷積核的寬和高在YOLOv3-tiny網(wǎng)絡(luò)中有3×3和1×1 2種尺寸。在并行設(shè)計上兼容2種尺寸會導(dǎo)致效率的下降,因此選擇在輸入通道、輸出通道、輸出特征圖寬和輸出特征圖高4個維度同時進(jìn)行并行計算設(shè)計。在輸入通道和輸出通道2個維度上,通道數(shù)多為16的倍數(shù)且數(shù)值相對較大。同時考慮到資源消耗和數(shù)據(jù)吞吐,在輸入通道和輸出通道2個維度上,并行因子均選擇8,能夠讓基本計算單元取得較高的計算效率。類似綜合考慮后,輸出特征圖寬和輸出特征圖高選擇的并性因子均為4。并行計算對應(yīng)的示意圖如圖2所示。

        圖2 并行計算示意圖

        大規(guī)模的并行計算需要對應(yīng)大量數(shù)據(jù)同時參與。在YOLOv3-tiny網(wǎng)絡(luò)conv7中參與計算的權(quán)重經(jīng)8 bit量化后為4.7 MB,數(shù)據(jù)量較大,每一層網(wǎng)絡(luò)層的權(quán)重等參數(shù)儲存在外部雙倍數(shù)據(jù)速率同步動態(tài)隨機存儲器(DDR SDRAM)中。數(shù)據(jù)通過AXI總線從外部存儲器DDR輸入到FPGA片上緩存。為了方便計算,單元從FPGA片上緩存讀數(shù)后直接參與運算,選擇與英偉達(dá)深度學(xué)習(xí)加速器(NVDLA)類似的數(shù)據(jù)存儲格式對數(shù)據(jù)進(jìn)行儲存,減少數(shù)據(jù)轉(zhuǎn)換。圖3為權(quán)重的存儲格式示意圖,其中為卷積核寬高,為輸入通道數(shù),為輸出通道數(shù),為輸入通道并行因子,為輸出通道并行因子。在設(shè)計中、均為8。在數(shù)據(jù)復(fù)用上,由于在YOLOv3-tiny網(wǎng)絡(luò)前3層卷積層中,特征圖參數(shù)量大于權(quán)重參數(shù)量,選擇進(jìn)行輸入特征圖復(fù)用。不同輸出通道上的卷積核復(fù)用同一輸入特征圖,輸入特征圖復(fù)用次數(shù)為輸出通道數(shù)次。在YOLOv3-tiny網(wǎng)絡(luò)后10層卷積層中,權(quán)重參數(shù)量大于特征圖參數(shù)量。選擇進(jìn)行權(quán)重復(fù)用,在輸入特征圖上的不同卷積窗口中的數(shù)據(jù)復(fù)用相同的卷積核,得到輸出特征圖平面維度的不同點,權(quán)重復(fù)用次數(shù)為輸出特征圖寬高乘積×。

        圖3 權(quán)重存儲格式

        2.4 硬件加速架構(gòu)

        在FPGA上對YOLOv3-tiny卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行推理加速時,設(shè)計與網(wǎng)絡(luò)結(jié)構(gòu)緊密結(jié)合的硬件模塊能夠提升運算的計算效率,相比于CPU能夠大幅度減少運行時間,相比于GPU能夠降低能耗,更適合在移動端進(jìn)行應(yīng)用。針對YOLOv3-tiny網(wǎng)絡(luò)設(shè)計的硬件加速結(jié)構(gòu)如圖4所示,主要分為3個部分:數(shù)據(jù)通路、計算模塊和控制邏輯。在數(shù)據(jù)通路上,F(xiàn)PGA內(nèi)部緩存分為對應(yīng)輸入特征圖、權(quán)重和輸出特征圖的片上緩存,F(xiàn)PGA片上緩存作為外部存儲器DDR和計算模塊數(shù)據(jù)的緩沖橋梁,通過雙緩沖機制與數(shù)據(jù)復(fù)用方法,使得取數(shù)與計算以流水的方式不斷進(jìn)行。各級緩存之間的傳輸通過握手的方式進(jìn)行,當(dāng)讀寫雙方的valid與ready信號同時拉高時,數(shù)據(jù)按照指定方式進(jìn)行傳輸,當(dāng)傳輸完成指定數(shù)量的數(shù)據(jù)后,complete信號拉高,完成傳輸任務(wù)。

        圖4 硬件加速架構(gòu)

        在硬件加速結(jié)構(gòu),計算模塊完成對conv層、pooling層、upsample層的硬件加速,計算模塊重點在于對卷積運算的加速。卷積運算可以拆分為六重循環(huán)的乘累加運算和非線性運算,非線性運算Non-Linearity模塊主要包含了3個步驟:Batch Norm、Add Bias、Activate。在神經(jīng)網(wǎng)絡(luò)訓(xùn)練過程中,一般會引入Batch Norm(批歸一化)操作,將輸入數(shù)據(jù)進(jìn)行歸一化處理,使數(shù)據(jù)均值變?yōu)?、標(biāo)準(zhǔn)差變?yōu)?的分布。Batch Norm可以加快訓(xùn)練速度,提高模型訓(xùn)練精度。Batch Norm主要是以下的計算:

        (1)

        式中:為輸入數(shù)據(jù);為輸出數(shù)據(jù);和為當(dāng)前輸入批次的數(shù)據(jù)分布均值和方差;為一個為了避免除數(shù)為0的很小的常數(shù);和為訓(xùn)練過程中需要學(xué)習(xí)的參數(shù)。

        在推理過程中,往往是輸入單個樣本,因此和為訓(xùn)練階段記錄下來的均值和方差,和為訓(xùn)練得到的參數(shù)。第2步Add Bias操作對輸入數(shù)據(jù)加上一個偏移量bias。第3步Activate是對數(shù)據(jù)進(jìn)行非線性的激活操作,常見的激活函數(shù)有ReLU、Sigmoid、LeakyReLU等。YOLOv3-tiny網(wǎng)絡(luò)使用到了LeakyReLU激活函數(shù),公式為:

        (2)

        乘累加運算涉及6個數(shù)據(jù)維度上的乘累加計算,計算方式簡單,但涉及數(shù)據(jù)量大。其中3個數(shù)據(jù)維度上是乘累加計算,3個維度上是并行計算。乘累加運算在硬件加速結(jié)構(gòu)的計算模塊中,分為乘累加陣列(MAC陣列)和累加器2個部分。為了適應(yīng)在輸入通道、輸出通道、輸出特征圖寬和輸出特征圖高4個數(shù)據(jù)維度上的并行計算設(shè)計思想,乘累加陣列分為16個8×8的塊計算陣列,每一個塊計算陣列為8個并行的乘加樹結(jié)構(gòu),塊計算陣列映射為輸入通道和輸出通道。每個塊計算陣列的行做乘累加運算,計算結(jié)果輸入到累加器中,累加器中通過計數(shù)器計算完成3個數(shù)據(jù)維度上的乘累加運算后得到輸出特征圖二維平面上的點,送入輸出特征圖片上緩存,通過AXI總線將輸出結(jié)果傳輸?shù)狡釪DR。

        在卷積神經(jīng)網(wǎng)絡(luò)硬件加速結(jié)構(gòu)中,由于數(shù)據(jù)量和計算量過大的原因,通常是每一層網(wǎng)絡(luò)層進(jìn)行加速,輸入數(shù)據(jù)從片外DDR中輸入,在FPGA上完成加速運算后輸出到片外DDR中。但對于pooling層和upsample層,運算模式相對簡單,主要操作為對數(shù)據(jù)的比較、篩選和復(fù)制。通過對該2類網(wǎng)絡(luò)層的硬件加速與卷積層加速模塊進(jìn)行融合,可以減少一次網(wǎng)絡(luò)層數(shù)據(jù)與片外DDR的往返傳輸,減少了數(shù)據(jù)傳輸總量。在硬件加速結(jié)構(gòu)計算模塊中,完成卷積層的乘累加運算和非線性運算硬件加速后,加入上下采樣計算模塊完成對pooling層和upsample層的加速運算。route層操作主要對已完成計算的2層網(wǎng)絡(luò)層在輸入通道上進(jìn)行拼接計算,在片外DDR中預(yù)留專用route操作層存儲區(qū)域,利用控制模塊完成對route操作的拼接運算??刂七壿嫷闹饕譃榉謮K傳輸控制和網(wǎng)絡(luò)層控制2個部分,分塊傳輸控制是根據(jù)數(shù)據(jù)復(fù)用方式劃分?jǐn)?shù)據(jù)從片外DDR到FPGA片上緩存的分塊傳輸大小和次序,網(wǎng)絡(luò)層控制將需要加速的網(wǎng)絡(luò)層分為conv層、conv+pooling層、conv+upsample層和route層4類,根據(jù)不同類型網(wǎng)絡(luò)層調(diào)用計算模塊中加速單元完成對應(yīng)的硬件加速。

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

        在量化重訓(xùn)練上,在YOLO系列網(wǎng)絡(luò)的訓(xùn)練過程中,對不同輸入圖像尺寸的YOLOv3、YOLOv3-tiny網(wǎng)絡(luò)進(jìn)行了量化重訓(xùn)練,結(jié)果如表3所示??梢钥吹?,量化后的網(wǎng)絡(luò)性能損失在可接受范圍內(nèi),但是其參數(shù)量卻僅為原來的1/4,降低了存儲需求和數(shù)據(jù)傳輸需求。

        表3 量化前后性能對比

        經(jīng)過用8-bit可變精度定點數(shù)對32-bit浮點數(shù)量化后,代入到Y(jié)OLOv3、YOLOv3-tiny卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行重訓(xùn)練后,我們發(fā)現(xiàn)在YOLOv3-tiny網(wǎng)絡(luò)檢測精度上,224×224輸入尺寸的圖像比416×416輸入尺寸的效果更好,網(wǎng)絡(luò)檢測精度下降到僅為0.19 mAP,網(wǎng)絡(luò)性能下降基本可以忽略。224×224輸入尺寸的圖像不經(jīng)過重訓(xùn)練后,網(wǎng)絡(luò)檢測精度為55 mAP,精度下降為4 mAP;經(jīng)過重訓(xùn)練后,量化后的低精度參數(shù)網(wǎng)絡(luò)的性能可以恢復(fù)到和原始高精度網(wǎng)絡(luò)相當(dāng)?shù)男阅堋?/p>

        選擇在FPGA上對224×224輸入尺寸的YOLOv3-tiny卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行硬件加速。YOLOv3-tiny硬件加速結(jié)構(gòu)設(shè)計基于Xilinx公司的FPGA開發(fā)平臺VC707。開發(fā)平臺有Virtex-7型號的FPGA和1 GB容量的DDR3,F(xiàn)PGA具體型號為xc7vx485t2ffg1761C,開發(fā)環(huán)境為Vivado2 017.04,開發(fā)語言為Verilog硬件編程語言。下面從FPGA資源消耗、網(wǎng)絡(luò)加速性能和乘加陣列(MAC)計算效率3個方面評估設(shè)計的硬件加速結(jié)構(gòu)對YOLOv3-tiny卷積神經(jīng)網(wǎng)絡(luò)的加速效果。對設(shè)計的硬件加速結(jié)構(gòu),設(shè)置FPGA的運行時鐘為125 MHz。經(jīng)過Vivado綜合與實現(xiàn)后,得到的資源消耗如表4所示。其中使用塊隨機存儲(BRAM)數(shù)量為136,數(shù)字信號處理模塊(DSP)數(shù)量為576,Vivado實現(xiàn)相應(yīng)電路后給出的功耗為2.952 W,硬件資源消耗少。

        表4 FPGA資源使用情況

        在硬件加速結(jié)構(gòu)內(nèi)部設(shè)置計數(shù)器,在網(wǎng)絡(luò)層數(shù)據(jù)從片外雙倍數(shù)據(jù)速率存儲器(DDR)傳入FPGA片上緩存時開始計數(shù),在網(wǎng)絡(luò)層硬件加速完成后,所有輸出特征圖數(shù)據(jù)傳出到片外DDR后停止計數(shù),統(tǒng)計網(wǎng)絡(luò)層在FPGA上運行時間和網(wǎng)絡(luò)層總的乘累加數(shù)量,計算得到網(wǎng)絡(luò)層的加速性能和MAC陣列計算效率。各個網(wǎng)絡(luò)層的加速運行時間和MAC效率匯總?cè)绫?所示。YOLOv3-tiny卷積神經(jīng)網(wǎng)絡(luò)中除yolo網(wǎng)絡(luò)層外,conv、pooling、upsample和route網(wǎng)絡(luò)層均可在設(shè)計的硬件加速結(jié)構(gòu)中運行。從表5中可以看出:網(wǎng)絡(luò)層MAC計算效率為37.03%~99.21%分布,各個網(wǎng)絡(luò)層效率相差較大,主要原因在于不同的網(wǎng)絡(luò)層分塊計算劃分帶來的差異;除此之外,數(shù)據(jù)傳輸、非線性運算也會占有一定的影響因素。分析conv1+pooling1網(wǎng)絡(luò)層的37.03%,由于輸入通道數(shù)為3,在輸入通道并行因子為8的MAC陣列中,理論上最高效率只能達(dá)到37.5%;對于conv10網(wǎng)絡(luò)層,7×7×75的輸出特征圖在對應(yīng)并行因子維度為4×4×8的并行維度上,實現(xiàn)MAC計算效率僅為50.28%;而conv3+pooling3網(wǎng)絡(luò)層,各個并行維度都能整數(shù)劃分;MAC陣列在分塊計算時不存在資源的浪費,對應(yīng)計算效率能達(dá)到99.21%。

        表5 YOLOv3-tiny網(wǎng)絡(luò)層加速性能

        YOLOv3-tiny在設(shè)計的硬件加速結(jié)構(gòu)上運行的網(wǎng)絡(luò)層總乘累加數(shù)量為0.793 2 G,網(wǎng)絡(luò)加速時間總共約為8.5 ms,所有加速的網(wǎng)絡(luò)層算力約為186.6 GOPS,加速網(wǎng)絡(luò)層MAC計算效率平均值達(dá)到74.54%。在對輕量級yolo網(wǎng)絡(luò)進(jìn)行加速的研究中,將本文設(shè)計的硬件加速結(jié)構(gòu)與其他文獻(xiàn)的加速結(jié)構(gòu)在性能上進(jìn)行比較。對比張麗麗、黃智勇的加速研究,本文結(jié)構(gòu)在硬件上專為YOLOv3-tiny網(wǎng)絡(luò)設(shè)計,從大規(guī)模并行計算設(shè)計到大范圍數(shù)據(jù)復(fù)用,加速設(shè)計更為深入,相比1 s的運行時間提升了2個數(shù)量級;對比張雲(yún)軻的加速結(jié)構(gòu)40.8 ms的加速時間,本文加速結(jié)構(gòu)使用的MAC陣列并行度大,運行頻率高,運行時間有4.8倍的提升,并且不局限于車輛檢測,應(yīng)用范圍更廣;對比羅聰?shù)难芯?,相比二值化YOLO網(wǎng)絡(luò)后的加速時間僅為6.88 ms,與本文加速結(jié)構(gòu)8.5 ms的加速時間相差不大,但網(wǎng)絡(luò)檢測精度相比其在mAP上有5%的下降,本文加速結(jié)構(gòu)相比原網(wǎng)絡(luò)檢測精度基本保持同一水平。

        4 結(jié)束語

        本文對YOLOv3-tiny卷積神經(jīng)網(wǎng)絡(luò)硬件加速進(jìn)行研究,在深入分析網(wǎng)絡(luò)特性后,提出一種基于FPGA的YOLOv3-tiny硬件加速結(jié)構(gòu)。本文通過對YOLOv3-tiny網(wǎng)絡(luò)參數(shù)進(jìn)行可變精度定點量化來減少網(wǎng)絡(luò)計算量和數(shù)據(jù)存儲量,針對量化后出現(xiàn)網(wǎng)絡(luò)精度下降的問題采取量化重訓(xùn)練的方法保證量化后的網(wǎng)絡(luò)精度,數(shù)據(jù)從32 bit浮點數(shù)量化為8 bit定點數(shù),數(shù)據(jù)存儲和計算量下降,網(wǎng)絡(luò)檢測精度基本不變。本文在輸入輸出通道和輸出特征圖寬高4個維度上進(jìn)行并行計算設(shè)計,設(shè)計了4×4×8×8規(guī)模的計算陣列,提升網(wǎng)絡(luò)加速性能,加速算力約為186.6 GOPS;通過沿用類似NVDLA的數(shù)據(jù)存儲格式,針對不同網(wǎng)絡(luò)進(jìn)行不同類型的數(shù)據(jù)復(fù)用,減少數(shù)據(jù)傳輸,網(wǎng)絡(luò)加速時間約為8.5 ms;對網(wǎng)絡(luò)層提取共性、區(qū)分不同特性,設(shè)計了除yolo層外的YOLOv3-tiny高效網(wǎng)絡(luò)加速硬件架構(gòu),MAC整體計算效率為74.54%。本文基于FPGA設(shè)計的針對YOLOv3-tiny卷積神經(jīng)網(wǎng)絡(luò)的硬件加速結(jié)構(gòu),在綜合性能上優(yōu)于目前出現(xiàn)的研究方案,并且計算資源和存儲資源相對較少,在移動端人工智能加速應(yīng)用是一個相對不錯的選擇。

        猜你喜歡
        網(wǎng)絡(luò)層運算卷積
        Noise-Tolerant ZNN-Based Data-Driven Iterative Learning Control for Discrete Nonaffine Nonlinear MIMO Repetitive Systems
        基于時域全卷積網(wǎng)絡(luò)的語音增強
        重視運算與推理,解決數(shù)列求和題
        基于3D-Winograd的快速卷積算法設(shè)計及FPGA實現(xiàn)
        有趣的運算
        從濾波器理解卷積
        電子制作(2019年11期)2019-07-04 00:34:38
        “整式的乘法與因式分解”知識歸納
        撥云去“誤”學(xué)乘除運算
        基于WPA的物聯(lián)網(wǎng)網(wǎng)絡(luò)層安全的研究
        一種基于卷積神經(jīng)網(wǎng)絡(luò)的性別識別方法
        日韩有码在线一区二区三区合集| 欧美一级色图| 日韩中文字幕网站| 亚洲一区二区在线观看av| 欧美成人秋霞久久aa片| 影视先锋av资源噜噜| 久久精品国产屋| 久久人妻少妇嫩草av蜜桃| 中文字幕亚洲无线码一区女同| 内射精品无码中文字幕| 91久久国产情侣真实对白| 亚洲一区二区三区熟妇| 成在线人av免费无码高潮喷水| 4444亚洲人成无码网在线观看| 青草青草久热精品视频国产4| 一区二区三区四区亚洲免费| 久久久久99精品成人片直播| 国产欧美日韩在线观看| 久久精品国产亚洲精品色婷婷 | 极品尤物人妻堕落沉沦| 性色av无码中文av有码vr| 精品国产AⅤ一区二区三区4区| 激情网色图区蜜桃av| 亚洲乱码一区二区三区在线观看 | 人妻夜夜爽天天爽三区麻豆av| 黑丝美腿国产在线观看| 99麻豆久久久国产精品免费| 破了亲妺妺的处免费视频国产| 国产成人AⅤ| 精品一区二区三区蜜桃麻豆| 久久精品噜噜噜成人| 欧美日韩精品一区二区三区高清视频 | 亚洲AV无码乱码一区二区三区| 91精品久久久中文字幕| 无码av中文一区二区三区 | 久9re热视频这里只有精品| 久久成人麻豆午夜电影| 国内自拍视频在线观看| 友田真希中文字幕亚洲| 国产无遮挡又黄又爽又色| 无码AV无码免费一区二区|