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

基于FPGA的目標檢測系統與加速器設計

2023-06-25 07:42:18吳昱昊
現代信息科技 2023年7期
關鍵詞:深度學習

摘? 要:目標檢測作為計算機視覺技術的基礎任務,在智慧醫療、智能交通等生活場景中應用廣泛。深度學習具有高類別檢測精度、高精度定位的優勢,是當前目標檢測的研究重點。由于卷積神經網絡計算復雜度高、內存要求高,使用CPU實現的設計方案已經難以滿足實際應用的需求。現場可編程邏輯門陣列(FPGA)具有可重構、高能效、低延遲的特點。研究圍繞FPAG硬件設計,選取了YOLOv2算法,并針對該算法設計了對應的硬件加速器,實現了基于FPGA的目標檢測。

關鍵詞:YOLO;FPGA;目標檢測;深度學習

中圖分類號:TP391.4? 文獻標識碼:A? ? 文章編號:2096-4706(2023)07-0101-04

Abstract: As a basic task of computer vision technology, object detection is widely used in smart medicine, intelligent transportation and other life scenes. Deep Learning nowadays becomes the research focus of object detection for its advantages of high precision in class detection and positioning. Due to the great computational complexity and memory requirements, the design scheme implemented by using the CPU has been difficult to meet the needs of practical application. FPGA has the characteristics of reconfigurability, high energy efficiency and low latency. The research focuses on the FPGA hardware design, selects the YOLOv2 algorithm, designs the corresponding hardware accelerator in terms of the algorithm, and realizes the object detection based on FPGA.

Keywords: YOLO; FPGA; object detection; Deep Learning

0? 引? 言

目標檢測技術是計算級視覺任務中的關鍵技術,不僅需要對目標物體進行分類,同時需要準確定位目標物體,一般用紅框標注[1]。

機器學習技術在目標檢測中的廣泛應用大大提高了計算精度。深度學習方法相比傳統算法優勢明顯,為目標檢測算法的研究開辟了新的路徑。目前檢測技術主要分為兩種。One-stage的方法對于輸入的網絡能夠直接回歸得出目標的位置和類別,但可能會損失部分精度。Two-stage的方法是首先在圖像上畫出目標框即目標物體的候選區域,再計算得到分類與定位[2]。本研究使用的YOLOv2[3]算法是一種One-stage的方法。

隨著深度學習技術研究的浪潮,復雜、抽象的問題和大量的數據使得深度學習的網絡結構變得更加復雜,帶來了巨大的計算量和極高的內存需求[4,5]。在這種情況下,如何在保持低功耗的同時使算法實際應用中具有高速度,逐漸成為研究和討論的熱點。目前,GPU、ASIC和FPGA是深度學習算法加速設計的主流研究方向[3]。GPU在深度學習算法中的加速優勢已得到廣泛驗證,但功耗非常高。ASIC芯片功耗低,但在實際應用中機器學習任務有很多變化,ASIC相應的研發成本非常高。FPGA的功耗比GPU低幾十倍甚至數百倍。在FPGA上部署深度學習算法可以在毫秒級更新邏輯,其靈活性更適合迭代深度學習算法,以節省開發成本。FPGA是深度學習的理想硬件加速選擇[6,7]。

1? YOLO算法

傳統的目標檢測算法[1]主要包括以下三步:區域選擇、特征提取、分類。區域的確定一般使用滑動窗口的方法,因此這一步驟產生大量冗余窗口,對算法的效率有一定影響。特征將會從所產生的候選區域中被提取,在深度學習算法被廣泛應用之前,這一步驟往往由手工進行設計。常用的深度學習算法R-CNN主要使用了卷積神經網絡來進行特征提取,并且能夠利用圖片的顏色、紋理、形狀等減少候選區域。使用這些能夠被計算機識別的特征,選擇合適的分類器,將得到物體的分類結果。

