国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于ARM+FPGA 異構(gòu)平臺(tái)的目標(biāo)檢測(cè)加速模塊設(shè)計(jì)與實(shí)現(xiàn)

2022-12-19 09:23李放曹健李普謝豪趙雄波王源張興
關(guān)鍵詞:剪枝加速器卷積

李放 曹健,? 李普 謝豪 趙雄波 王源 張興,?

1.北京大學(xué)軟件與微電子學(xué)院, 北京 102600; 2.北京航天自動(dòng)控制研究所, 北京 100070; 3.北京大學(xué)集成電路學(xué)院,北京 100871; ? 通信作者, E-mail: caojian@ss.pku.edu.cn (曹健), wangyuan@pku.edu.cn (王源), zhx@pku.edu.cn (張興)

卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural network,CNN)廣泛應(yīng)用于目標(biāo)檢測(cè)和圖像分類。由于 CNN的參數(shù)多、計(jì)算量大, 在處理這類任務(wù)時(shí)通用處理器效率較低。因此, 基于 GPU (graphics processing unit), FPGA (field programmable gate array)和 ASIC(application specific integrated circuit)的專用神經(jīng)網(wǎng)絡(luò)加速器已經(jīng)成為研究熱點(diǎn)[1]。在這些方法中, 基于 FPGA 的加速器獲得更多的關(guān)注。與 GPU 相比,FPGA 的能效比更高; 與 ASIC 相比, FPGA 的動(dòng)態(tài)可重構(gòu)性能適應(yīng)深度學(xué)習(xí)算法的不斷變化[2–3]。

在目標(biāo)檢測(cè)領(lǐng)域, YOLO (you only look once) 具有檢測(cè)速度快、網(wǎng)絡(luò)較為簡(jiǎn)單的特點(diǎn), 適合部署在端側(cè)平臺(tái)[4]。隨著算法的更新, YOLO 的后續(xù)版本使用更深的網(wǎng)絡(luò)來(lái)實(shí)現(xiàn)更高的檢測(cè)精度。YOLOv3使用的 Darknet-53 網(wǎng)絡(luò)共 106 層[5], 難以在終端平臺(tái)上直接部署。對(duì)網(wǎng)絡(luò)進(jìn)行適當(dāng)?shù)募糁土炕梢杂行У販p少算法復(fù)雜度和存儲(chǔ)復(fù)雜度, 同時(shí)確保推理精度[6–7], 適合硬件的實(shí)現(xiàn)。

Zhang 等[8]提出采用 Roofline 模型探索加速器空間, 并對(duì)不同卷積層采用統(tǒng)一的循環(huán)展開因子來(lái)減小設(shè)計(jì)難度。Qiu 等[9]針對(duì)加速器使用定點(diǎn)數(shù)計(jì)算帶來(lái)精度損失的問(wèn)題, 提出動(dòng)態(tài)定點(diǎn)量化的方法。然而, 這種訓(xùn)練后量化的方式使得軟件推理的結(jié)果與硬件不一致, 造成難以修正的誤差。雖然Ahmad 等[10]設(shè)計(jì)了一種高并行度的硬件架構(gòu), 實(shí)現(xiàn) 460.8 GOP/s 的系統(tǒng)吞吐率, 但這種架構(gòu)需要耗費(fèi)更多的 FPGA 資源, 不適合在資源有限的平臺(tái)上部署。

本文采用軟硬件協(xié)同的方式, 設(shè)計(jì)一種通用的卷積神經(jīng)網(wǎng)絡(luò)加速器, 并在 ARM+FPGA 異構(gòu)平臺(tái)上成功部署, 實(shí)現(xiàn)端側(cè)實(shí)時(shí)目標(biāo)檢測(cè)。在軟件層面,在模型訓(xùn)練過(guò)程中對(duì)數(shù)據(jù)進(jìn)行量化, 并將量化因子統(tǒng)一為 2 的冪, 方便硬件推理; 在硬件層面, 通過(guò)合理設(shè)計(jì)硬件架構(gòu), 在保證加速器性能的同時(shí), 具備可配置性。

1 研究方案

1.1 系統(tǒng)級(jí)設(shè)計(jì)及軟硬件劃分

