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

基于ZYNQ的 Yolo v3-SPP實時目標檢測系統

2023-03-10 02:11:30張麗麗劉雨軒屈樂樂
光學精密工程 2023年4期
關鍵詞:檢測模型

張麗麗, 陳 真, 劉雨軒, 屈樂樂

(沈陽航空航天大學 電子信息工程學院,遼寧 沈陽 110000)

1 引言

目標檢測是計算機視覺領域的一個重要研究方向,近年來,基于卷積神經網絡的目標檢測算法取得了巨大突破,在自動駕駛、人臉識別、行人檢測等領域都獲得了廣泛應用,文獻[1]針對Yolo v3提出使用Generalized Intersection over Union(GIOU)計算損失、密集連接等方法,實現了2.11%的性能提升,文獻[2]指出傳統的目標檢測算法對于小尺寸目標的檢測效果較差,針對此問題,文獻[3]通過不同通道特征圖的疊加,引入空間注意力機制,增強了模型對于小目標的檢測能力,文獻[4]使用Mish激活函數替換ReLu激活函數,使用Complete Intersection over Union(CIoU)計算損失,實現1.88%的性能提升,然而隨著檢測性能的提升,目標檢測算法計算冗雜、網絡參數繁多、計算復雜度大幅增加,使得其只能在高性能計算機上運行,在實時性要求更高的應用場景中,傳統的中央處理器的計算架構無法滿足實時計算的需求,需要硬件加速器進行加速計算,降低延時,主流的解決方法之一是采用現場可編程邏輯門陣列(Field Programmable Gate Array, FPGA)提高運算速度,FPGA具有高實時性、低功耗以及并行處理等特點,使其能夠完成多種情形的工作,具有較好的實用性和靈活性,適用于目標檢測算法的各種應用場景。

文獻[5]中,Wei等人實現了Yolo 網絡的加速,并將網絡中的Leaky ReLu激活函數替換為ReLu激活函數以減少資源消耗,在ZYNQ7035中實現了19 FPS的性能;文獻[6]提出了一種輕量級Yolo v2的實現方法,該方法通過使用二值化的特征提取網絡減少了計算量與內存消耗,并使用支持向量機回歸對物體進行分類,在XCZU9EG器件上實現了40.81 FPS的性能,該設計通過降低算法的復雜度成功地提高了速度;文獻[7]對Yolo網絡進行了優化,針對優化后的網絡,使用AXI4總線封裝了應用程序接口,并且使用ReLu激活函數替換Leaky ReLu激活函數,參數模型全部存儲在片上存儲器中以減少外部存儲器的訪問,實現了19.6 FPS的性能;文獻[8]采用流水線架構,所部署的神經網絡中的每一層均映射到專門的硬件模塊,在Virtex XC7VX486 T器件上實現了109 FPS的性能,該方案需要相當大的片上存儲空間,對于一些中低端芯片,部署難度大。相對于Yolo v2而言,Yolo v3在檢測精度方面有了巨大提升,同時也帶來了更多的計算量,于是部分工作中采用Yolo v3-Tiny網絡進行部署,文獻[9]中通過將Yolo v3-Tiny網絡中的特征圖映射為矩陣并且將歸一化層與卷積層合并以降低計算復雜度,在XCZU7EV器件上實現了8.3 FPS的性能;文獻[10]使用Yolo v3-Tiny網絡在XCZU9EG器件上實現了104 FPS的性能,但其未提到圖片大小、可檢測物體種類數以及資源消耗,以上工作需要針對網絡進行特定的優化,靈活性低,對開發者硬件知識儲備要求較高,對于非專業硬件開發人員而言上手難度大,且開發周期較長,難以適應快速迭代神經網絡模型,因此需要一種普適性強,開發周期短,開發流程簡潔的神經網絡模型加速方法。

針對上述需求,為達到嵌入式設備部署神經網絡時所需的低功耗、高檢測準確度、實時性以及方便移植的目的,本文提出了一種目標檢測網絡模型在ZYNQ平臺上的實現方法,該方法采用軟硬件協同設計,使用ZYNQ芯片中的FPGA部分對算法進行硬件加速處理,實現了兩個目標檢測模型,分別是改進后的Yolo v3-Tiny與Yolo v3-SPP。首先優化Yolo v3-Tiny與Yolo v3-SPP模型結構使其適用于ZYNQ端的部署,并對其進行訓練,然后將訓練好的模型進行量化,再對量化后的模型根據構建的硬件信息進行編譯,得到可以在ZYNQ端執行的模型文件,最后編寫程序調用該模型文件,達到硬件加速的目的。