YOLO[3](you only look once)算法和R-CNN的主要不同點在于這是一種基于回歸的方法,只使用一個卷積神經網絡就可以得到類別和位置,即在獲得候選區域中的Bounding Box時也同時給出了包含對象的類別。目前,YOLO算法共發布了7個版本。YOLOv1是整個系列的核心和基石,后續版本是基于此版本的改進。和YOLOv1相比,YOLOv2使用了全卷積網絡,并且使用了Anchorbox機制。它的卷積層增加了Batch Normalization層,對每層輸入的數據做批歸一化處理。卷積層從線性卷積與激活函數改進為后來常用的線性卷積、BN層和激活函數。這些改進使得該算法的檢測速度、精度、召回率有了明顯的提高。作者相較第一版本,設計了新的backbone網絡,包含19個卷積層,被命名為DarkNet19。YOLOv3和YOLOv2的基本思想是一樣的,其檢測精度雖然得到了提高,但損失了一定的計算速度。YOLOv4、YOLOv5網絡分支更多,在FPGA上實現有一定難度。考慮實際場景應用,YOLOv2在實時目標檢測方面更有優勢,并且已在智慧交通、智能家居等領域取得了良好的應用效果,本研究選擇了YOLOv2算法。

2? 針對YOLOv2的加速器設計

2.1? YOLOv2網絡加速框架設計

根據YOLOv2[3]網絡特點,設計了如圖1所示的加速器框架。該目標檢測系統包含從圖像輸入到結果輸出的完整流程,由PC和FPGA共同組成,其中FPGA主要負責對神經網絡計算部分的加速。

如圖所示,圖片的輸入、預處理及輸出部分對于計算的要求較低,這三部分均在PC端實現。Get_region_box 主要用于保存候選框Bounding Box的概率信息和坐標信息,YOLOv2s使用了NMS非極大值抑制算法對這些Bounding Box進行篩選后現實。結合整體計算量考慮,這兩部也在PC端實現。

YOLO網絡結構中卷積層和池化層交替設置,其中卷積計算中主要包含3×3標準卷積和1×1point-wise卷積,占網絡總體計算量的90%以上。因此卷積層的計算是FPGA實現加速的重點環節。YOLOv2在池化層使用的是最大值池化方式,包括上采樣、下采樣、concat操作在內的這些計算是一些輕量級的計算,因此池化層考慮在FPGA上僅做簡單實現。加速器的設計核心是卷積計算加速。

2.2? 加速器硬件結構

參考文獻[8],FPGA的硬件結構設計如圖2所示。這種結構的設計主要是應對卷積神經網絡計算吞吐和內存帶寬不匹配的問題。在數據傳輸部分,針對YOLOv2模型和FPGA的有限資源,權重及參數可以存儲在片外存儲器上[9,10]。對于輸入和輸出分別設置了雙緩沖區(Ping Pong FIFO),使用“乒一乓”的數據傳輸機制提高數據的傳輸效率。和一個緩沖區不同,一個緩沖區通常是是讀取當前部分后才可以繼續傳輸下一部分,以避免讀取的錯誤。“乒一乓”傳輸對于輸入輸出的分區能夠實現一邊傳輸一邊讀取計算,因此也可以用計算時間覆蓋數據傳輸時間,減少整體的程序執行時間。在計算部分使用了多個計算引擎(computeengines)并行執行,不同的引擎可以用于計算不同的卷積。單個引擎的內部是一個并行乘法單元和一個加法樹。加法樹的最下層為乘法單元,其余為多層加法器,分別用于并行計算卷積操作中的乘法運算求和運算。由此加速了網絡程序的計算速度,一定程度上緩解了內存帶寬和計算吞吐不匹配的問題。

2.3? 卷積計算

YOLOv2以卷積神經網絡為基礎,在卷積階段涉及了大量的乘法和加法的計算,該部分計算復雜度高,占了總計算量的90%以上。針對卷積計算,因為片上的計算資源(DSP等)和存儲資源(BRAM等)的有限性,主要考慮采用循環分塊、循環展開技術實現并行計算,在循環的設計中,重點考慮了數據的復用,以提高加速器的性能。

針對1×1卷積,實際上是一個矩陣乘法,使用通用矩陣乘(GEMM)算法優化加速,按照分塊矩陣乘法進行設計。一個正常的矩陣乘法的時間復雜度是O(n3),最內重循環每次需要訪問內存4次。而使用GEMM算法,雖然不能夠減少計算量,但是能夠大大減少訪存次數,從而達到加速的效果。

