《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 其他 > 基于 FPGA 的目標(biāo)檢測網(wǎng)絡(luò)加速電路設(shè)計

基于 FPGA 的目標(biāo)檢測網(wǎng)絡(luò)加速電路設(shè)計

2023-01-29
來源:FPGA技術(shù)江湖
關(guān)鍵詞: FPGA 電路設(shè)計

  第一部分 設(shè)計概述 /Design Introduction

  目前主流的目標(biāo)檢測算法都是用CNN來提取數(shù)據(jù)特征,,而CNN的計算復(fù)雜度比傳統(tǒng)算 法高出很多。同時隨著CNN不斷提高的精度,,其網(wǎng)絡(luò)深度與參數(shù)的數(shù)量也在飛快地增長, 其所需要的計算資源和內(nèi)存資源也在不斷增加,。目前通用CPU已經(jīng)無法滿足CNN的計算需 求,,如今主要研究大多通過專用集成電路(ASIC),圖形處理器(GPU)或者現(xiàn)場可編程門 陣列(FPGA)來構(gòu)建硬件加速電路,,來提升計算CNN的性能,。

  其中 ASIC 具備高性能、低功耗等特點,,但 ASIC 的設(shè)計周期長,,制造成本高,而 GPU 的并行度高,,計算速度快,,具有深度流水線結(jié)構(gòu),非常適合加速卷積神經(jīng)網(wǎng)絡(luò),,但與之對 應(yīng)的是 GPU 有著功耗高,,空間占用大等缺點,很多場合對功耗有嚴(yán)格的限制,,而 GPU 難 以應(yīng)用于這類需求,。近些年來 FPGA 性能的不斷提升,同時 FPGA 具有流水線結(jié)構(gòu)和很強 的并行處理能力,,還擁有低功耗,、配置方便靈活的特性,可以根據(jù)應(yīng)用需要來編程定制硬 件,,已成為研究實現(xiàn) CNN 硬件加速的熱門平臺。

  綜上所述,,使用功耗低,、并行度高的 FPGA 平臺加速 CNN 更容易滿足實際應(yīng)用場景中 的低功耗、實時性要求,。而且目標(biāo)檢測算法發(fā)展迅速,,針對 CNN 的硬件加速研究也大有可 為。所以本項目計劃使用 PYNQ-Z2 開發(fā)板設(shè)計一個硬件電路來加速目標(biāo)檢測算法,。

  本項目設(shè)計的目標(biāo)檢測算法硬件加速電路可以應(yīng)用在智能導(dǎo)航,、視頻監(jiān)測、手機拍照,、 門禁識別等諸多方面,,比如無人汽車駕駛技術(shù),高鐵站為方便乘客進站而普遍采用的人臉 識別系統(tǒng),,以及警察抓捕潛逃罪犯而使用的天網(wǎng)系統(tǒng)等都可以應(yīng)用本項目的設(shè)計,,加速目 標(biāo)檢測算法的運算速度以及降低系統(tǒng)的功耗,。

90.JPG

  在本次項目的設(shè)計開發(fā)過程中,我們參考 DAC 2019 低功耗目標(biāo)檢測系統(tǒng)設(shè)計挑戰(zhàn)賽

  GPU,、FPGA 組雙冠軍方案,,學(xué)習(xí)到了基于 SkyNet 和 iSmart2 設(shè)計一個輕量級神經(jīng)網(wǎng)絡(luò)的 技巧,尤其是他們采用的自底向上的硬件電路設(shè)計思路給我們帶來了巨大的啟發(fā),。我們在將訓(xùn)練好的神經(jīng)網(wǎng)絡(luò)部署在硬件平臺的過程中,,加深了對 HLS 的理解,開始初步掌握使用 HLS 進行并行性編程的方法,。我們學(xué)習(xí)了 PYNQ 框架,,在 PYNQ-Z2 上實現(xiàn)神經(jīng)網(wǎng)絡(luò)加速 電路,有了軟硬件協(xié)同開發(fā)的經(jīng)歷,。除此之外,,我們還學(xué)習(xí)了 Vitis AI,雖然在項目中并沒 有使用到 Vitis Ai,,但是對它的學(xué)習(xí)擴寬的我們的視野,。