2 目標檢測算法介紹及優化

Yolo v1-v3[11-13]是 一 種 被 廣 泛 使 用 的one stage目標檢測架構,Yolo v3網絡模型在保證檢測精度的同時兼顧了檢測速度,由于該模型參數量較大,在使用ZYNQ芯片中的FPGA部分對算法進行加速時,無法直接將模型的全部參數存儲于FPGA上有限的片上存儲器中,且其參數類型為float32,不適于FPGA等硬件設備進行計算加速,因此需要對其進行量化、編譯等操作以使其適用于FPGA的部署,而Yolo v3模型在量化、編譯之后會有較大的精度損失,為了彌補這個損失,本文采用Yolo v3-SPP網絡模型進行部署,該模型相較于Yolo v3模型,主要區別在于特征提取網絡之后加入了Spatial Pyramid Pooling(SPP)模塊,在該結構中分別使用大小為1×1,5×5,9×9,13×13的池化核進行最大池化處理,再將不同尺度的特征圖在第一維度進行concatenate操作,得到SPP結構的輸出。

SPP模塊通過使用不同大小的池化核進行池化操作,增加了特征提取網絡提取全局信息的能力,可以提高特征圖的表達能力,提高模型的檢測性能,而上述SPP結構無法直接應用于ZYNQ端的部署,因為該結構中包含大小為9×9與13×13的池化核,由Xilinx公司的產品指南[14]可知,FPGA上支持的最大池化核尺寸為8×8,一種解決方案是保持SPP結構不變,將模型的中間結果從FPGA傳回至CPU處理,待CPU計算完成后再將結果傳至FPGA完成之后的計算,這樣的缺點是會造成額外的數據搬移,此時數據在CPU與FPGA之間的傳輸會成為系統整體性能的瓶頸,另一種方法是更改網絡結構,使其適用于FPGA的部署從而避免不必要的數據搬移,提升系統性能。本文選擇更改SPP結構,然后對模型進行訓練,使用訓練完成的模型進行部署,整體網絡結構如圖1所示,SPP結構對運行速度的影響及模型性能測試見本文4.2節。

圖1 Yolo v3-SPP網絡結構Fig.1 Yolo v3-SPP network structure

3 系統設計

3.1 系統結構設計

ZYNQ為Xilinx公司推出的一種異構加速平臺,該平臺由兩部分構成,為Processing System(PS)端與Programmable Logic(PL)端,即FPGA部分。本文所用芯片屬于ZYNQ UltraScale+ MPSoCs系列芯片,型號為XCZU15EGffvb1156-2-i,所用編譯環境為Vivado 2021.2,Petalinux 2021.2,Vitis 2021.2以 及Vitis AI 1.4.0。系統采用軟硬協同實現目標檢測功能,系統框圖如圖2所示,其中PS端掛載了一張SD卡,卡中燒錄有Linux操作系統,系統中包含有opencv、numpy等常用python庫,還包含VART以及自定義動態鏈接庫,攝像頭負責獲取圖像數據,獲取到的圖像數據傳入主機程序中進行處理,處理完成的數據通過AXI總線傳輸至PL端的DPU IP核中進行運算,PL端再將運算后的結果返回至PS端,PS端再對結果進行后處理,得到模型的輸出結果,另外PS端還負責結果的儲存與輸出。

圖2 系統框圖Fig.2 System block diagram

3.2 DPU IP核的設計

Deeplearning Process Unity(DPU)是Xilinx公司開發的一款IP核。該IP核在ZYQN中的PL端實現,可由Vitis AI編譯器生成的指令驅動。在使用該IP核時需要對其進行配置,部分可配置參數如下,Arch,該參數用于配置DPU架構并行度,如B512,B4096,數字512或4 096代表每秒最大計算量(Ops);RAM Usage,該參數用于配置Block RAM(BRAM)的使用模式,可配置為低BRAM使用與高BRAM使用;Number of DPU Cores,該參數用于配置一個DPU IP核中的內核個數,可配置為1~4個;DSP Usage,該參數用于配置DSP的使用模式,可配置為低DSP使用與高DSP使用;URAM Use per DPU,該參數用于配置Ultra RAM(URAM)的使用模式,可配置DPU中每個內核使用的URAM數量,各參數的配置以及對系統性能影響的測試見4.1節。

3.3 ZYNQ端可執行模型文件生成