直接使用暴力矩陣乘法及一次優化的偽代碼如下。矩陣C為矩陣A、矩陣B的乘積,M、N、K分別是A、B矩陣的維度及其對應的三層循環執行次數。直接使用暴力乘法,內存訪問操作總數為4 MNK,一次優化后內存訪問操作總數為2 MNK+2 MN。從偽代碼中,可以看出,主要原因是將C[m][n]放到了循環外面,計算了全部累和之后再對C賦值,從而減少了對C的訪存。

暴力乘法:

for (int m = 0; m < M; m++) {

for (int n = 0; n < N; n++) {

for (int k = 0; k < K; k++) {

C[m][n]+= A[m][k] * B[k][n];

}}}

一次優化:

for (int m = 0; m < M; m++) {

for (int n = 0; n < N; n++) {

float temp = C[m][n];

for (int k = 0; k < K; k++) {

temp += A[m][k] * B[k][n];

}

C[m][n] = temp;

}}

繼續將輸出的C矩陣在N維度拆分,如拆成1×4的小塊,即使用A矩陣的一行和B矩陣的4列相乘,二次優化偽代碼如下。因為在循環最內側計算使用的矩陣A的元素是一致的,所以可以將A[m][k]讀取到寄存器中,實現4次數據復用。同理可以繼續拆解輸出的M維度,繼續減少輸入數據的訪存。

二次優化:

for (int m = 0; m < M; m++) {

for (int n = 0; n < N; n += 4) {

float temp_m0n0 = C[m][n + 0];

float temp_m0n1 = C[m][n + 1];

float temp_m0n2 = C[m][n + 2];

float temp_m0n3 = C[m][n + 3];

for (int k = 0; k < K; k++) {

float temp = A[m][k];

temp_m0n0 += temp * B[k][n + 0];

temp_m0n1 += temp * B[k][n + 1];

temp_m0n2 += temp * B[k][n + 2];

temp_m0n3 += temp * B[k][n + 3];

}

C[m][n + 0] = temp_m0n0;

C[m][n + 1] = temp_m0n1;

C[m][n + 2] = temp_m0n2;

C[m][n + 3] = temp_m0n3;

}}

針對3×3標準卷積,主要考慮了輸入輸出通道的并行。輸入通道并行計算特征圖和權重,輸出通道并行計算輸出的的結果或者部分和假設并行度為tn,tm,3×3標準卷積層及展開后的偽代碼如下:

卷積層偽代碼:

for(r=0;r<R;r++) {

for(c=0;c<C;c++) {

for(to=0;to<M;to++) {

for(ti=0;ti<N;ti++) {

for(i=0;i<K;i++) {

for(j=0;i<K;j++){

outpu_fm[to][r][c]+=

weights[to][ti][i][j]*

input_fm[ti][S*r+i][S*c+j];

} } } } } }

循環展開后偽代碼:

for(r=0;r<R;r++=tr) {

for(c=0;c<C;c++=tc) {

for(to=0;to<M;to++=tm) {

for(ti=0;ti<N;ti++=tn) {

for(tile_r=r;tile_r<min(r+tr,R);tile_r++) {

for(tile_c=c;tile_c<min(c+tc,C);tile_c++){

for(tile_to=to;tile_to<min(to+tm,M);tile_to++){

for(tile_ti=ti;tile_ti<min(ti+tn,N);tile_ti++){

for(i=0;i<K;i++) {

for(j=0;i<K;j++){

outpu_fm[to][r][c]+=

weights[to][ti][i][j]*

input_fm[ti][S*r+i][S*cl+j];

} } } } } } } } } }

2.4? 池化計算

YOLOv2的池化層使用的池化方法是最大池化(Max-Pooling),主要目的是通過僅保留主要原特征來減少神經網絡的訓練參數。因此在精度損失可接受的范圍內能夠減少網絡的訓練時間。設置步長2,大小2×2的窗口滑動,選取窗口中的最大值。最大池化層的計算與卷積層計算的循環結構是類似的,但是卷積層中的乘法及加法運算在池化層中是比較運算,因此池化層計算量相較于卷積層大大減少。在加速器設計中,對池化層僅做簡單設計。該部分逐行從上層的特征圖中讀取數據,等到緩存區填滿數據后,做并行化池化操作。

3? 實驗及分析

3.1? 模型訓練