與同構(gòu)計(jì)算相比, 異構(gòu)計(jì)算兼具任務(wù)調(diào)度和并行計(jì)算的優(yōu)勢(shì), 更適合完成實(shí)時(shí)目標(biāo)檢測(cè)任務(wù)[11]。本文利用 ARM+FPGA 異構(gòu)平臺(tái)來(lái)加速 YOLOv3。硬件平臺(tái)可分為兩部分: 可編程邏輯(programmable logic, PL)和處理器系統(tǒng)(processing system, PS)。PL部分是 FPGA 芯片, 是一種適用于高度并行計(jì)算的可編程器件。通用處理器進(jìn)行 CNN 前向推理相對(duì)耗時(shí), 因此將推理過(guò)程放在 PL 端。本文設(shè)計(jì)一種基于 FPGA 的 CNN 加速器, 通過(guò)增加計(jì)算單元的并行度來(lái)提高系統(tǒng)的實(shí)時(shí)性。PS 部分包括通用處理器和外部存儲(chǔ)器。CNN 模型所有的參數(shù)和指令都存儲(chǔ)在外部存儲(chǔ)器中。通用處理器按層調(diào)度加速器, 并依據(jù)算法結(jié)果顯示檢測(cè)圖像。系統(tǒng)架構(gòu)如圖1 所示。

圖1 整體系統(tǒng)架構(gòu)Fig.1 Overall system architecture

YOLOv3 實(shí)現(xiàn)目標(biāo)檢測(cè)的步驟如圖2 所示。圖像預(yù)處理的任務(wù)是將任意分辨率圖片按照網(wǎng)絡(luò)輸入尺寸調(diào)整大小, 再進(jìn)行歸一化。此過(guò)程可以在 PS端完成。前向推理在 PL 端由硬件加速器完成。后處理過(guò)程涉及非極大值抑制等操作, 實(shí)際測(cè)試時(shí)發(fā)現(xiàn)耗時(shí)較多, 本文將部分移到 PL 端處理。最后由PS端完成檢測(cè)框繪制。

圖2 YOLOv3實(shí)現(xiàn)目標(biāo)檢測(cè)的步驟Fig.2 Steps to implement object detection using YOLOv3

系統(tǒng)軟硬件協(xié)同設(shè)計(jì)分為以下 5個(gè)步驟。

1) 首先, 輕量級(jí)模型對(duì)實(shí)時(shí)目標(biāo)檢測(cè)有重要意義。網(wǎng)絡(luò)剪枝和數(shù)據(jù)量化是降低網(wǎng)絡(luò)復(fù)雜度并減少精度損失的有效方法。

2) 得到訓(xùn)練參數(shù)后, 將其提取為 ANSI-C 可讀的二進(jìn)制格式。

3) 用 ANSI-C 編寫代碼, 并驗(yàn)證設(shè)計(jì)。

4) 使用高層次綜合(high-level synthesis, HLS)工具, 生成 RTL 代碼, 并導(dǎo)出加速器 IP。這種方式比直接編寫 RTL 代碼開發(fā)效率高。

5) 最后, 將 Xilinx PYNQ 框架作為系統(tǒng)軟件環(huán)境, 方便PL和PS間通信[12]。

1.2 模型剪枝與數(shù)據(jù)量化

近年來(lái), 剪枝成為降低網(wǎng)絡(luò)復(fù)雜度的有效方法[13]。針對(duì)特定檢測(cè)目的, 選用輕量級(jí)網(wǎng)絡(luò), 經(jīng)過(guò)通道和層兩個(gè)維度剪枝后, 可以得到合適的剪枝模型。為了壓縮模型, 并盡量減少操作數(shù), 本文使用網(wǎng)絡(luò)剪枝。

本文利用訓(xùn)練中量化的方式來(lái)提高推理精度。在訓(xùn)練過(guò)程中, 先對(duì)權(quán)重和特征圖的浮點(diǎn)數(shù)據(jù)進(jìn)行量化, 然后在反量化后開始訓(xùn)練。這樣, 在訓(xùn)練過(guò)程中就考慮了量化帶來(lái)的精度損失, 訓(xùn)練后得到的縮放因子可以直接用于 FPGA 上的推理, 確保軟硬件的推理結(jié)果完全一致。

常見的量化方案有非對(duì)稱量化、對(duì)稱量化和隨機(jī)量化[14]。對(duì)稱量化是非對(duì)稱量化的簡(jiǎn)化版本, 零點(diǎn)約束至0, 適合硬件部署。這種方案使用正負(fù)對(duì)稱的定點(diǎn)區(qū)間(-2k–1, 2k–1–1)來(lái)表示在區(qū)間(xmin,xmax)內(nèi)的浮點(diǎn)數(shù)??s放因子 scale(Δ)指定量化步長(zhǎng)。設(shè)浮點(diǎn)數(shù)為x, 量化后為xQ, 量化過(guò)程如下:

