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

基于FPGA 的低功耗YOLO 加速器設(shè)計(jì)

2022-10-28 13:42:20李欽祚肖燈軍
電子設(shè)計(jì)工程 2022年20期
關(guān)鍵詞:優(yōu)化設(shè)計(jì)

李欽祚,肖燈軍

(1.中國(guó)科學(xué)院空天信息創(chuàng)新研究院,北京 100190;2.中國(guó)科學(xué)院大學(xué)電子電氣與通信工程學(xué)院,北京 100049)

深度學(xué)習(xí)在目標(biāo)檢測(cè)、圖像分類、語(yǔ)義分割等方 面發(fā)揮著重要作用。在目標(biāo)檢測(cè)領(lǐng)域YOLO 算法[1]與其他算法[2-3]相比平衡了精度和速度。然而基于GPU 及ASIC 實(shí)現(xiàn)的YOLO 算法分別存在功耗高和設(shè)計(jì)周期長(zhǎng)的問(wèn)題。而FPGA 由于其功耗低、體積小、可編程性強(qiáng)等優(yōu)點(diǎn)通常被用來(lái)進(jìn)行神經(jīng)網(wǎng)絡(luò)加速計(jì)算。目前的研究主要針對(duì)卷積計(jì)算、模型、數(shù)據(jù)位寬等方面進(jìn)行優(yōu)化。文獻(xiàn)[4]和文獻(xiàn)[5]分別采用Winograd 及FFT 算法優(yōu)化卷積計(jì)算;文獻(xiàn)[6-7]利用神經(jīng)網(wǎng)絡(luò)參數(shù)稀疏性進(jìn)行FPGA 加速,文獻(xiàn)[8]采用XNOR 門優(yōu)化模型,但對(duì)模型的優(yōu)化容易影響檢測(cè)精度;文獻(xiàn)[9-10]使用16 bit 定點(diǎn)數(shù)部署YOLO 網(wǎng)絡(luò),而文獻(xiàn)[11]采用浮點(diǎn)數(shù)部署消耗了大量片上資源。該文基于FPGA 在Xilinx 的軟硬件平臺(tái)上實(shí)現(xiàn)了低功耗Tiny YOLOv3 加速器,對(duì)神經(jīng)網(wǎng)絡(luò)的加速計(jì)算做進(jìn)一步探索。

1 Tiny YOLOv3網(wǎng)絡(luò)及優(yōu)化探索

1.1 Tiny YOLOv3網(wǎng)絡(luò)簡(jiǎn)介

Tiny YOLOv3 網(wǎng)絡(luò)由13 個(gè)卷積層組成。輸入圖像大小默認(rèn)為416 pixel×416 pixel,通過(guò)卷積層進(jìn)行特征提取,最大池化層進(jìn)行數(shù)據(jù)降維和維持特征不變性,升采樣層可以增加特征圖的維數(shù),為26 pixel×26 pixel 的輸出特征圖提供更多的特征信息。隨著卷積層數(shù)的加深,卷積核的感受野隨之增大。為了檢測(cè)不同大小的目標(biāo),Tiny YOLOv3網(wǎng)絡(luò)分別采用13 pixel×13 pixel 和26 pixel×26 pixel 的YOLO層進(jìn)行大目標(biāo)和小目標(biāo)的檢測(cè)。Tiny YOLOv3 網(wǎng)絡(luò)可以提取的特征為W×H×(4+1+C)×B,其中W和H是輸出特征圖的寬度和高度,將輸入圖像分成W×H個(gè)網(wǎng)格單元,每個(gè)網(wǎng)格單元都有(4+1+C)×B個(gè)通道,分別包含坐標(biāo)信息、目標(biāo)置信度、不同類別置信度(C)以及邊界框數(shù)量(B)。

1.2 優(yōu)化卷積計(jì)算

1.2.1 行寄存器設(shè)計(jì)

