0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

深度學(xué)習(xí)中的YOLOv2-Tiny目標(biāo)檢測算法詳細(xì)設(shè)計

電子設(shè)計 ? 來源:和靈魂一起去旅行 ? 作者:陳辰,嚴(yán)偉,夏珺,柴 ? 2020-11-30 14:01 ? 次閱讀

近年來,以卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,DNN)為代表的深度學(xué)習(xí)算法在許多計算機(jī)視覺任務(wù)上取得了巨大突破,如圖像分類、目標(biāo)檢測、畫質(zhì)增強(qiáng)等[1-2]。然而,隨著識別率的提高,深度學(xué)習(xí)算法的計算復(fù)雜度和內(nèi)存需求也急劇增加,當(dāng)前的通用處理器無法滿足其計算需求。主流的解決方法是采用圖形處理器(Graphics Processing Unit,GPU)、專用集成電路(Application Specific Integrated Circuit,ASIC芯片或現(xiàn)場可編程門陣列(Field-Programmable Gate Array,FPGA)來提升計算性能。GPU采用單指令流多數(shù)據(jù)流架構(gòu),想要充分發(fā)揮計算性能,需要大批量數(shù)據(jù),并且由于高并行度導(dǎo)致的高功耗,很難應(yīng)用于對功耗有嚴(yán)格限制的場合[3]。ASIC對于具體應(yīng)用可以獲得最佳性能和能效,但是研發(fā)周期長,需要對市場有長久的預(yù)見性。FPGA作為一種高性能、低功耗的可編程芯片,可以使用硬件描述語言來設(shè)計數(shù)字電路,以形成對應(yīng)算法的加速電路結(jié)構(gòu)。與GPU相比,F(xiàn)PGA低功耗、低延時,適用于小批量流式應(yīng)用[4]。與ASIC相比,F(xiàn)PGA可以通過配置重新改變硬件結(jié)構(gòu),對具體應(yīng)用定制硬件,適用于深度學(xué)習(xí)這種日新月異、不斷改變的場景。

本文首先介紹深度學(xué)習(xí)中的YOLOv2-Tiny目標(biāo)檢測算法[5],然后設(shè)計對應(yīng)的,并且就加速器中各模塊的處理時延進(jìn)行簡單建模,給出卷積模塊的詳細(xì)設(shè)計,最后,在Xilinx公司的Zedboard開發(fā)板上進(jìn)行評估。

1 YOLOv2-Tiny模型簡介

YOLOv2-Tiny目標(biāo)檢測算法由以下3步組成:

(1)對任意分辨率的RGB圖像,將各像素除以255轉(zhuǎn)化到[0,1]區(qū)間,按原圖長寬比縮放至416×416,不足處填充0.5。

(2)將步驟(1)得到的416×416×3大小的數(shù)組輸入YOLOv2-Tiny網(wǎng)絡(luò)檢測,檢測后輸出13×13×425大小的數(shù)組。對于13×13×425數(shù)組的理解:將416×416的圖像劃分為13×13的網(wǎng)格。針對每個網(wǎng)格,預(yù)測5個邊框,每個邊框包含85維特征(共5×85=425維)。85維特征由3部分組成:對應(yīng)邊框中包含的80類物體的概率(80維),邊框中心的相對偏移以及相對長寬比的預(yù)測(4維),邊框是否包含物體的可信度(1維)。

(3)處理步驟(2)中得到的13×13×425大小的數(shù)組,得到邊框的中心和長寬。根據(jù)各邊框覆蓋度、可信度和物體的預(yù)測概率等,對13×13×5個邊框進(jìn)行處理,得到最有可能包含某物體的邊框。根據(jù)原圖的長寬比,將得到的邊框調(diào)整到原圖尺度,即得到物體的位置與類別信息

YOLOv2-Tiny由16層組成,涉及3種層:卷積層(9層)、最大池化層(6層)以及最后的檢測層(最后1層)。其中,卷積層起到特征提取的作用,池化層用于抽樣和縮小特征圖規(guī)模。將步驟(1)稱為圖像的預(yù)處理,步驟(3)稱為圖像的后處理(后處理包含檢測層的處理)。

1.1 卷積層

對輸入特征圖以對應(yīng)的卷積核進(jìn)行卷積來實現(xiàn)特征提取,偽代碼如下:

其中(Noy,Nox)、Nof、Nif、(Nky,Nkx)、S分別代表輸出特征圖、輸出特征圖數(shù)、輸入特征圖數(shù)、卷積核大小和步長。pixelL(m,r,c)代表輸出特征圖m中r行c列的像素。

1.2 池化層

對輸入特征圖降采樣,縮小特征圖的規(guī)模,一般跟在卷積層后。YOLOv2-Tiny采用最大池化層,最大池化層偽代碼如下所示:

其中Max函數(shù)表示返回兩者中較大的值,MIN表示某最小值常量,其他參數(shù)含義與卷積層類似。由于池化層與卷積層類似,只是將卷積層的乘加運算替換為比較運算;同時,考慮到卷積層往往在網(wǎng)絡(luò)中占據(jù)90%以上的計算量,因此下文主要討論卷積模塊的設(shè)計。

2 基于FPGA的YOLOv2-Tiny加速器設(shè)計

2.1 加速器架構(gòu)介紹

如圖1所示,加速器采用三層存儲架構(gòu):片外存儲、片上緩存和處理單元內(nèi)的局部寄存器。加速器從片外存儲中讀取卷積核權(quán)重參數(shù)與輸入特征圖像素到FPGA的片上緩存,通過多次復(fù)用片上緩存中的數(shù)據(jù)來減少訪存次數(shù)和數(shù)據(jù)量。同時,計算得到的中間結(jié)果都保留在片上輸出緩存或者局部寄存器中,直至計算出最終的結(jié)果才寫回片外存儲。同時,也可以看出,加速器的時延主要由三部分組成:訪存時延、片上傳輸時延和計算時延。對應(yīng)于該加速器架構(gòu),實際可以分為4個模塊:輸入讀取模塊、權(quán)重讀取模塊、計算模塊與輸出寫回模塊。

對應(yīng)的加速器數(shù)據(jù)流偽代碼如下:

2.2 卷積模塊

對卷積循環(huán)中輸出特征圖數(shù)和輸入特征圖數(shù)兩維展開,形成Tof×Tif個并行乘法單元和Tof個深度的加法樹,流水地處理乘加計算。以Tof=2,Tif=3為例,如圖2所示。

充滿流水線后,每個時鐘從Tif個輸入緩存中讀入Tif個像素,從Tof×Tif個權(quán)重緩存中讀入相同位置的參數(shù),Tof×Tif個并行乘法單元復(fù)用Tif個輸入像素進(jìn)行乘法計算。Tof個加法樹將乘積兩兩相加,得到的結(jié)果和中間結(jié)果累加后,寫回對應(yīng)輸出緩存。卷積模塊對應(yīng)的處理時延為:

其中Const表示流水線初始化等其他操作所需時鐘,F(xiàn)req表示加速器的工作時鐘頻率。

2.3 各模塊的時延建模

本節(jié)介紹除卷積計算模塊外,另外三個模塊(輸入讀取模塊、權(quán)重讀取模塊、輸出寫回模塊)的處理時延。在此約定,MM(Data Length, Burst Lengthmax)表示以最大突發(fā)長度Burst Lengthmax訪存讀取或?qū)懭隓ata Length長度的連續(xù)數(shù)據(jù)所需的訪存時延。