89.JPG

  第二部分 系統(tǒng)組成及功能說明 /System Construction & Function Description

  本項目針對DAC2019 System Design Contest測試集,計劃采用PYNQ-Z2開發(fā)板加速目標(biāo) 檢測網(wǎng)絡(luò),,綜合考慮數(shù)據(jù)訪問,、存儲、并行計算等問題進行優(yōu)化處理,,設(shè)計出高速高精度 且低功耗的加速方案,,并完成相關(guān)仿真和FPGA平臺的驗證,實現(xiàn)一個可以框選出圖像中行 人或其他物體位置的硬件電路,。

  本項目的系統(tǒng)框圖如圖2-1所示,,首先PS端從SD卡讀取圖片并壓縮,之后將圖片和參 數(shù)權(quán)重一起傳輸?shù)?DRAM中,,PL端再從DRAM中讀取數(shù)據(jù)并歸一化,,經(jīng)過卷積和池化將輸 出特征圖傳回到DRAM中,再進行下一層卷積運算,;直到網(wǎng)絡(luò)最后一層輸出送入到邊界框 輸出模塊中選擇置信度最高的邊界框傳輸?shù)紻RAM中,,供PS端讀取。

88.JPG

  2.1 神經(jīng)網(wǎng)絡(luò)模型的設(shè)計方案

  針對 DAC-SDC 數(shù)據(jù)集并結(jié)合 SkyNet 和 iSmart2 網(wǎng)絡(luò)設(shè)計原理,,挑選出的基本單元Bundle 由 3×3 逐通道卷積(Depthwise Convolution),,1×1 逐點卷積(Pointwise Convolution)和 激活函數(shù) ReLU6 組成。

  其中 3×3 逐通道卷積和 1×1 逐點卷積的參數(shù)量和計算量遠(yuǎn)遠(yuǎn)少于傳統(tǒng)的卷積,。如圖 2-2 和 2-3 所示,,首先每個 3×3 逐通道卷積核與各自對應(yīng)的輸入通道數(shù)據(jù)進行卷積運算,所以 輸出通道數(shù)等于輸入通道數(shù),;然后上一步運算得到的特征圖繼續(xù)進行 1×1 逐點卷積,,每個 1×1 逐點卷積核對輸入的所有通道進行卷積運算,,并將結(jié)果相加得到一個輸出特征圖,所以輸出通道數(shù)等于逐點卷積核的數(shù)量,。

87.JPG

  ReLU6 激活函數(shù)與傳統(tǒng)的 Relu 激活函數(shù)相比,,當(dāng) ReLU6 函數(shù)的輸入值大于等于 6 時 輸出值恒為 6,可以使模型更快地收斂,。同時網(wǎng)絡(luò)采用大小為 2×2,,步長也為 2 的最大池化 層(Max pooling)來降低運算量并防止過擬合,特征圖每經(jīng)過一次最大池化層其寬和高都減小一半,。

  綜上所述本項目構(gòu)建的神經(jīng)網(wǎng)絡(luò)模型如圖 2-4 所示:

86.JPG

  本項目構(gòu)建的網(wǎng)絡(luò)模型主要由四個 Bundle 基本單元和三個 Max pooling 層組成,,其中每個 Bundle 由 3×3 逐通道卷積,ReLU6 激活函數(shù),,1×1 逐點卷積,,ReLU6 激活函數(shù)依次排 列組成。通過每個 Bundle 中的 1×1 逐點卷積實現(xiàn)輸出特征圖通道數(shù)翻倍,,通過 Bundle 其 后緊接著的 Max pooling 層實現(xiàn)輸出特征圖的尺寸減半,。因為數(shù)據(jù)集內(nèi)的樣本圖片分辨率均 為 3×360×640,為了降低計算量就選擇將圖片壓縮到 3×160×320,,這個尺寸既可以盡量保 留圖片的信息以防止目標(biāo)檢測準(zhǔn)確率下降,,又可以在神經(jīng)網(wǎng)絡(luò)運算過程中很方便地通過 Max pooling 進行降采樣。經(jīng)過三層 Max pooling 后特征圖的大小為 20×40,,再經(jīng)過最后一 層 1×1 逐點卷積后輸出為 10×20×40,,是將輸入圖片分為 20×40 個分塊,又因為輸出通道數(shù) 為 10,,即每個分塊將會得到兩個邊界框和對應(yīng)的置信度,,本項目設(shè)計的算法會遍歷所有分 塊的邊界框,選擇置信度最大的邊界框輸出,。

  2.2 FPGA加速電路設(shè)計方案

  本項目設(shè)計的硬件電路主要有兩個模塊模塊:數(shù)據(jù)讀取與傳輸模塊,。首先需要讀取圖片和模型參數(shù)的數(shù)據(jù),并對輸入的圖片數(shù)據(jù)進行歸一化處理,,然后送入到卷積運算模塊中 進行計算,接著將計算結(jié)果送入到邊界框輸出模塊,,最后將得到的邊界框結(jié)果傳輸?shù)紻DR3內(nèi)存中,。

  2.2.1 數(shù)據(jù)讀取與傳輸模塊

  優(yōu)化設(shè)計一個高效的數(shù)據(jù)讀取與傳輸模塊是完成目標(biāo)檢測任務(wù)的前提。首先考慮到FPGA 自身 BRAM 資源有限,,所以在數(shù)據(jù)讀取模塊中會將每一層的特征圖切分成多個數(shù)據(jù) 塊逐次送入到運算模塊中進行運算,。每個數(shù)據(jù)塊的大小為 20×40,例如將大小為 3×160×320 的輸入圖片分成 64 個 3×20×40 的數(shù)據(jù)塊,。

  數(shù)據(jù)讀取時每次讀取 3×3 逐通道卷積核參數(shù)的大小為 16×3×3,,讀取 1×1 逐點卷積核參 數(shù)的大小則為 16×16,,兩者均為 16 通道,是因為卷積運算模塊為提升運算速度采用了 16 通道并行計算的結(jié)構(gòu),。數(shù)據(jù)傳輸過程中將特征圖,,網(wǎng)絡(luò)參數(shù)通過指針連續(xù)地存儲在 DDR3 內(nèi)存中,方便數(shù)據(jù)存取,,提高傳輸效率,。

  PYNQ-Z2 的 PS 端通過 AXI4 總線與 PL 端進行通信,AXI4 總線協(xié)議具有高性能,,高 頻率等優(yōu)勢,。在 Vivado HLS 中編寫硬件代碼時需要將輸入圖片,模型參數(shù)和邊界框等 PS 端與 PL 端傳遞數(shù)據(jù)的接口定義為主或從接口,,之后在 Vivado 中自動連線時軟件會添加 AXI Interconnect 用于管理總線,,并自動為接口分配地址。

  在硬件代碼編寫完成后,,需要進行 C 仿真和 C 綜合等步驟,,最后導(dǎo)出 RTL,可以在導(dǎo) 出的 IP 核驅(qū)動的頭文件中找到接口的地址,,然后在 PS 端開發(fā)時將圖片和網(wǎng)絡(luò)參數(shù)數(shù)據(jù)寫 入對應(yīng)地址即可,,并從相應(yīng)的接口地址讀取輸出數(shù)據(jù)。

  2.2.2 卷積運算模塊

  設(shè)計卷積運算模塊來加速卷積運算是 FPGA 加速電路的關(guān)鍵,,卷積運算模塊由 3×3 逐 通道卷積運算模塊和 1×1 逐點卷積運算模塊組成,。

  首先為了讓設(shè)計的 3×3 逐通道卷積運算模塊能夠在不同的卷積層間復(fù)用,需要保持 3×3 逐通道卷積前后數(shù)據(jù)塊大小不變,,這需要對輸入和輸出數(shù)據(jù)塊進行填充(padding),。輸入數(shù) 據(jù)塊原始大小為 20×40,本項目選擇 padding=1,,則輸入數(shù)據(jù)塊大小變?yōu)?22×42,,經(jīng)過 3×3 逐通道卷積后高和寬分別為 20 和 40,即輸出數(shù)據(jù)塊大小依舊為 20×40,。如果接下來還需要 進行 3×3 逐通道卷積,,則再對輸出進行填充使輸出數(shù)據(jù)塊大小也為 22×42,以保持運算過 程中數(shù)據(jù)塊大小不變,,這樣就能很方便地復(fù)用 3×3 逐通道卷積運算模塊來節(jié)約硬件資源,。

  因為卷積運算過程中特征圖的通道數(shù)逐步變?yōu)?48,96,,192,,384,均為 16 的倍數(shù),, 所以綜合考慮 FPGA 的并行性優(yōu)點和 PYNQ-Z2 自身資源情況,,設(shè)計卷積運算模塊為 16 個 通道并行計算來提升運算速度,。16 通道 3×3 逐通道卷積的輸入數(shù)據(jù)塊為 16×22×42,卷積核 為 16×3×3,,輸出數(shù)據(jù)塊經(jīng)填充后也為 16×22×42,。

  因為 3×3 逐通道卷積由乘法和加法運算構(gòu)成,所以其運算模塊需要乘法器,,加法器和 寄存器,。針對 3×3 逐通道卷積運算模塊,以第一個通道為例,,首先把偏置,??11 放入寄存器 中,,接著在第一個時鐘周期內(nèi),,送入數(shù)據(jù)塊的輸入?,?11和卷積核參數(shù),??11并相乘,,將結(jié)果與寄 存器內(nèi)的,??11相加并送入寄存器中,。第二個時鐘周期內(nèi)送入,??12和參數(shù),?,?12重復(fù)上述操作,經(jīng) 過九個時鐘周期后輸出,?,?11,所以需要 9 個時鐘周期來完成一次 3×3 逐通道卷積,,期間共進行了 9 次相乘并累加操作,。則 16 通道并行計算共需要 16 個乘法器和 16 個加法器,即需要 16 個 DSP 資源,。

  同理可以設(shè)計 16 通道 1×1 逐點卷積運算模塊,,以第一個通道為例, 1×1 逐點卷積運 算時可以不需要計算 padding 部分,,直接從原始輸入數(shù)據(jù)塊開始計算,,輸入數(shù)據(jù)塊第一個 通道的,?,?11與卷積核參數(shù),??11相乘并將結(jié)果保存在寄存器mul1中,,則 16 個通道得到 mul1~mul16共 16 個乘積值,,接著乘積值兩兩相加得到add1~add8共 8 個累加值,再將得到 的結(jié)果不斷兩兩相加直到僅有一個累加值add15,,最后再加上偏置得到輸出O11,,所以完成 一次 16 通道 1×1 逐點卷積共需要 16 次乘法和加法運算。

  本項目設(shè)計的硬件電路針對 1×1 逐點卷積運算模塊提供了最大 16 通道并行的計算方 式,??紤]到 PYNQ-Z2 的 DSP 資源共 220 個,且 3×3 逐通道卷積運算模塊和邊界框輸出模 塊均占用 DSP 資源,,所以最多可以例化 9 個 16 通道 1×1 逐點卷積運算模塊,,需要乘法器 和加法器的數(shù)量均為 144 個,即需要 144 個 DSP 資源,。

  2.3 PS 端編程開發(fā)

  本項目使用的 PYNQ-Z2 的 PS 端安裝了 Linux 操作系統(tǒng),,配置好了 Python 開發(fā)環(huán)境,

  并預(yù)裝了 Numpy 等常用庫和專用于 PYNQ 架構(gòu)的 PYNQ 開發(fā)庫,。本項目通過 Micro SD 卡 啟動 PYNQ-Z2,,借助網(wǎng)線將路由器與 PYNQ-Z2 相連,登陸路由器管理界面可以查看分配 給 PYNQ-Z2 的 IP 地址,,讓電腦也連接路由器,,使兩者的網(wǎng)絡(luò)段相同,就可以通過瀏覽器 登陸這個 IP 地址來訪問 PS 端自帶的 Jupyter Notebook 并進行 Python 編程開發(fā),。

  PS 端首先通過 PYNQ 庫中的 Xlnk 類來為輸入圖片,,卷積核參數(shù),偏置,,池化層輸出 和預(yù)測框等分配連續(xù)內(nèi)存,,接著使用圖像庫 PIL 中的 Image 類從 Micro SD 卡中讀取 3×360×640 大小的輸入圖片,并將圖片壓縮為 3×160×320,,再將壓縮后的圖片轉(zhuǎn)化為 numpy 數(shù)組后傳入 DDR3 內(nèi)存中,。之前訓(xùn)練好的兩種卷積核參數(shù)和偏置數(shù)據(jù)都保存在了二進制文件中,也需要從 SD 卡中分別讀取這些數(shù)據(jù)并按照卷積運算模塊數(shù)據(jù)塊的大小和運算順序 重新排列后送入 DDR3 內(nèi)存中,。

  數(shù)據(jù)傳輸完成后 PS 端通過 PYNQ 庫中的 Overlay 類燒寫比特流文件和 tcl 文件來配置 PYNQ-Z2,,然后當(dāng)輸入圖片和網(wǎng)絡(luò)參數(shù)寫入到對應(yīng)地址時硬件電路就開始工作,全部運算 完成后 PS 端從相應(yīng)的地址讀取邊界框的值并在圖片上畫出邊界框,。

  第三部分 完成情況及性能參數(shù)/Final Design & Performance Parameters

  3.1 實驗設(shè)計

  3.1.1 神經(jīng)網(wǎng)絡(luò)模型訓(xùn)練

  為了提升神經(jīng)網(wǎng)絡(luò)的訓(xùn)練效率,,本次實驗把本地編寫好的 PyTorch 代碼和數(shù)據(jù)集一起 傳輸?shù)皆品?wù)器中重復(fù)進行訓(xùn)練直到滿足精度要求,接著在測試集上測試網(wǎng)絡(luò)的識別精度, 如果能夠滿足要求就將訓(xùn)練好的網(wǎng)絡(luò)參數(shù)保存下來,,并將格式轉(zhuǎn)化為二進制文件,。

  3.1.2 硬件代碼仿真與綜合

  本項目首先隨機選出幾張數(shù)據(jù)集中的圖片通過編程轉(zhuǎn)換成二進制 bin 文件,進行 C 仿 真時 Test bench 先是讀取二進制圖片文件和訓(xùn)練好的網(wǎng)絡(luò)模型參數(shù),,然后送入編寫好的 Test bench 網(wǎng)絡(luò)模型中計算并輸出結(jié)果,,為了對比 Test bench 和硬件代碼的輸出結(jié)果,還需要將 網(wǎng)絡(luò)參數(shù)重排序后和圖片一起送入硬件代碼中計算并輸出結(jié)果,,同時將重新排序后的網(wǎng)絡(luò) 參數(shù)保存成新的二進制文件供給之后在 PS 端調(diào)用,。對比 Test bench 和硬件代碼的輸出來判 斷硬件代碼邏輯功能的正確性。