如圖1所示,在實(shí)現(xiàn)卷積計(jì)算的過(guò)程中,F(xiàn)PGA 不需要存儲(chǔ)所有輸入信息,只需要存儲(chǔ)當(dāng)前卷積窗所在行的所有數(shù)據(jù)即可。在一個(gè)通道維度上,設(shè)輸入圖像寬度為fw,高度為fh,卷積窗尺寸為kw×kh,此時(shí)行寄存器的尺寸為kh×fw。在Tiny YOLOv3 的結(jié)構(gòu)中,行寄存器的尺寸可以設(shè)置為418×3。行寄存器是一個(gè)移位寄存器數(shù)組,當(dāng)有新的輸入數(shù)據(jù)進(jìn)入行寄存器時(shí),對(duì)應(yīng)列中的舊數(shù)據(jù)向上移位,新的輸入數(shù)據(jù)便會(huì)插入。行寄存器區(qū)只會(huì)保存最近的kh行數(shù)據(jù)。

圖1 行緩存區(qū)示意圖

1.2.2 通道交錯(cuò)設(shè)計(jì)

圖2 卷積數(shù)據(jù)流操作順序

1.3 引入FIFO優(yōu)化

在多通道并行執(zhí)行的過(guò)程中,寫(xiě)入操作發(fā)生的次數(shù)比讀取操作更加頻繁。由于網(wǎng)絡(luò)的輸出通道數(shù)量普遍大于輸入通道,將在輸出端口產(chǎn)生數(shù)據(jù)擁塞。故在卷積輸出和AXI4 流端口之間引入First-in Firstout(FIFO)來(lái)優(yōu)化流水線結(jié)構(gòu)。設(shè)輸入通道數(shù)量為8,輸出通道數(shù)量為16,由于該設(shè)計(jì)中采用16位定點(diǎn)數(shù)和64 位DMA,所以當(dāng)Initial Interval(II)等于1 時(shí),需要兩個(gè)時(shí)鐘周期來(lái)獲取八個(gè)通道的輸入數(shù)據(jù)。當(dāng)新的八個(gè)輸入通道到來(lái)時(shí),由上一次輸入產(chǎn)生的16 個(gè)輸出通道將被清除,為了避免這種情況,輸入流必須暫停三個(gè)額外的周期來(lái)完成一次完整的輸入輸出操作,故共需五個(gè)周期。若加入FIFO 優(yōu)化,產(chǎn)生的輸出數(shù)據(jù)會(huì)逐步被發(fā)送,這樣便可以在任務(wù)層級(jí)流水化傳輸加速器的輸入和輸出數(shù)據(jù)。圖3 以三個(gè)任務(wù)為例,進(jìn)行該設(shè)計(jì)采用的流水化結(jié)構(gòu)與傳統(tǒng)設(shè)計(jì)的時(shí)序?qū)Ρ取?/p>

圖3 流水化與傳統(tǒng)設(shè)計(jì)時(shí)序?qū)Ρ?/p>

圖3 中,在任務(wù)級(jí)完成一次操作的時(shí)間(Ttask)包括從輸入寄存器讀取數(shù)據(jù)時(shí)間(Tin),在Processing Elements(PE)中進(jìn)行計(jì)算的時(shí)間(Tout)以及從PE 中讀取計(jì)算結(jié)果的時(shí)間(Tcmp),故傳統(tǒng)設(shè)計(jì)結(jié)構(gòu)完成三次任務(wù)需要的總時(shí)間(Tsum)如式(1)所示:

流水化之后完成三次任務(wù)的總時(shí)間(Tpip_sum)如式(5)所示:

顯然,Tpip_sum<Tsum。

1.4 卷積層設(shè)計(jì)的偽代碼