ZYNQ端的可執行模型文件,即xmodel文件,基于Xilinx公司的Vitis AI工具生成,該工具中包含有Vitis AI量化器與Vitis AI編譯器,其中,Vitis AI量化器負責將浮點型數據量化為定點數據,在量化過程中,需要輸入校準圖像數據;Vitis AI編譯器負責根據DPU的配置參數將經Vitis AI量化器量化后的模型文件編譯為xmodel文件。當DPU不支持模型中的某個運算時,Vitis AI編譯器仍可編譯該模型。在這種情況下,模型被分成幾個部分,每個部分稱為子圖,DPU上無法執行的子圖將被放在CPU上執行,此時,DPU執行完子圖后需要將結果回傳至CPU中進行相應子圖的計算,DPU需要等待CPU計算完成,才可以進行下一子圖的計算,這樣會增加數據傳輸以及等待時間,影響計算效率。

3.4 ZYNQ端執行程序設計

執行程序基于Python語言編寫,采用多線程設計,程序結構如圖3所示,通過ctypes庫實現對c/c++的兼容以及動態鏈接庫的調用,程序執行時首先加載xmodel文件并對xmodel文件進行反序列化,得到所有子圖,然后獲取各子圖執行的位置,取出需要在DPU中執行的子圖;然后通過opencv庫中的函數接口獲取攝像頭輸出的圖片數據,對圖片數據進行預處理,預處理包括數據歸一化、數據縮放以及數據類型轉換,數據縮放倍數由模型編譯時確定。再將預處理后的數據送入DPU或CPU中完成對應子圖的計算,得到網絡輸出結果,結果經處理后可以存儲在SD卡中或傳輸給下一級。

圖3 主程序結構Fig.3 Main program structure

4 性能測試與分析

4.1 DPU性能測試

為探究DPU IP核的內核數、架構并行度以及系統時鐘頻率對系統性能的影響,本文針對7種DPU配置方案進行了測試,測試使用改進后的Yolo v3-SPP模型,每種方案的配置方式如表1所示,其中方案1、方案3架構并行度相同,時鐘頻率相同,內核數不同,用于探究時內核數對系統性能的影響;方案2、方案3架構并行度相同,內核數相同,時鐘頻率不同,用于探究時鐘頻率對系統性能的影響;方案4、方案5架構并行度相同,內核數相同,時鐘頻率不同,均使用相同數量的URAM代替部分BRAM,用于探究使用BRAM情況下時鐘頻率對系統性能的影響;方案6、方案7內核數相同,時鐘頻率相同,架構并行度不同,用于探究架構平行度對系統性能的影響。除上述參數外,每種方案的激活函數開啟Leaky-ReLU,ReLU,ReLU6支持,開啟Softmax支持、Depthwise Conv支持、ElementWise Multiply支持、AveragePool支持,開啟channel augmentation,配置為低RAM使用率,高DSP使用率。

表1 DPU配置方式Tab.1 DPU configuration method

針對以上7種方案使用1 000張圖片對系統進行性能測試,測試結果包括各類型資源占用率(%)、系統功耗(W)以及運行速度(FPS),結果如圖4所示,對比方案1和方案3,在架構并行度為B4096,時鐘頻率為300 MHz的情況下,增加一個DPU內核,FPS提升51.68%,同時會增加約96.68%的功耗,各類別資源占用平均增加17.25%;對比方案2和方案3,在架構并行度為B4096,內核數為2的情況下,時鐘頻率增加50%,FPS可提升31.30%,同時會增加約31.71%的功耗,各類別資源占用平均減少0.33%;對比方案6和方案7,在內核數為4,時鐘頻率為300 MHz的情況下,增加1.25倍的架構并行度,FPS可提升44.84%,同時會增加約29.95%的功耗,各類別資源占用平均增加10.89%;對比方案4和方案5,在架構并行度為B4096,內核數為3且使用URAM的情況下,時鐘頻率增加50%,FPS可提升35.59%,同時會增加約22.33%的功耗,各類別資源占用平均增加5.34%;綜上所述,考慮到板卡功耗,資源占用以及系統性能等因素,本文使用方案5進行部署。

圖4 不同方案資源占用率及性能分析Fig.4 Analysis of resource occupancy of different schemes

4.2 SPP結構性能測試