研究選擇YOLOv2網絡對加速器進行性能測試。在測試前,首先基于YOLOv2網絡訓練得到了的口罩檢測模型,主要功能為判別人臉是否佩戴口罩。該模型使用了YOLOv2預訓練的權重文件,結合補充的口罩數據集(2 000張),在GPU上進行二次訓練得到。補充數據集使用了labeling標注的VOC格式數據集用于訓練,標注范圍為整個頭部及少量肩膀上部分。該模型對于人臉的檢測準確率為95%,對于佩戴口罩的人臉檢測準確率為81%。

3.2? 實施過程

加速器測試平臺使用xilinx的PYNQ-Z2開發版,以ZYNQ FPGA為核心。該系列集成了FPGA和ARM,頂層封裝使用Python,支持Python進行SoC編程。因此本研究無需設計可編程邏輯電路,采用Jupyter Notebook直接編輯工程代碼。CPU、GPU實驗平臺參數如表1所示。主要實現方法如下:首先使用xilinx vivado HLS(High Level Synthesis)將c代碼轉換為Verilog代碼,生成IP核;其次在Vivado中導入IP核,生成bit流文件;使用Python語言操作輸入輸出、bit流文件的燒寫等。

該目標檢測系統的實現主要分為,圖片預處理,網絡檢測(特征提?。┮约皥D片預測(結果輸出)。其中,圖片預處理及圖片預測部分在PC端實現,即由CPU完成。針對網絡檢測的加速部分,實驗分別在FPGA及PC(CPU)上進了比較測試。

圖片預處理主要包括三個步驟:統一圖片大小、歸一化RGB、壓縮數據精度。由Python編寫。對于輸入的大小不一的圖片,統一大小為416 px×416 px。歸一化RGB值的主要目的是用兩個字節表示一個像素值,消除像素受光照或陰影的影響。壓縮數據精度主要將32位浮點數轉換為16位定點數表達,損失了部分可以接受的精度,減少fpga片上存儲(BRAM)壓力。FPGA加速測試的網絡檢測部分由C語言編寫,圖片輸入大小設置為416×416,由于YOLOV2是對整張圖片進行處理,因此對圖片進行分割,網格大小設置為13×13,因此輸出cell數為13×13。由于FPGA片上存儲資源有限,因此實驗需要對輸入數據進行分塊,每次加載一塊數據到片上緩存。依次讀取tn×tm×batch像素對應的權重文件到片上緩存,特征計算,完成一張輸出特征圖的計算再進行輸出,直至所有特征圖全部輸出。YOLO網絡的計算結果即目標檢測結果在Jupyter Notebook輸出。

測試結果表面,在FPGA上,單張圖片的前向推理時間為421.3 ms,相比PC(CPU0端1.44秒有明顯的加速效果,可以滿足目標檢測的實時需求。

4? 結? 論

典型的深度學習目標檢測算法計算量巨大,部署到資源有限的嵌入式系統中存在一定難度。YOLOv2算法在各個應用領域都有著良好的應用前景。研究首先介紹了YOLOv2算法,并針對該算法,設計了基于FPGA的加速器,并將模型部署到FPGA,得出了實驗推理時間,證明了FPGA加速的有效性。

參考文獻:

[1] FANG L,HANGJIANG H E,ZHOU G. Research overview of object detection methods [J].Computer Engineering and Applications,2018,54(13):11-18.

[2] 趙興博,陶青川.適用于FPGA的輕量實時視頻人臉檢測 [J].現代計算機,2022,28(8):1-8.

[3] REDMON J,DIVVALA S,GIRSHICK R,et al. You Only Look Once:Unified,Real-Time Object Detection [C]//IEEE Conference on Computer Vision and Pattern Recognition. Las Vegas:IEEE,2016:779-778.

[4] 周飛燕,金林鵬,董軍.卷積神經網絡研究綜述 [J].計算機學報,2017,40(6):1229-1251.

[5] 張珂,馮曉晗,郭玉榮,等.圖像分類的深度卷積神經網絡模型綜述 [J].中國圖象圖形學報,2021,26(10):2305-2325.

[6] 吳艷霞,梁楷,劉穎,等.深度學習FPGA加速器的進展與趨勢 [J].計算機學報,2019,42(11):2461-2480.

[7] 劉騰達,朱君文,張一聞.FPGA加速深度學習綜述 [J].計算機科學與探索,2021,15(11):2093-2104.

[8] ZHANG C,LI P,SUN G,et al. Optimizing FPGA-based Accelerator Design for Deep Convolutional Neural Networks [C]//the 2015 ACM/SIGDA International Symposium. Monterey:ACM,2015.

[9] 裴頌文,汪顯榮.YOLO檢測網絡的FPGA加速計算模型的研究 [J].小型微型計算機系統,2022,43(8):1681-1686.

[10] 胡晶晶.基于FPGA的Faster-RCNN改進算法實現目標檢測 [J].現代計算機,2021,27(30):82-87.

作者簡介:吳昱昊(1996—),女,漢族,浙江上虞人,助教,碩士研究生,研究方向:深度學習、社會網絡分析。

猜你喜歡
深度學習
從合坐走向合學:淺議新學習模式的構建
面向大數據遠程開放實驗平臺構建研究
基于自動智能分類器的圖書館亂架圖書檢測
搭建深度學習的三級階梯
有體驗的學習才是有意義的學習
電子商務中基于深度學習的虛假交易識別研究
現代情報(2016年10期)2016-12-15 11:50:53
利用網絡技術促進學生深度學習的幾大策略
考試周刊(2016年94期)2016-12-12 12:15:04
MOOC與翻轉課堂融合的深度學習場域建構
大數據技術在反恐怖主義中的應用展望
深度學習算法應用于巖石圖像處理的可行性研究
軟件導刊(2016年9期)2016-11-07 22:20:49
主站蜘蛛池模板: 18禁黄无遮挡免费动漫网站| 中文字幕无码制服中字| 亚洲色成人www在线观看| 91在线无码精品秘九色APP| 精品少妇人妻一区二区| 精品无码视频在线观看| 欧美一区二区福利视频| 国产成人做受免费视频| 精品无码一区二区三区电影| 亚洲成A人V欧美综合天堂| 亚州AV秘 一区二区三区| 奇米精品一区二区三区在线观看| 一级黄色片网| 亚洲综合在线网| 五月婷婷综合网| 国产白浆一区二区三区视频在线| 国产精品3p视频| 中国丰满人妻无码束缚啪啪| 在线观看欧美精品二区| 国产成年无码AⅤ片在线| 久无码久无码av无码| 久久精品波多野结衣| 黄色三级网站免费| 日韩无码视频播放| 亚洲伊人电影| 99在线国产| 国产欧美亚洲精品第3页在线| 欧美亚洲日韩中文| 国产chinese男男gay视频网| 国产永久免费视频m3u8| 亚洲精品人成网线在线| 久久久久久午夜精品| 亚洲欧美自拍中文| 欧美精品成人| 亚洲首页在线观看| 国产精品久久久久鬼色| 亚洲第一区在线| 国产精品亚洲αv天堂无码| 亚洲欧洲国产成人综合不卡| 日本在线欧美在线| 国产精品亚洲片在线va| 亚洲三级影院| 久久久久久尹人网香蕉| 国产激情无码一区二区免费| 成人福利免费在线观看| 国产一区二区免费播放| 天天综合网在线| 无码中文字幕精品推荐| 欧美日韩亚洲国产| 国产青榴视频| 成·人免费午夜无码视频在线观看 | 国产成在线观看免费视频| 最新国产精品鲁鲁免费视频| 九九九精品成人免费视频7| 蜜臀av性久久久久蜜臀aⅴ麻豆| 日韩高清一区 | 亚洲αv毛片| 亚洲国产高清精品线久久| 狠狠干综合| 香蕉伊思人视频| 国产精品视频久| 久久无码av三级| 国产在线高清一级毛片| 欧美一级高清片久久99| 国产乱子伦视频在线播放| 色妞www精品视频一级下载| 91娇喘视频| 亚洲日本精品一区二区| 成年人国产视频| 亚洲男人的天堂久久香蕉网| 久久99蜜桃精品久久久久小说| 99视频免费观看| 国产成人免费视频精品一区二区| 一级毛片网| 国内视频精品| 国产成人高清在线精品| 欧美不卡视频一区发布| 久久精品免费看一| 亚洲国产精品日韩av专区| aa级毛片毛片免费观看久| 国产黄在线观看| 国产精品免费p区|