在卷積IP 運(yùn)行過(guò)程中,首先加載輸入權(quán)重?cái)?shù)據(jù);其次進(jìn)行輸入圖像數(shù)據(jù)加載,數(shù)據(jù)進(jìn)入行緩存區(qū)等待卷積計(jì)算;然后卷積計(jì)算按照滑窗的形式進(jìn)行,隨著滑動(dòng)窗口的移動(dòng)進(jìn)行乘累加運(yùn)算,計(jì)算完畢之后,進(jìn)行輸出通道的整合。在算法的設(shè)計(jì)中,引入輸入輸出通道折疊因子,以此適應(yīng)不同層的通道參數(shù),卷積IP 設(shè)計(jì)的偽代碼如算法1:

算法1 卷積層優(yōu)化偽代碼

1.5 卷積優(yōu)化算法的性能指標(biāo)

該節(jié)對(duì)卷積層優(yōu)化算法的資源占用和延遲進(jìn)行估計(jì)。首先,由算法1 可以看出在設(shè)計(jì)中引入了流水線優(yōu)化。其initial interval(II)主要受三方面因素的影響:卷積操作的折疊因子(factor)、輸入輸出比(ratio)以及包括行緩存等其他操作(other)。II的數(shù)學(xué)表達(dá)式如式(6)所示:

式(7)為factor的計(jì)算公式,其中,P代表內(nèi)存分區(qū),輸出通道為N。由于HLS 工具會(huì)將行寄存器區(qū)綜合為2-portBRAM形式,在計(jì)算卷積的過(guò)程中會(huì)使能2×P個(gè)并行卷積核,但是64 bit 的DMA 一次只能夠處理四個(gè)輸入通道,所以需要4×N個(gè)卷積濾波器的通道,由此計(jì)算出factor:

As the PRN code-phase observables ofand,the mean and standard deviation of the carrier-phase observablesandgenerated by the PLL can be expressed as:

在上述II計(jì)算的基礎(chǔ)上,采用式(8)計(jì)算,可對(duì)卷積IP 的資源占用進(jìn)行估計(jì):

其中,M(x)為總的資源占用量。首先,進(jìn)行BRAM占用量的估計(jì)。以第一層卷積的分析為例,卷積窗的大小被設(shè)置為3,故行寄存器區(qū)一共有12 行,每一個(gè)BRAM能夠存儲(chǔ)1 000 個(gè)16 bit 的定點(diǎn)數(shù),故針對(duì)輸入圖像數(shù)據(jù)的BRAM占用如式(9)所示。針對(duì)權(quán)重?cái)?shù)據(jù)的存儲(chǔ),如式(10)所示;因此總的BRAM占用如式(11)所示:

其次,進(jìn)行DSP資源占用的分析。3×3 卷積需要9個(gè)DSP,所以在算法1 所示的卷積操作中,DSP的占用可以由式(12)得出:

數(shù)據(jù)處理的延遲由權(quán)重?cái)?shù)據(jù)處理延遲和輸入圖像數(shù)據(jù)處理延遲兩部分組成。在權(quán)重?cái)?shù)據(jù)處理階段,需要3 個(gè)周期來(lái)加載3×3 的權(quán)重?cái)?shù)據(jù);在輸入圖像數(shù)據(jù)處理階段,延遲與輸入圖像尺寸有關(guān),通常需要補(bǔ)零操作。此外,在算法的設(shè)計(jì)中,需要額外的一行延遲來(lái)使輸出的讀寫(xiě)達(dá)到流水線的效果,故關(guān)于延遲的計(jì)算如式(13)-(15)所示:

2 加速器的實(shí)現(xiàn)方案

2.1 加速器的整體架構(gòu)設(shè)計(jì)