85.JPG

  實驗 C 仿真結(jié)果的報告如圖 3-1 所示,,第 6 行顯示本次輸入圖片的編號為 0,,第 9 行顯示輸入圖片第 10 行第 21 列這個數(shù)據(jù)塊的第二個邊界框的置信度最大,第 14 行顯示其值 近似為 0.897,,第 10 至 13 行顯示了 Test bench 輸出邊界框歸一化后的坐標(biāo)和寬高,,將這四 個值與數(shù)據(jù)塊的寬高 40 和 20 對應(yīng)相乘后得 21.24,10.34,,3.99,,6.04,與第 20 行顯示的 硬件代碼輸出邊界框的預(yù)測結(jié)果十分相近,,同時硬件代碼輸出邊界框的置信度近似為 0.891,, 與 Test bench 的結(jié)果也十分接近??梢钥吹?Test bench 和硬件代碼兩者輸出的邊界框和置信 度都非常相近,,且經(jīng)過與真實輸入圖片中目標(biāo)的位置對比發(fā)現(xiàn)三者的結(jié)果基本一致,可以認(rèn)為硬件代碼的邏輯功能正確,,能夠完成目標(biāo)檢測任務(wù),。C 仿真通過后接著進行 C 綜合,C 綜合可以根據(jù)實驗一開始選擇的 PYNQ-Z2 的芯片型號,,編寫的硬件代碼和 directives 指令自動為硬件電路分配資源,,并生成 Verilog 代碼。如 圖 3-2 所示,,C 綜合結(jié)果的報告給出了硬件電路運行所用的時間,。