2.3.1 輸入讀取模塊

輸入讀取模塊的時延LatencyLoad IFM由兩部分組成:

(1)通過DMA從片外讀取Tif張輸入特征圖像Tiy×Tix大小的像素塊到片上的訪存時延:

(2)將輸入特征圖像素塊傳輸?shù)狡暇彺娴膫鬏敃r延:

一般對兩個過程乒乓,輸入讀取時模塊的處理時延為:

2.3.2 權(quán)重讀取模塊

權(quán)重讀取模塊的時延LatencyLoad W由兩部分組成:

(1)通過DMA從片外讀取Tof個卷積核中對應(yīng)Tif張輸入特征圖的Nky×Nkx個權(quán)重到片上的訪存時延:

(2)將權(quán)重參數(shù)傳輸?shù)狡暇彺娴膫鬏敃r延:

2.3.3 輸出寫回模塊

輸出寫回模塊的時延LatencyStore由兩部分組成:

(1)將輸出特征圖像素塊傳輸?shù)紻MA的傳輸時延:

(2)通過DMA將Tof張輸出特征圖Toy×Tox大小的像素塊寫回片外的訪存時延:

通過乒乓緩沖設(shè)計,將輸入讀取模塊的時延LatencyLoad、卷積模塊的計算時延LatencyCompute和輸出寫回模塊的時延LatencyStore相互掩蓋,以減少總時延。