基于FPGA 的低功耗YOLO 加速器的整體架構(gòu)設(shè)計(jì)如圖4 所示。系統(tǒng)的軟件部分可分為PL(Programmable Logic)和PS(Processing System)兩部分。在PL 端,輸入特征圖和權(quán)重存儲(chǔ)在片外DDR 中,通過(guò)FPGA 的AXI4 接口傳入片上緩存,然后片上緩存的數(shù)據(jù)會(huì)傳入FPGA 的并行處理單元進(jìn)行計(jì)算,最后處理單元的計(jì)算結(jié)果會(huì)同樣通過(guò)AXI4 接口傳回片外DDR;在PS 端,集成的ARM CPU 將輸入輸出特征圖輸入到DDR 中,并且PS 端通過(guò)AXI4-Lite 總線下達(dá)DMA 與DDR 之間的數(shù)據(jù)傳輸命令,由DMA 控制器承擔(dān)著YOLO 加速器與片外DDR 間的數(shù)據(jù)搬運(yùn)工作[12-13]。CPU 通過(guò)AXI 總線讀取加速器的運(yùn)算結(jié)果,并在PS 端進(jìn)行圖像預(yù)處理和顯示。綜合PL 和PS 兩部分便形成了YOLO 加速器的整體架構(gòu)。

圖4 低功耗YOLO加速器整體架構(gòu)

2.2 卷積層的流設(shè)計(jì)

在圖2(b)中給出了通道交錯(cuò)的整體數(shù)據(jù)流順序,為了進(jìn)一步說(shuō)明,圖5 中給出了卷積層流設(shè)計(jì)的具體結(jié)構(gòu)。在圖5 所示的結(jié)構(gòu)中,輸入寄存器包含四行數(shù)據(jù),額外的一行用于緩存上次計(jì)算產(chǎn)生的數(shù)據(jù),其他的三行數(shù)據(jù)傳入PE 中進(jìn)行計(jì)算,滑動(dòng)立方體按通道維度滑動(dòng),更新的數(shù)據(jù)進(jìn)入PE 進(jìn)行計(jì)算,Ti個(gè)3×3 的數(shù)據(jù)與3×3 的卷積核進(jìn)行計(jì)算,通過(guò)加法器計(jì)算出卷積結(jié)果,卷積的輸出結(jié)果進(jìn)入經(jīng)過(guò)簡(jiǎn)化的批歸一化層進(jìn)行量化和激活,最后將量化的結(jié)果傳入下一層進(jìn)行計(jì)算。

圖5 卷積層流設(shè)計(jì)具體結(jié)構(gòu)

此外,為了有效地獲取權(quán)重?cái)?shù)據(jù)來(lái)適應(yīng)通道折疊的計(jì)算,將權(quán)重?cái)?shù)據(jù)按照?qǐng)D6 的方式進(jìn)行預(yù)處理。權(quán)重塊的維度按照輸出通道、輸入通道、卷積內(nèi)核分布,需要To數(shù)量的卷積塊在To數(shù)量的PE 中進(jìn)行計(jì)算,其中每一個(gè)卷積塊又適用了Ti個(gè)輸入通道。因此,權(quán)重塊將按照卷積處理的方式進(jìn)行連續(xù)存儲(chǔ),進(jìn)而進(jìn)行后續(xù)的卷積加速運(yùn)算。

圖6 權(quán)重?cái)?shù)據(jù)預(yù)處理

2.3 CNN層分組設(shè)計(jì)

為了減輕FPGA 片上資源的壓力,將權(quán)重?cái)?shù)據(jù)以及圖像數(shù)據(jù)存儲(chǔ)在DDR 中,但各層頻繁讀取DDR會(huì)導(dǎo)致數(shù)據(jù)傳輸?shù)难舆t。如圖7 所示,依據(jù)Tiny YOLOv3 網(wǎng)絡(luò)結(jié)構(gòu)中卷積層后面不同層的類型對(duì)所有的層進(jìn)行分組。具體的分組操作,在Vivado SDK(Software Design Kit)軟件中通過(guò)編程實(shí)現(xiàn),將所有的層分成四組,通過(guò)開(kāi)關(guān)選擇對(duì)應(yīng)的組。通過(guò)層分組操作,可以降低頻繁讀取DDR 導(dǎo)致的數(shù)據(jù)延遲。

圖7 CNN層分組示意圖

2.4 通道折疊設(shè)計(jì)