84.JPG

  表 3-1 則給出了整個硬件電路所需要的 BRAM,DSP 等資源情況,,可以根據(jù) C 綜合報告修改各個模塊的硬件代碼或者 directives 指令來調(diào)整資源利用率,,直到滿足要求??梢钥吹奖卷椖吭O(shè)計的硬件代碼已經(jīng)幾乎利用了全部 DSP 和 BRAM 資源,。又因為 C 綜合時往往對所需 LUT 的資源預(yù)測值遠(yuǎn)超實際值,,所以報告顯示 LUT 資源超出總額,更加真實的資源利用情況需要在 Vivado 中生成比特流文件后的報告中查看,。

83.JPG

  硬件代碼 C 綜合通過之后就可以開始進行 C/RTL 協(xié)同仿真,,協(xié)同仿真主要是從時序角 度檢測硬件代碼是否正確,仿真結(jié)果會得到一個波形文件,,可通過觀察波形來判斷硬件代 碼的執(zhí)行時序是否正確。通過觀察仿真波形可以確認(rèn)本項目設(shè)計的硬件代碼時序正確,,仿真可以通過,。

  3.1.3 生成比特流文件

  硬件代碼的仿真與綜合都通過之后就可以將硬件代碼封裝成 IP 導(dǎo)出,打開 Vivado 并選擇 PYNQ-Z2 開發(fā)板新建工程,,調(diào)用封裝好的 IP 和開發(fā)板上的 RAM 芯片 ZYNQ7000,。

  因為 ZYNQ7000 的從 AXI_HP 接口默認(rèn)不使用,所以需要手動配置好這個端口,。PS 端還需 要引出一個時鐘信號提供給 PL 端,,其他參數(shù)在添加 PYNQ-Z2 開發(fā)板時已經(jīng)基本設(shè)置妥當(dāng), 通過自動連線生成的電路如圖 3-3 所示,。