本文采用更改SPP結構的方式使得Yolo v3-SPP模型適用于ZYNQ端的部署,將原SPP結構的池化核大小由1×1,5×5,9×9,13×13改為1×1,3×3,5×5,7×7,為探究更改后的SPP結構與原SPP結構對模型性能以及部署后模型運行速度的影響,使用不同的SPP結構進行了測試,分別對包含二者的模型采用相同的訓練方案進行訓練,使用Pascal VOC 2007測試集對二者進行性能測試,測試指標為mAP,閾值取0.5;另外在ZYNQ端使用1 000張圖片分別對各模型進行推斷速度的測試,結果如表2所示,其中SPP-o表示使用原SPP結構,SPP-n表示使用更改后的SPP結構,可知,更改后的SPP結構模型性能提升效果與原SPP結構相當;表中還列出了每個DPU內核推理一張圖片所需的平均時間(avg)以及3個DPU內核推理一張圖片所需的平均時間(total avg),該時間由每個DPU內核所需的平均時間計算得到,從表中可以看出,增加了SPP結構以后,ZYNQ端的DPU內核平均推斷速度由76.225 ms分別增加到76.391 ms與76.331 ms,平均推斷耗時分別增加了0.166 ms與0.106 ms,增加的SPP結構對系統推斷速度影響較小,因此,本文采用包含SPP-n結構的模型進行后續測試與部署。

表2 SPP結構對運行速度的影響Tab.2 Influence of SPP structure on running speed

4.3 模型性能測試

為探究各模型之間的性能差異,本文分別在PC端與ZYNQ端共部署了6個神經網絡模型,分別是部署在PC端的Yolo v3-SPP,Yolo v3,Yolo v3-Tiny以及量化后的Yolo v3-SPP模型,部署在ZYNQ端的Yolo v3-SPP與Yolo v3-Tiny模型,針對各類別的AP值對各模型進行了測試,閾值取0.5,使用Pascal VOC 2007數據集進行測試,共20個物體類別,測試結果如圖5所示,圖中展示出了不同模型的各類別AP值以及不同模型的結果在該類別處的差值;其中,Diff 1為部署在ZYNQ端的Yolo v3-SPP模型與部署在PC端的Yolo v3模型所得結果的差值,Diff 2為部署在PC端的Yolo v3-SPP模型與Yolo v3模型所得結果的差值,Diff 3為部署在PC端的Yolo v3-SPP模型量化后與量化前所得結果的差值,整體來看,模型經量化后其性能并未發生明顯下降,符合量化要求。

圖5 各模型性能對比及差值Fig.5 Analysis of model performance after quantification

部署在PC端的Yolo v3-SPP模型的mAP為83.55%,量化后的Yolo v3-SPP模型的mAP為82.62%,部署在PC端的Yolo v3模型的mAP為79.25%,Yolo v3-Tiny模型的mAP為69.75%;部署在ZYNQ端的Yolo v3-SPP模型的mAP為80.35%,部署在ZYNQ端的Yolo v3-Tiny模型的mAP為68.55%,部署在ZYNQ端的Yolov3-SPP模型的mAP相較于PC端有3.2%的下降,但仍高于PC端的Yolo v3模型,整體來看,ZYNQ端的模型檢測性能發生了少許下降,在可接受范圍之內,符合部署要求。

圖6為ZYNQ端運行的Yolo v3-SPP模型輸出結果與PC端運行的Yolo v3-SPP模型輸出對比,其中(a)為ZYNQ端執行模型時輸出的結果,(b)為PC端執行模型時輸出的結果,在簡單場景下,ZYNQ端的檢測結果與PC端結果無明顯區別,如圖片A,復雜場景下,ZYNQ端對圖片中小尺寸目標的檢測能力略差于PC端,如圖片B、圖片C、圖片D。

圖6 運行結果對比Fig.6 Comparison of running results

本文實現的Yolo v3-SPP模型可檢測類別個數為80,模型的最終輸出包含有3個輸出特征層,每個輸出特征層有255個維度,其計算方式為(80+4+1)×3,其中80為各類別對應概率,模型每個輸出特征層中的每個特征點存在3個先驗框,故進行乘3操作,每個先驗框含有4個調整參數,另外還有1個參數表示該先驗框內是否含有物體,圖7展示了使用該模型對同一張圖片進行推斷時,每個輸出特征層上ZYNQ端的輸出結果、PC端的輸出結果以及二者的差值,橫坐標表示維度,縱坐標表示輸出值的大小,其中黃色折線表示ZYNQ端的輸出結果,藍色折線表示PC端的輸出結果,紅色折線表示二者的差值;可以看出,體現二者差值的紅色折線穩定在0值附近,表明ZYNQ端的輸出結果與PC端的輸出結果基本保持一致,滿足實際部署要求(彩圖見期刊電子版)。

圖7 特征層輸出對比Fig.7 Feature layer output comparison