通道折疊設(shè)計(jì)適用于資源有限的情況,在IP 設(shè)計(jì)過(guò)程中,最大通道數(shù)的設(shè)定通常會(huì)小于輸入輸出通道數(shù),將原始層分成子層將會(huì)更好地適應(yīng)IP 設(shè)計(jì),即進(jìn)行通道折疊。如圖8 所示,為了避免后續(xù)再次進(jìn)行通道交錯(cuò),所有的層都將分成子層進(jìn)行通道折疊。

圖8 通道折疊示意圖

2.5 系統(tǒng)軟件設(shè)計(jì)

軟件設(shè)計(jì)主要包含對(duì)ZYNQ 系統(tǒng)進(jìn)行初始化(對(duì)封裝好的IP 進(jìn)行初始化)和IP 核參數(shù)的設(shè)置,通過(guò)開(kāi)關(guān)設(shè)定層的連接關(guān)系,導(dǎo)入輸入數(shù)據(jù)以及導(dǎo)出輸出數(shù)據(jù)。系統(tǒng)軟件設(shè)計(jì)偽代碼如算法2 所示:

算法2 軟件設(shè)計(jì)偽代碼

3 實(shí)驗(yàn)及比較

3.1 實(shí)驗(yàn)建立

該設(shè)計(jì)主要采用Vivado HLS 2019.1 進(jìn)行低功耗的YOLO 加速器的IP 設(shè)計(jì),高層次綜合可以將C/C++語(yǔ)言轉(zhuǎn)化成FPGA 需要的RTL 語(yǔ)言。加速器硬件模塊化設(shè)計(jì)在Vivado 2019.1 中進(jìn)行,最后,通過(guò)Xilinx SDK 軟件完成YOLO 加速器的軟硬件協(xié)同設(shè)計(jì)。基于FPGA 的低功耗YOLO 加速器設(shè)計(jì)部署在Xilinx Zedboard FPGA 平臺(tái)上,該平臺(tái)的主芯片是Zynq XC7Z020-CLG484-1,包 含512 MB 的DDR 和220個(gè)DSP。

3.2 實(shí)驗(yàn)比較及數(shù)據(jù)分析

如表1 所示,在完成相同設(shè)計(jì)功能的情況下,該設(shè)計(jì)與Intel CPU 相比加速了17 倍,與ARM CPU 相比加速了289 倍,具有良好的加速效果。

表1 該設(shè)計(jì)與CPU運(yùn)行分析比較

該文的計(jì)算性能和功耗比實(shí)驗(yàn)結(jié)果如表2 所示,實(shí)驗(yàn)表明,該文設(shè)計(jì)的功耗為3.4 W,總體的性能功耗比為10.45 GOPS/W。與此同時(shí)表2 也展示了與前人研究成果的比較。文獻(xiàn)[1]的功耗為170 W,性能功耗比為8.89 GOPS/W,該文的性能功耗比相對(duì)于原始GPU 設(shè)計(jì)提升了1.17 倍。該設(shè)計(jì)的功耗低于其他文獻(xiàn)方法。此外,文獻(xiàn)[15]的BRAMs、DSPs 和LUT-FF 的資源消耗分別為1 026、168、60k~86k,文獻(xiàn)[5]的BRAMs、DSPs和LUT-FF 的資源消耗分別為1 706、377、135k~370k,而該設(shè)計(jì)的BRAMs、DSPs 和LUT-FF 的資源消耗分別為185、160、26k~46k,顯著降低了硬件資源的消耗。

表2 研究性能比較

4 結(jié)論

該文提出了一種基于FPGA 的低功耗YOLO 加速器設(shè)計(jì)。通過(guò)軟硬件協(xié)同優(yōu)化完成YOLO 加速器部署:運(yùn)用通道交錯(cuò)方法優(yōu)化卷積計(jì)算;使用層分組方法減少數(shù)據(jù)傳輸?shù)难舆t;利用通道折疊方式降低硬件資源消耗。在Xilinx 平臺(tái)上的驗(yàn)證結(jié)果表明,該設(shè)計(jì)在較低功耗和硬件資源消耗的情況下,具有良好的性能。因此,該文對(duì)有限資源情況下YOLO加速器邊緣部署的實(shí)現(xiàn)具有重要意義。