對(duì)稱量化的縮放因子Δ由式(3)計(jì)算得到:

反量化結(jié)果可由縮放因子和量化值相乘得到:

以往的量化方法通常使用難以在終端部署的非線性量化函數(shù)[15–16]。本文提出一種量化方案, 統(tǒng)一縮放因子為 2 的冪(trainable power-of-2 scale factors quantization, TPSQ)來(lái)解決這個(gè)問(wèn)題。這種量化方式在硬件上可以簡(jiǎn)化為移位操作, 從而方便地實(shí)現(xiàn)量化映射, 減少資源消耗, 加快運(yùn)算速度。

為了獲得大小為 2 的冪的縮放因子, 定義函數(shù)pow2(x)如下:

對(duì)稱量化不改變浮點(diǎn)數(shù)的數(shù)值分布[14], 區(qū)間的映射受極值影響, 量化值在有限區(qū)間內(nèi)分布不均,導(dǎo)致量化精度損失。區(qū)間截?cái)嗍墙鉀Q這個(gè)問(wèn)題的常用方法。通過(guò)最小化目標(biāo)損失函數(shù), 可以找到最佳截?cái)鄥^(qū)間。可訓(xùn)練的區(qū)間截?cái)嗔炕瘮?shù)為

其中,γ是可訓(xùn)練的截?cái)鄥^(qū)間。

通過(guò)將可訓(xùn)練的截?cái)鄥^(qū)間與 2 的冪縮放因子相結(jié)合, 本文提出的 TPSQ 同時(shí)具備二者的優(yōu)勢(shì), 不但可以加速硬件上的量化映射過(guò)程, 還可以充分利用數(shù)據(jù)分布特征來(lái)減少精度損失。式(8)展示這種量化方式的前向推理過(guò)程:

反向傳播過(guò)程如式(9):

φ是在反向傳播中用于擬合 pow2 的函數(shù)。

1.3 硬件加速器的設(shè)計(jì)與實(shí)現(xiàn)

CNN 加速器的工作過(guò)程分為數(shù)據(jù)加載、數(shù)據(jù)處理和結(jié)果輸出 3個(gè)步驟。在數(shù)據(jù)加載階段, 計(jì)算所需的所有數(shù)據(jù)都從片外的動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(dynamic random access memory, DRAM)傳輸?shù)狡暇彌_區(qū), 包括該層的量化后權(quán)重(weight)、偏置(bias)和特征圖(feature maps)。CPU 在調(diào)用 PL 端的加速器之前, 將這一層的控制信息寫入 PL 端的控制寄存器, 加速器根據(jù)這些參數(shù)處理數(shù)據(jù)。每一層的輸出結(jié)果必須在下一層數(shù)據(jù)加載前寫回DRAM。

由于片上資源有限, 必須進(jìn)行循環(huán)分塊, 將特征圖分割成多個(gè)分離的區(qū)域, 并盡可能多地復(fù)用片上數(shù)據(jù), 減少訪存外部存儲(chǔ)器的次數(shù)。數(shù)據(jù)復(fù)用分為輸入復(fù)用、輸出復(fù)用和權(quán)重復(fù)用 3種類型[17]。本文選擇輸出復(fù)用方式。

如圖3 所示, 輸出復(fù)用包括 3個(gè)步驟。首先,在輸入特征圖的同一區(qū)域, 不同通道的數(shù)據(jù)依次加載到片上緩存。然后, 輸出緩存的部分和將被一直復(fù)用, 直到對(duì)應(yīng)分塊的卷積計(jì)算全部完成。最后,將該分塊存儲(chǔ)到 DRAM 中。采用輸出復(fù)用的方式,從片上緩存到寄存器的通路上, 輸入特征圖需要傳輸次, 輸出特征圖需要傳輸 0 次, 權(quán)重需傳輸次; 從 DRAM 到片上緩存的通路上,輸入特征圖需要傳輸次, 輸出特征圖需要傳輸 1 次, 權(quán)重需要傳輸次 。R和C分 別 表示輸出特征圖的高和寬,Tr和Tc分別表示輸出分塊的高和寬,Tm表示輸出分塊的通道數(shù)。

圖3 輸出復(fù)用示意圖Fig.3 Explanation of output reuse

本文在不同維度間使用循環(huán)展開來(lái)提高 FPGA的資源利用率。選取輸入特征圖和輸出特征圖通道數(shù)這兩個(gè)維度進(jìn)行展開, 展開度分別用Tm和Tn表示, 偽代碼如圖4 所示。