另外,將本文的實驗結果與其他文獻進行了比較,主要比較指標為檢測速度(FPS)、功耗(W)以及mAP(閾值取0.5),測試使用Pascal VOC 2007數據集;結果如表3所示,可知,對于Yolo v3-Tiny模型,本文實現了最高的FPS,為177FPS,分別是文獻[15]、文獻[16]的57.65倍和51倍,mAP僅 次 于GPU和 文 獻[9],為68.55%,實現的Yolov3-SPP模型達到了除GPU外了最高的mAP,為80.35%,較文獻[15]、文獻[9]、文獻[6]分別有21.95%,5.35%和12.75%的提升,檢測速度僅次于GPU和文獻[6],為38.44 FPS。

表3 與其他硬件平臺的性能對比Tab.3 Performance comparison with other hardware platforms

5 結論

本文通過對Yolo v3-SPP網絡結構進行優化,使其目標檢測性能進一步提升的同時適用于ZYNQ端的部署,彌補了ZYNQ端部署模型時帶來的性能損失,使用Vitis AI工具對預訓練網絡模型進行量化、編譯,生成板卡運行所需的模型文件,采用多線程思想編寫程序,充分利用板卡資源,完成了Yolo v3-Tiny和Yolo v3-SPP網絡模型在ZYNQ端的部署,然后對系統進行了性能測試,測試結果表明,本文所實現的系統在保證檢測速度和網絡性能的前提下完成了模型在ZYNQ端的部署,對于Pascal VOC 2007數據集,圖片輸入大小為(416,416),可檢測類別數為80,分別實現了177 FPS和38.44 FPS的性能,mAP分別為68.55%和80.35%,優于以往部署在嵌入式設備的目標檢測系統的設計,本文所提出的設計有望促進邊緣設備實現實時目標檢測。

猜你喜歡
檢測模型
一半模型
“不等式”檢測題
“一元一次不等式”檢測題
“一元一次不等式組”檢測題
“幾何圖形”檢測題
“角”檢測題
重要模型『一線三等角』
重尾非線性自回歸模型自加權M-估計的漸近分布
3D打印中的模型分割與打包
小波變換在PCB缺陷檢測中的應用
主站蜘蛛池模板: 国内精品免费| 国产美女91呻吟求| 国内毛片视频| 中文字幕天无码久久精品视频免费| 欧美日韩一区二区在线播放| 国产高清在线观看91精品| 高清无码一本到东京热| 久久亚洲欧美综合| 精品国产成人国产在线| 免费高清a毛片| 久热中文字幕在线| 成人年鲁鲁在线观看视频| 在线观看亚洲成人| 日韩精品毛片人妻AV不卡| 国产欧美在线观看一区| 久久夜色精品| 国产成人精品综合| 亚洲成人在线网| 黄色网在线| 欧美日韩免费在线视频| 亚洲国产精品无码久久一线| 国产簧片免费在线播放| 国产va在线观看免费| 亚洲swag精品自拍一区| 啪啪免费视频一区二区| 亚洲电影天堂在线国语对白| 国产无码精品在线播放| 亚洲国产综合第一精品小说| 中文字幕一区二区人妻电影| 制服丝袜一区| 毛片网站在线播放| 毛片视频网| 人妻精品久久无码区| 日本不卡视频在线| 中文天堂在线视频| 无码精品国产VA在线观看DVD| 亚洲欧洲日韩国产综合在线二区| 四虎永久在线视频| 色婷婷亚洲综合五月| 国产精品一区二区国产主播| 欧美在线导航| 国产精品私拍在线爆乳| 国产乱子伦一区二区=| 亚洲水蜜桃久久综合网站| 无码在线激情片| 在线亚洲精品福利网址导航| 国产精品福利一区二区久久| 91久久偷偷做嫩草影院精品| 亚洲欧美极品| 天堂网亚洲系列亚洲系列| 就去吻亚洲精品国产欧美| 国产一区二区人大臿蕉香蕉| 国产乱码精品一区二区三区中文 | 国产国产人免费视频成18| 国内老司机精品视频在线播出| 欧美国产在线看| 在线欧美日韩国产| 亚洲国产综合精品中文第一| 亚洲无线一二三四区男男| 久久久91人妻无码精品蜜桃HD| 亚洲中文精品人人永久免费| 国产精品久久久久久久久久久久| 久久久成年黄色视频| 99热亚洲精品6码| 国产精品亚洲αv天堂无码| 亚洲不卡网| 国产成a人片在线播放| 91无码人妻精品一区二区蜜桃| 激情视频综合网| 久久精品无码国产一区二区三区| 不卡网亚洲无码| www.亚洲天堂| 看国产毛片| 免费看黄片一区二区三区| 99资源在线| 午夜精品影院| a欧美在线| 久久国产精品影院| 婷婷色狠狠干| 国产亚洲成AⅤ人片在线观看| 欧美在线天堂| 日本AⅤ精品一区二区三区日|