猜你喜歡
優(yōu)化設(shè)計(jì)
超限高層建筑結(jié)構(gòu)設(shè)計(jì)與優(yōu)化思考
民用建筑防煙排煙設(shè)計(jì)優(yōu)化探討
關(guān)于優(yōu)化消防安全告知承諾的一些思考
一道優(yōu)化題的幾何解法
由“形”啟“數(shù)”優(yōu)化運(yùn)算——以2021年解析幾何高考題為例
何為設(shè)計(jì)的守護(hù)之道?
《豐收的喜悅展示設(shè)計(jì)》
流行色(2020年1期)2020-04-28 11:16:38
瞞天過(guò)海——仿生設(shè)計(jì)萌到家
設(shè)計(jì)秀
海峽姐妹(2017年7期)2017-07-31 19:08:17
有種設(shè)計(jì)叫而專
Coco薇(2017年5期)2017-06-05 08:53:16
主站蜘蛛池模板: 亚洲精品欧美重口| 亚洲不卡av中文在线| 最新精品久久精品| 中文字幕亚洲综久久2021| 三上悠亚精品二区在线观看| аⅴ资源中文在线天堂| 色九九视频| 久久精品aⅴ无码中文字幕| 欧美精品色视频| 伊在人亞洲香蕉精品區| 亚洲精品卡2卡3卡4卡5卡区| 欧美一级视频免费| 三级视频中文字幕| 大陆精大陆国产国语精品1024| 国产自在自线午夜精品视频| 婷婷激情亚洲| 少妇人妻无码首页| 亚洲一区第一页| 青青操国产| 在线欧美一区| 黄色三级毛片网站| 精品国产福利在线| 久久亚洲高清国产| 国产在线第二页| 热这里只有精品国产热门精品| 欧美专区日韩专区| 欧美色99| 国产特一级毛片| 麻豆精品在线视频| 欧洲欧美人成免费全部视频 | 国产一二三区视频| 91精品在线视频观看| 97久久人人超碰国产精品| 日韩福利在线观看| 成人午夜在线播放| 无码高潮喷水专区久久| 国产亚洲欧美日本一二三本道| 亚洲色图欧美| 成年看免费观看视频拍拍| 91成人免费观看在线观看| 欧美亚洲一区二区三区导航| 久久久久人妻一区精品色奶水| 国产成人亚洲欧美激情| 2020精品极品国产色在线观看| 国产美女在线观看| 成人欧美在线观看| 香蕉eeww99国产精选播放| 亚洲精品福利视频| 国内丰满少妇猛烈精品播| 亚洲综合九九| 国产激爽大片高清在线观看| 国产自在自线午夜精品视频| 91福利国产成人精品导航| 久久频这里精品99香蕉久网址| 国产精品美女网站| 亚洲成人77777| 一级爆乳无码av| 国产在线日本| www亚洲精品| 亚洲第一在线播放| 国产成人高清在线精品| 精品免费在线视频| 国产黄在线观看| 亚洲综合精品香蕉久久网| 天堂网亚洲系列亚洲系列| 精品伊人久久久香线蕉| 99久久精品国产精品亚洲| 99视频在线观看免费| 亚洲精品中文字幕午夜| 国产精品女同一区三区五区| 欧美成a人片在线观看| 欧美a在线| 欧美成人精品一级在线观看| 亚洲国产天堂久久九九九| 欧美亚洲欧美区| 久草中文网| 亚洲国产天堂久久九九九| 一区二区欧美日韩高清免费| 欧美日韩国产精品va| 18禁黄无遮挡免费动漫网站| 亚洲黄色成人| 国产精品999在线|