圖4 循環(huán)展開偽代碼Fig.4 Pseudo code of loop unrolling

雙緩存設(shè)計(jì)用于實(shí)現(xiàn)乒乓操作, 目的是將加載片外數(shù)據(jù)的傳輸延遲、計(jì)算單元的處理延遲和將數(shù)據(jù)寫回 DRAM 的傳輸延遲盡可能地重疊。共有 4組緩存, 兩組用于輸入特征圖, 另兩組用于輸出特征圖。圖5 展示輸入側(cè)計(jì)算和傳輸?shù)臅r(shí)序。加速器在第一拍處理第 0 組輸入緩存的數(shù)據(jù), 同時(shí)把下一拍要處理的數(shù)據(jù)加載到第 1 組輸入緩存。在下一拍,加速器進(jìn)行相反的操作。此過(guò)程就是輸入特征圖和權(quán)重的乒乓緩存策略。在次(N表示輸入特征圖的總通道數(shù),Tn表示一個(gè)輸入分塊的通道數(shù))計(jì)算和數(shù)據(jù)加載之后, 最終的輸出結(jié)果寫入 DRAM。這樣就得到一個(gè)分塊的輸出特征圖。輸出特征圖的乒乓操作與此類似。

圖5 雙緩沖設(shè)計(jì)時(shí)序圖Fig.5 Timing graph of double buffering

2 實(shí)驗(yàn)結(jié)果分析

2.1 軟硬件實(shí)驗(yàn)環(huán)境

為驗(yàn)證本研究提出的 TPSQ 量化方法, 采用VGG16, VGG19, ResNet18, ResNet50 和 MobileNetv2模型在 ImageNet 圖像數(shù)據(jù)集上進(jìn)行對(duì)比實(shí)驗(yàn)。對(duì)于所有量化實(shí)驗(yàn), 學(xué)習(xí)率最初設(shè)置為 0.001, 每 10個(gè) epoch 衰減一次, 衰減系數(shù)設(shè)置為 0.1。將輸入圖像分辨率調(diào)整為 224×224, 并隨機(jī)水平翻轉(zhuǎn)。

硬件平臺(tái)選用 Xilinx ZCU102 開發(fā)板(4 核 ARM Cortex-A53+FPGA), 其中 FPGA 的 BRAM_18Kb,DSP48E, FF 和 LUT 資源數(shù)分別為 1824, 2520,548160 和 274080。加速器使用 Vivado HLS 設(shè)計(jì)工具, 在 Vivado v2018.3 中完成綜合與布局布線。采用 PF9800 高精度功耗測(cè)量?jī)x測(cè)量板級(jí)功耗。

2.2 模型量化實(shí)驗(yàn)結(jié)果與對(duì)比

采用 TPSQ 對(duì)主流模型進(jìn)行量化, 與之前的量化工作 TQT[18], PACT[19]和 SAT[20]進(jìn)行比較。表1列出幾種量化方法在驗(yàn)證集上的準(zhǔn)確率。在相同的資源約束下, 與 TQT 相比, 本文方法有一定的優(yōu)勢(shì)。

表1 與其他量化研究在ImageNet數(shù)據(jù)集上的對(duì)比Table 1 Comparison with previous works on ImageNet

2.3 硬件部署實(shí)驗(yàn)結(jié)果

本研究采用 YOLOv3 目標(biāo)檢測(cè)算法, 將主干網(wǎng)絡(luò)替換成輕量級(jí)的 MobileNet, 方便硬件部署[21]。以 coco2014 作為測(cè)試集的實(shí)驗(yàn)結(jié)果表明, 替換網(wǎng)絡(luò)后模型參數(shù)量由 59.13 M 減至23.09 M, mAP 僅從0.580 下降為 0.547。在 Oxford Hand 數(shù)據(jù)集上進(jìn)行剪枝量化實(shí)驗(yàn)。該數(shù)據(jù)集劃分為訓(xùn)練集和驗(yàn)證集,分別包含 9163 和 1856個(gè)標(biāo)注實(shí)例。壓縮模型的過(guò)程中使用層剪枝及通道剪枝[22], 并使用 TPSQ 量化。模型壓縮后部署至ZCU102 開發(fā)平臺(tái)上測(cè)試加速效果。模型壓縮前后的變化情況如表2 和 3 所示。

表2 模型剪枝前后對(duì)比Table 2 Model comparison before and after pruning