3 實驗評估

3.1 實驗環(huán)境

基于Xilinx公司的Zedboard開發(fā)板(Dual-core ARM-A9+FPGA),其中FPGA的BRAM_18Kb、DSP48E、FF和LUT資源數(shù)分別為280、220、106 400和53 200。雙核 ARM-A9,時鐘頻率667 MHz,內(nèi)存512 MB。采用Logitech C210攝像頭,最大分辨率為640×480,最高可達(dá)到30 f/s。當(dāng)前目標(biāo)檢測系統(tǒng)的FPGA資源耗費如表1所示。

對比的其他CPU平臺:服務(wù)器CPU Intel E5-2620 v4(8 cores)工作頻率為2.1 GHz,內(nèi)存為256 GB。

3.2 總體架構(gòu)

如圖3所示,從USB攝像頭處得到采集圖像,存儲在內(nèi)存中,由ARM進(jìn)行預(yù)處理后交由FPGA端的YOLOv2-Tiny加速器進(jìn)行目標(biāo)檢測,檢測后的相關(guān)數(shù)據(jù)仍存放在內(nèi)存中。經(jīng)ARM后處理后,將帶有檢測類別與位置的圖像寫回內(nèi)存中某地址,并交由FPGA端的HDMI控制器顯示在顯示屏上。

對應(yīng)的顯示屏上的檢測結(jié)果如圖4所示。COCO數(shù)據(jù)集中圖片進(jìn)行驗證的檢測結(jié)果如圖5所示。

3.3 性能評估

當(dāng)前的設(shè)計在性能上超過了之前的工作,如表2所示。文獻(xiàn)[6]中的設(shè)計雖然通過縮小模型以及減小數(shù)據(jù)精度等方式將簡化后的整個YOLOv2-Tiny網(wǎng)絡(luò)按層全部映射到FPGA上,但是各層間由于沒有使用乒乓緩沖,導(dǎo)致訪存與數(shù)據(jù)傳輸時延無法與計算時延重疊。文獻(xiàn)[7]中的設(shè)計將卷積運算轉(zhuǎn)化為通用矩陣乘法運算,并通過矩陣分塊的方式并行計算多個矩陣分塊,但是將卷積轉(zhuǎn)化為通用矩陣乘法需要在每次計算前對卷積核參數(shù)復(fù)制與重排序,增加了額外的時延與復(fù)雜度。

矩陣分塊的方式,并行計算多個矩陣分塊,但是將卷積轉(zhuǎn)化為通用矩陣乘法需要在每次計算前對卷積核參數(shù)復(fù)制與重排序,增加了額外的時延與復(fù)雜度。

如表3所示,與CPU相比,CPU+FPGA的異構(gòu)系統(tǒng)是雙核ARM-A9能效的67.5倍,Xeon的94.6倍;速度是雙核ARM-A9的84.4倍,Xeon的5.5倍左右。

4 結(jié)論

基于深度學(xué)習(xí)的目標(biāo)檢測算法在準(zhǔn)確度上已超過了傳統(tǒng)方法,然而隨著準(zhǔn)確度的提高,計算復(fù)雜度和內(nèi)存需求也急劇增加,當(dāng)前的通用處理器無法滿足其計算需求。本文設(shè)計并實現(xiàn)了一種基于FPGA的深度學(xué)習(xí)目標(biāo)檢測系統(tǒng),設(shè)計了YOLOv2-Tiny硬件加速器,就加速器中各模塊的處理時延進(jìn)行簡單建模,給出卷積模塊的詳細(xì)設(shè)計,最終實現(xiàn)的設(shè)計性能超過了當(dāng)前的工作。

參考文獻(xiàn)

[1] RUSSAKOVSKY O,DENG J,SU H,et al.Imagenet large scale visual recognition challenge[J].International Journal of Computer Vision,2015,115(3):211-252.

[2] LIN T Y,MAIRE M,BELONGIE S,et al.Microsoft coco:common objects in context[C].European Conference on Computer Vision. Springer,Cham,2014:740-755.

[3] YU J,GUO K,HU Y,et al.Real-time object detection towards high power efficiency[C].2018 Design,Automation & Test in Europe Conference & Exhibition(DATE).IEEE,2018:704-708.