82.JPG

  電路連接完成后即可開始生成比特流 bit 文件,,接著導(dǎo)出 Block Design 來生成 tcl 文件,之后的 PS 端調(diào)試需要調(diào)用這兩個文件來配置 PYNQ-Z2,。圖 3-4 是生成比特流后的報告,, 可以得到比 C 綜合報告更為真實的資源利用情況,此時 LUT 資源利用率從 157%降至 71%,, 所以 PYNQ-Z2 能夠滿足本論文設(shè)計的硬件電路的要求,。

81.JPG

  圖 3-5 顯示硬件電路的總片上功耗為 2.322W,功耗表現(xiàn)滿足預(yù)設(shè)目標(biāo),。圖 3-6 則具體顯示了片上各部分的功耗情況,,其中總功耗中動態(tài)功耗占了絕大部分,而 RAM 芯片功耗 則占據(jù)了 60%左右的動態(tài)功耗,。

80.JPG

  3.1.4 PS 端開發(fā)驗證

  在生成比特流文件和導(dǎo)出 Block Design 之后,,即可開始本次實驗的最后一步,在 PS 端 編程來驗證硬件代碼在 PYNQ-Z2 上能否完成目標(biāo)檢測任務(wù),。首先用網(wǎng)線將 PYNQ-Z2 與路 由器相連并通過 USB 線供電,,這樣 PYNQ-Z2 能夠聯(lián)網(wǎng),可以隨時從網(wǎng)上下載各種開發(fā)包 和環(huán)境,。由于 PYNQ-Z2 可以通過 Samba 服務(wù)來共享文件夾,,所以可以很方便地將比特流 文件,tcl 文件,,輸入圖片和重新排序的網(wǎng)絡(luò)參數(shù)二進制文件直接傳到 SD 卡上的 Jupyter Notebook 文件夾內(nèi),。

  實驗可以準(zhǔn)確地識別出圖 3-8 中的行人和圖 3-9 中的游客,,證明本項目設(shè)計的硬件電路能夠完成目標(biāo)檢測任務(wù)。