我們將上述壓縮模型部署至ZCU102 平臺(tái)上,實(shí)驗(yàn)結(jié)果如表4 所示。可以看出, 與之前的工作相比, 本文的設(shè)計(jì)在性能和資源消耗方面有一定的優(yōu)勢(shì)。陳辰等[23]設(shè)計(jì)了一個(gè)基于 CPU+FPGA 異構(gòu)平臺(tái)的YOLOv2 加速器, 本文設(shè)計(jì)的加速器性能是該設(shè)計(jì)的 13.3 倍。Yu等[24]提出了一個(gè)參數(shù)化的 FPGA 定制架構(gòu), 其優(yōu)點(diǎn)是可以在資源有限的平臺(tái)上加速 YOLOv3-Tiny, 并且具有可擴(kuò)展性。雖然這種設(shè)計(jì)可以大幅降低資源消耗和功耗, 但計(jì)算性能僅為 19.64 GOP/s。 Ahmad 等[10]為 YOLOv3-tiny 設(shè)計(jì)一個(gè)加速器, 在 200 MHz 工作頻率下達(dá)到 460.8 GOP/s 的計(jì)算性能。但是, 由于該設(shè)計(jì)方案是在卷積核寬高的尺度上進(jìn)行并行展開, 所以資源消耗較大, 并且不合適加速有多種卷積核尺寸的網(wǎng)絡(luò)。本文設(shè)計(jì)的加速器在 200 MHz 工作頻率下, 峰值計(jì)算性能達(dá)到 425.8 GOP/s, 推測(cè)上述壓縮模型的速度達(dá)到30.3 fps。FPGA 資源消耗和系統(tǒng)功耗如表5 所示。可已看出, 本文的設(shè)計(jì)消耗了較少的 DSP, LUT和 BRAM硬件資源, 系統(tǒng)功耗低。

表3 模型量化前后對(duì)比Table 3 Model comparison before and after quantization

表4 與相關(guān)文獻(xiàn)在實(shí)驗(yàn)條件與結(jié)果上的對(duì)比Table 4 Comparison of experimental conditions and results in relevant literature

表5 FPGA資源消耗與系統(tǒng)功耗Table 5 FPGA resource and system power consumption

3 結(jié)論

本文以 YOLOv3 為例, 利用軟硬件協(xié)同設(shè)計(jì)方案, 在 ARM+FPGA 異構(gòu)平臺(tái)上設(shè)計(jì)目標(biāo)檢測(cè)加速模塊。為加快硬件推理速度同時(shí)減少精度損失, 本文使用輕量級(jí)的 MobileNet 網(wǎng)絡(luò)。本文還提出適合硬件部署的 TPSQ 量化方法, 簡(jiǎn)化硬件加速器的量化映射過(guò)程。在 Oxford Hand 數(shù)據(jù)集上進(jìn)行剪枝量化實(shí)驗(yàn), 模型參數(shù)量減少 82.4%, 8 比特量化模型相對(duì)于原模型 mAP 僅下降 1.6%。本文還設(shè)計(jì)并實(shí)現(xiàn)一種在卷積輸入和輸出特征圖數(shù)二維展開的CNN 加速器, 利用異構(gòu)平臺(tái)上的 ARM 核對(duì)加速器進(jìn)行調(diào)度, 最終完成目標(biāo)檢測(cè)任務(wù)。實(shí)驗(yàn)結(jié)果表明,在 200 MHz 工作頻率下, 加速器的峰值計(jì)算性能達(dá)到 425.8 GOP/s, 推測(cè)壓縮模型速度達(dá)到 30.3 fps, 模塊功耗為 3.56 W。與之前的工作相比, 本文方案從軟件層面減少模型參數(shù)量, 降低精度損失, 同時(shí)方便硬件部署; 從硬件架構(gòu)層面提高了加速器性能,并減少了 FPGA 資源消耗。通過(guò)軟硬件協(xié)同設(shè)計(jì)方案得到的加速模塊具有可配置性, 適用于不同的網(wǎng)絡(luò)結(jié)構(gòu)。

猜你喜歡
剪枝加速器卷積
莫比斯加速器眾創(chuàng)辦公空間
知識(shí)快餐店 科學(xué)加速器
人到晚年宜“剪枝”
基于3D-Winograd的快速卷積算法設(shè)計(jì)及FPGA實(shí)現(xiàn)
全民小康路上的“加速器”
基于YOLOv4-Tiny模型剪枝算法
基于激活-熵的分層迭代剪枝策略的CNN模型壓縮
卷積神經(jīng)網(wǎng)絡(luò)的分析與設(shè)計(jì)
從濾波器理解卷積
基于傅里葉域卷積表示的目標(biāo)跟蹤算法