[4] CONG J,F(xiàn)ANG Z,LO M,et al.Understanding performance differences of FPGAs and GPUs[C].2018 IEEE 26th Annual International Symposium on Field-Programmable Custom Computing Machines(FCCM).IEEE,2018.

[5] REDMON J, FARHADI A.YOLO9000:better,faster,stronger[C].Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition,2017:7263-7271.

[6] 張雲(yún)軻,劉丹?;谛⌒蚙ynq SoC硬件加速的改進(jìn)TINYYOLO實時車輛檢測算法實現(xiàn)[J]。計算機(jī)應(yīng)用,2019,39(1):192-198.

[7] WAI Y J,YUSSOF Z B M,SALIM S I B,et al.Fixed point implementation of Tiny-Yolo-v2 using OpenCL on FPGA[J].International Journal of Advanced Computer Science and Applications,2018,9(10)。

作者信息:

陳 辰1,嚴(yán) 偉2,夏 珺1,柴志雷1

(1.江南大學(xué) 物聯(lián)網(wǎng)工程學(xué)院,江蘇 無錫214122;2.北京大學(xué) 軟件與微電子學(xué)院,北京102600)

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
收藏 人收藏

    評論

    相關(guān)推薦

    在樹莓派上部署YOLOv5進(jìn)行動物目標(biāo)檢測的完整流程

    目標(biāo)檢測在計算機(jī)視覺領(lǐng)域中具有重要意義。YOLOv5(You Only Look One-level)是目標(biāo)檢測算法
    的頭像 發(fā)表于 11-11 10:38 ?166次閱讀
    在樹莓派上部署<b class='flag-5'>YOLOv</b>5進(jìn)行動物<b class='flag-5'>目標(biāo)</b><b class='flag-5'>檢測</b>的完整流程

    基于迅為RK3588【RKNPU2項目實戰(zhàn)1】:YOLOV5實時目標(biāo)分類

    [/url] 【RKNPU2 人工智能開發(fā)】 【AI深度學(xué)習(xí)推理加速器】——RKNPU2 從入門到實踐(基于RK3588和RK3568) 【RKNPU
    發(fā)表于 08-15 10:51

    慧視小目標(biāo)識別算法 解決目標(biāo)檢測的老大難問題

    隨著深度學(xué)習(xí)和人工智能技術(shù)的興起與技術(shù)成熟,一大批如FasterR-CNN、RetinaNet、YOLO等可以在工業(yè)界使用的目標(biāo)檢測算法已逐步成熟并進(jìn)入實際應(yīng)用,大多數(shù)場景下的
    的頭像 發(fā)表于 07-17 08:29 ?372次閱讀
    慧視小<b class='flag-5'>目標(biāo)</b>識別<b class='flag-5'>算法</b>   解決<b class='flag-5'>目標(biāo)</b><b class='flag-5'>檢測</b><b class='flag-5'>中</b>的老大難問題

    深度學(xué)習(xí)算法在嵌入式平臺上的部署

    隨著人工智能技術(shù)的飛速發(fā)展,深度學(xué)習(xí)算法在各個領(lǐng)域的應(yīng)用日益廣泛。然而,將深度學(xué)習(xí)算法部署到資源
    的頭像 發(fā)表于 07-15 10:03 ?1110次閱讀

    深度學(xué)習(xí)算法在集成電路測試的應(yīng)用

    隨著半導(dǎo)體技術(shù)的快速發(fā)展,集成電路(IC)的復(fù)雜性和集成度不斷提高,對測試技術(shù)的要求也日益增加。深度學(xué)習(xí)算法作為一種強(qiáng)大的數(shù)據(jù)處理和模式識別工具,在集成電路測試領(lǐng)域展現(xiàn)出了巨大的應(yīng)用潛力。本文將從
    的頭像 發(fā)表于 07-15 09:48 ?736次閱讀

    基于深度學(xué)習(xí)的小目標(biāo)檢測

    )的廣泛應(yīng)用,小目標(biāo)檢測的性能得到了顯著提升。本文將詳細(xì)探討基于深度學(xué)習(xí)的小目標(biāo)
    的頭像 發(fā)表于 07-04 17:25 ?708次閱讀

    YOLOv5的原理、結(jié)構(gòu)、特點和應(yīng)用

    YOLOv5(You Only Look Once version 5)是一種基于深度學(xué)習(xí)的實時目標(biāo)檢測算法,它屬于卷積神經(jīng)網(wǎng)絡(luò)(CNN)的
    的頭像 發(fā)表于 07-03 09:23 ?4590次閱讀

    口罩佩戴檢測算法

    口罩佩戴檢測算法基于YOLOv5在圖像識別檢測領(lǐng)域的優(yōu)異性能,本文研究基于基于YOLOv5的口罩佩自動戴檢測方法。首先從網(wǎng)絡(luò)和真實生活
    的頭像 發(fā)表于 07-01 20:20 ?277次閱讀
    口罩佩戴<b class='flag-5'>檢測算法</b>

    人員跌倒識別檢測算法

    人員跌倒識別檢測算法是基于視頻的檢測方法,通過對目標(biāo)人體監(jiān)測,當(dāng)目標(biāo)人體出現(xiàn)突然倒地行為時,自動監(jiān)測并觸發(fā)報警。人員跌倒識別檢測算法基于計算
    的頭像 發(fā)表于 06-30 11:47 ?412次閱讀
    人員跌倒識別<b class='flag-5'>檢測算法</b>

    安全帽佩戴檢測算法

    安全帽佩戴監(jiān)控是鐵路工程施工人員安全管理的重點和難點,它對檢測算法的準(zhǔn)確 率與檢測速度都有較高的要求。本文提出一種基于神經(jīng)網(wǎng)絡(luò)架構(gòu)搜索的安全帽佩戴檢測算法 NAS-YOLO。該神經(jīng)網(wǎng)
    的頭像 發(fā)表于 06-26 22:22 ?354次閱讀
    安全帽佩戴<b class='flag-5'>檢測算法</b>

    基于Tiny AI技術(shù)的玻璃敲碎聲事件離線檢測方案

    該方案基于RA系列MCU產(chǎn)品(RA4),在R7FA4E10D2CNE硬件上運行Aizip Tiny AI玻璃敲碎聲音事件檢測算法庫,實現(xiàn)了實時檢測玻璃敲碎聲,并個性化定制報警邏輯的功能
    發(fā)表于 06-20 14:25 ?292次閱讀
    基于<b class='flag-5'>Tiny</b> AI技術(shù)的玻璃敲碎聲事件離線<b class='flag-5'>檢測</b>方案

    深度解析深度學(xué)習(xí)下的語義SLAM

    隨著深度學(xué)習(xí)技術(shù)的興起,計算機(jī)視覺的許多傳統(tǒng)領(lǐng)域都取得了突破性進(jìn)展,例如目標(biāo)檢測、識別和分類等領(lǐng)域。近年來,研究人員開始在視覺SLAM算法
    發(fā)表于 04-23 17:18 ?1228次閱讀
    <b class='flag-5'>深度</b>解析<b class='flag-5'>深度</b><b class='flag-5'>學(xué)習(xí)</b>下的語義SLAM

    OpenVINO? C# API部署YOLOv9目標(biāo)檢測和實例分割模型

    YOLOv9模型是YOLO系列實時目標(biāo)檢測算法的最新版本,代表著該系列在準(zhǔn)確性、速度和效率方面的又一次重大飛躍。
    的頭像 發(fā)表于 04-03 17:35 ?703次閱讀
    OpenVINO? C# API部署<b class='flag-5'>YOLOv</b>9<b class='flag-5'>目標(biāo)</b><b class='flag-5'>檢測</b>和實例分割模型

    深度學(xué)習(xí)檢測目標(biāo)常用方法

    深度學(xué)習(xí)的效果在某種意義上是靠大量數(shù)據(jù)喂出來的,小目標(biāo)檢測的性能同樣也可以通過增加訓(xùn)練集中小目標(biāo)樣本的種類和數(shù)量來提升。
    發(fā)表于 03-18 09:57 ?668次閱讀
    <b class='flag-5'>深度</b><b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>檢測</b>小<b class='flag-5'>目標(biāo)</b>常用方法

    深入淺出Yolov3和Yolov4

    Yolov3是目標(biāo)檢測Yolo系列非常非常經(jīng)典的算法,不過很多同學(xué)拿到Yolov3或者Yolov
    的頭像 發(fā)表于 01-11 10:42 ?727次閱讀
    深入淺出<b class='flag-5'>Yolov</b>3和<b class='flag-5'>Yolov</b>4