79.JPG

  3.2 實現(xiàn)功能與性能指標(biāo)

  本項目 PYNQ-Z2 開發(fā)板加速目標(biāo)檢測網(wǎng)絡(luò),,可以在輸入圖片上標(biāo)出邊界框,。又因為 PYNQ-Z2 的資源有限,本項目設(shè)計的硬件電路運算速度還不到 200MFLOPS,。但是該電路 可以根據(jù)所選開發(fā)板的資源情況來例化適合的 1×1 逐點卷積運算模塊數(shù)量,,以此來提升運 算速度。

  從生成比特流的報告中可知硬件電路的總片上功耗為 2.322W,,遠(yuǎn)小于預(yù)設(shè)的功耗 8W,, 所以本論文優(yōu)化設(shè)計的 FPGA 加速電路在功耗方面滿足預(yù)期目標(biāo)。

  接著需要考察另一個指標(biāo) IoU,,也稱為交并比,,需要通過“預(yù)估的邊界框”與“實際 的邊界框”之間交集和并集的比值來計算。又因其要求嚴(yán)格,,所以一般認(rèn)為目標(biāo)檢測結(jié)果IoU 大于 0.5 即可滿足精度要求,。本次實驗利用 DAC-SDC 訓(xùn)練集來訓(xùn)練網(wǎng)絡(luò)參數(shù),接著用 準(zhǔn)備的測試集圖片對訓(xùn)練好的網(wǎng)絡(luò)進行測試,,得到 IoU 約等于 0.573,,所以本項目構(gòu)建的網(wǎng) 絡(luò)模型的準(zhǔn)確率也滿足預(yù)設(shè)目標(biāo)。

  第四部分 總結(jié)

  項目總結(jié)

  本項目依據(jù) SkyNet 和 iSmart 網(wǎng)絡(luò)的設(shè)計原理,,合理地構(gòu)建了一個主要由 3×3 逐通道卷積和 1×1 逐點卷積組成的輕量級卷積神經(jīng)網(wǎng)絡(luò)用來完成目標(biāo)檢測任務(wù),,并專門為這兩類卷積優(yōu)化設(shè)計了 FPGA 硬件加速電路模塊來提升卷積運算速度,同時通過對卷積運算模塊 的充分復(fù)用較好地節(jié)約了開發(fā)板資源,。

  本項目在 PYNQ-Z2 開發(fā)板上設(shè)計的硬件加速電路可以很好地完成目標(biāo)檢測任務(wù),,輸出 的邊界框能夠準(zhǔn)確地框選出圖片中的行人或者物體。硬件電路總片上功耗只有 2.322W,,而 IoU 可以達到 0.573,,基本滿足了設(shè)計目標(biāo)。



更多信息可以來這里獲取==>>電子技術(shù)應(yīng)用-AET<<

mmexport1621241704608.jpg

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,,并不代表本網(wǎng)站贊同其觀點。轉(zhuǎn)載的所有的文章,、圖片,、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者,。如涉及作品內(nèi)容,、版權(quán)和其它問題,請及時通過電子郵件或電話通知我們,,以便迅速采取適當(dāng)措施,,避免給雙方造成不必要的經(jīng)濟損失,。聯(lián)系電話:010-82306118;郵箱:[email protected],。