• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于嵌入式FPGA 的航拍目標(biāo)檢測解決方案

      2022-02-13 09:59吳李煜張紫龍張華君
      現(xiàn)代電子技術(shù) 2022年2期
      關(guān)鍵詞:線程時鐘設(shè)置

      吳李煜,張紫龍,張華君,田 野,常 勝

      (1.武漢大學(xué) 物理科學(xué)與技術(shù)學(xué)院,湖北 武漢 430072;2.湖北航天飛行器研究所,湖北 武漢 430040)

      0 引言

      近年來,隨著深度學(xué)習(xí)技術(shù)的發(fā)展,其在終端應(yīng)用領(lǐng)域的需求越來越廣泛。以低空航拍為應(yīng)用場景切入點(diǎn),目標(biāo)檢測能有效提升飛行器的感知能力。目標(biāo)檢測算法也是計算機(jī)視覺重要分支,研究檢測算法在嵌入式終端領(lǐng)域下的部署具有重要意義。區(qū)別于傳統(tǒng)檢測算法的應(yīng)用場景,低空航拍的視場大、圖像背景復(fù)雜、目標(biāo)小而多,檢測算法需要在現(xiàn)有結(jié)構(gòu)上進(jìn)行針對性的優(yōu)化與訓(xùn)練。將算法部署于遠(yuǎn)程服務(wù)器的傳統(tǒng)方案一般要求高清且穩(wěn)定的遠(yuǎn)程圖像通信,實(shí)時性通常較差,而終端平臺的計算力有限,往往難以定制,研發(fā)周期長。

      終端應(yīng)用領(lǐng)域中,嵌入式FPGA 有著可靠性強(qiáng)、集成度高、功耗低、可并行計算等優(yōu)點(diǎn),因此本文選擇嵌入式FPGA 為開發(fā)平臺,提出了全流程的解決方案。算法基于經(jīng)典的SSD 檢測框架優(yōu)化網(wǎng)絡(luò)結(jié)構(gòu),以此提高精確度、減少參數(shù)和計算量。硬件開發(fā)上,基于Vitis 工具鏈以及高層次綜合技術(shù)有效縮短硬件的研發(fā)周期。應(yīng)用程序上,多線程運(yùn)行且兼容動態(tài)鏈接庫的Python 主機(jī)程序兼具通用性和開發(fā)快捷性。OpenCL 層次的硬件調(diào)用也有效地節(jié)省了驅(qū)動開發(fā)耗時。

      1 目標(biāo)檢測算法優(yōu)化

      本項(xiàng)目的訓(xùn)練集和測試集由無人機(jī)針對目標(biāo)場景定向采集制作,按照VOC2007 目標(biāo)檢測數(shù)據(jù)集標(biāo)注,共19 個場景和9 類檢測目標(biāo)。

      網(wǎng)絡(luò)框架的設(shè)計出發(fā)點(diǎn)是降低終端硬件的計算量和減少參數(shù)。因此選擇計算量和參數(shù)量較小的GhostBM 和FPN。檢測方案的出發(fā)點(diǎn)是提高精度,本文基于經(jīng)典的SSD 框架,針對檢測目標(biāo)尺寸跨度較大的問題,為保證相應(yīng)的有效感受野完全覆蓋目標(biāo)且攜帶語義信息,設(shè)置了4 個不同尺寸的輸出stage,每個stage 都對應(yīng)一個分類概率anchor 和一個檢測坐標(biāo)anchor。采用基于anchor area 的K?means 聚類方法生成了8 個不同面積的anchor 超參。由于有效感受野小于理論感受野,所以網(wǎng)絡(luò)結(jié)構(gòu)整體上按照理論感受野的面積是anchor area 4 倍的標(biāo)準(zhǔn)設(shè)計。輸出特征圖的尺寸分別為56×96,28×48,14×24,7×12,可保證所有目標(biāo)均可以找到與之對應(yīng)的默認(rèn)框。

      檢測網(wǎng)絡(luò)算法結(jié)構(gòu)如表1 所示,其中是GhostBM中通道增大比例,為輸出通道數(shù),為卷積步長,為模塊重復(fù)次數(shù),Sn 為輸出Stage 編號,相同編號的輸出會經(jīng)過元素相加后進(jìn)入Head。

      表1 檢測網(wǎng)絡(luò)算法結(jié)構(gòu)

      2 系統(tǒng)架構(gòu)設(shè)計

      本文硬件開發(fā)平臺為Zynq UltraScale+MPSoC ZCU104 開發(fā)套件,平臺核心為ZU7EV 器件芯片,該芯片集成了4 核ARM Cortex?A53 處理器與FPGA,平臺配套了4 GB DDR4 內(nèi)存。硬件在Vitis 2020.1 平臺下編譯,并與預(yù)定義的操作系統(tǒng)、驅(qū)動程序和根文件系統(tǒng)的ZCU104 Base 2020.1 嵌入式基礎(chǔ)平臺連接,生成定制化的硬件平臺鏡像。

      圖1 為本系統(tǒng)的設(shè)計框架圖,本系統(tǒng)軟硬協(xié)同地實(shí)現(xiàn)圖像檢測功能,檢測算法的計算流程交給計算能力更強(qiáng)的PL(Programmable Logic)部分。卷積網(wǎng)絡(luò)推斷本體由DPU 計算,輸入圖片的預(yù)處理、輸出分類矩陣的Softmax 計算與定位矩陣的解碼操作由定制的HLS 計算核來處理。PS(Processing System)用于部署控制性質(zhì)的任務(wù),負(fù)責(zé)運(yùn)行多線程的Python 主機(jī)程序和用于調(diào)度硬件的動態(tài)函數(shù)庫,并且負(fù)責(zé)圖像的輸入和輸出。

      圖1 系統(tǒng)框架圖

      3 硬件設(shè)計

      3.1 DPU 卷積核定制

      本項(xiàng)目卷積算法網(wǎng)絡(luò)硬件加速核由Xilinx 官方DPU IP 核定制生成,它是專用于卷積神經(jīng)網(wǎng)絡(luò)且高度優(yōu)化的可配置計算引擎。

      結(jié)合ZCU104 開發(fā)平臺的硬件資源和實(shí)際網(wǎng)絡(luò)速度的需求,本文規(guī)劃部署2 個定制DPU 核,設(shè)置其硬件架構(gòu)為B4096,其計算并行度體現(xiàn)在3 個維度上,分別對應(yīng)像素并行度為8,輸入通道并行度為16,輸出通道并行度為16。由于DPU 核的DSP 部分采用了Double Data Rate(DDR)技術(shù),工作在2 倍于控制部分時鐘的時鐘域下,因此對于控制部分時鐘,其峰值每時鐘周期可做4 096 次計算。針對性地設(shè)置為低RAM 高DSP 模型,并開啟深度卷積和ReLU6 的硬件支持。

      本系統(tǒng)DPU 的兩個輸入時鐘分別設(shè)置為300 MHz和600 MHz。

      3.2 HLS 功能核設(shè)計

      3.2.1 預(yù)處理核

      預(yù)處理模塊負(fù)責(zé)將讀取的圖片由硬件進(jìn)行并行化處理,輸出滿足網(wǎng)絡(luò)推斷格式要求的數(shù)組。該模塊主要包含圖片Resize、減均值、BGR 通道轉(zhuǎn)RGB 通道以及圖像量化,量化值為固定值0.5。輸出的數(shù)組尺寸為448×768×3,數(shù)值分布于0 值兩邊,數(shù)據(jù)類型為8 位整型,數(shù)值范圍為-128~127。

      圖2為預(yù)處理的設(shè)計方案。接口部分輸入輸出數(shù)據(jù)位寬均為8,同時所有模塊按照3 通道的2 個像素并行處理,并行處理的數(shù)據(jù)位寬為48。由于預(yù)處理核的計算并非瓶頸,故未額外增大并行度。為了匹配ZYNQ 的高性能數(shù)據(jù)接口的位寬,外部接口設(shè)置為兩條128 位的Axi Master 數(shù)據(jù)總線,通過高性能接口連接DDR。設(shè)置一條Slave_axilite 控制總線連接Arm 核,設(shè)置輸入輸出的尺寸與3 組均值寄存器,時鐘設(shè)置為150 MHz。模塊設(shè)計分為連接模塊和處理模塊,所有模塊流水線式同步運(yùn)行,內(nèi)部模塊間的連接設(shè)置為2 深度的FIFO(隊(duì)列)。連接模塊負(fù)責(zé)數(shù)據(jù)總線與FIFO 的相互轉(zhuǎn)化以及數(shù)據(jù)位寬的轉(zhuǎn)化。預(yù)處理核的Resize 處理模塊使用Xilinx 官方的視頻庫函數(shù)。減均值、移位與通道轉(zhuǎn)化處理模塊以流水線方式執(zhí)行,執(zhí)行間隔為一個時鐘周期。

      圖2 預(yù)處理核模塊與數(shù)據(jù)流

      3.2.2 Softmax 核

      Softmax 在深度學(xué)習(xí)中用于求輸出矩陣的分類概率,在本系統(tǒng)中負(fù)責(zé)計算Class?Head 輸出矩陣的分類概率。其計算公式如下:

      圖3 為Softmax 核的設(shè)計方案。接口部分,輸入為量化后的8 位整型數(shù)據(jù),輸出為32 位浮點(diǎn)數(shù)據(jù),分別有2 條數(shù)據(jù)總線、1 條控制總線,可設(shè)置處理數(shù)組的長度和量化比例。時鐘設(shè)置為150 MHz。模塊并行同步工作,模塊間以FIFO 連接。

      圖3 Softmax 核模塊與數(shù)據(jù)流

      圖4 為Softmax 計算模塊的流程圖,左半部分8 位寬的數(shù)據(jù)不間斷讀入,乘上量化值恢復(fù)成浮點(diǎn)型,指數(shù)計算后存儲在指定的寄存器內(nèi)同時做求和,直到一個求和輪次結(jié)束后保存進(jìn)SUM 寄存器。同時右半部分同步計算上一個求和輪次中各個指數(shù)值與上一次和的商,得到分類概率輸出給FIFO。該模塊通道間以流水線執(zhí)行,間隔等同于通道長度值,平均處理一個數(shù)據(jù)的間隔為一個時鐘周期。

      圖4 Softmax 核計算模塊的流程

      3.2.3 Decode 核

      Decode 在檢測算法中用于將檢測位置矩陣通過anchor 來解碼成檢測框的實(shí)際坐標(biāo),負(fù)責(zé)將Local?Head的輸出矩陣解碼,其計算公式如下:

      網(wǎng)絡(luò)的位置輸出通道為4,分別為,,,,anchor 提供了,,,這4 個參數(shù)矩陣。輸出的,,,這4 個通道數(shù)據(jù)分別代表了檢測框下框線值、左框線值、上框線值、右框線值,該值為所在圖像中的比例坐標(biāo)值,乘上圖像長寬則為絕對坐標(biāo)值。

      圖5 為Decode 核的設(shè)計方案。輸入為DPU 輸出的8 位整型數(shù)據(jù),32 位浮點(diǎn)型anchor 數(shù)據(jù),其中和維度的數(shù)據(jù)由于并行需要合并了位寬,和維度的數(shù)據(jù)長度固定且運(yùn)算復(fù)用,可一次性讀入。輸出為32 位浮點(diǎn)型結(jié)果。所以接口部分設(shè)有4 條數(shù)據(jù)總線、1 條控制總線,可設(shè)置處理數(shù)組長度與量化比例。時鐘設(shè)置為200 MHz。模塊并行同步執(zhí)行,以2 深度FIFO 連接。

      圖5 Decode 核模塊與數(shù)據(jù)流

      圖6 為Decode 計算模塊設(shè)計。圖中以坐標(biāo)的解碼計算為例,模塊最開始會一次性從內(nèi)存接口讀入和維度anchor 數(shù)據(jù);然后按照圖示不斷從FIFO 中讀入數(shù)據(jù),4 個通道并行計算后輸出。該模塊的流水線間隔為一個時鐘周期。

      圖6 Decode 核示意圖

      4 軟件設(shè)計

      4.1 DPU 執(zhí)行庫生成

      DPU 的執(zhí)行庫基于Vitis AI 組件生成。圖7 為生成網(wǎng)絡(luò)算法執(zhí)行程序的操作流程。

      圖7 DPU 執(zhí)行程序生成流程

      網(wǎng)絡(luò)基于tensorflow 訓(xùn)練,訓(xùn)練完成后的權(quán)重和閾值為浮點(diǎn)數(shù),計算也為浮點(diǎn)運(yùn)算,不適合FPGA,需要量化。經(jīng)驗(yàn)表明,8 位量化產(chǎn)生的精度損失較小,對計算力和存儲的要求卻能大大下降,因此采用了8 位量化。流程上,首先需要將網(wǎng)絡(luò)浮點(diǎn)模型固化成靜態(tài)圖,輸入校準(zhǔn)集,使用量化工具將整個網(wǎng)絡(luò)量化,生成部署靜態(tài)圖和評估靜態(tài)圖。

      根據(jù)圖1,可以看出關(guān)于混合式教學(xué)在中小學(xué)領(lǐng)域應(yīng)用的研究文獻(xiàn)最早出現(xiàn)在2007年,并且文獻(xiàn)的數(shù)量一直在持續(xù)增長,原因除了科學(xué)發(fā)展支撐,還有國家政策引領(lǐng)——在2015年,國務(wù)院倡導(dǎo)大眾創(chuàng)業(yè)萬眾創(chuàng)新,建立線上和線下、國內(nèi)與國外、政府和企業(yè)合作等一系列的創(chuàng)新機(jī)制,越來越多的教育模式應(yīng)運(yùn)而生,如創(chuàng)科教育、STEAM教育等[7]。智能機(jī)、平板、電腦普及,人人都可以隨時隨地的使用不同終端進(jìn)行學(xué)習(xí),傳統(tǒng)的教學(xué)模式得以改變,混合式教學(xué)也應(yīng)運(yùn)而生,隨著科技進(jìn)步的飛速發(fā)展,越來越多的研究者將視角轉(zhuǎn)到了中小學(xué),混合式教學(xué)關(guān)于中小學(xué)應(yīng)用的研究文獻(xiàn)的數(shù)量不斷增長。

      隨后生成部署程序。網(wǎng)絡(luò)部署工具可以根據(jù)該硬件描述文件與部署靜態(tài)圖,將量化后的算法網(wǎng)絡(luò)模型映射到高度優(yōu)化的DPU 執(zhí)行序列中,構(gòu)造一個內(nèi)部計算圖,可交叉編譯生成網(wǎng)絡(luò)指令庫文件。主機(jī)程序可以通過DNNDK 的n2cube 庫調(diào)度該指令庫來控制DPU 的運(yùn)行。

      4.2 HLS 調(diào)用庫設(shè)計

      在ARM 核的Linux 操作系統(tǒng)上,基于Xilinx Runtime 環(huán)境,可以通過OpenCL 異構(gòu)調(diào)用的方式縮短驅(qū)動設(shè)計流程,實(shí)現(xiàn)對硬件的調(diào)用。

      該庫包含初始化函數(shù)和執(zhí)行函數(shù)兩部分外部函數(shù)。初始化部分,執(zhí)行基本的OpenCL 初始化函數(shù),為HLS 硬件申請內(nèi)核對象,申請內(nèi)存對齊的全局變量。創(chuàng)建Buffer 對象,完成虛擬地址與物理地址的映射,并將該物理地址設(shè)置為HLS 核的數(shù)據(jù)總線啟動地址。執(zhí)行部分,設(shè)置執(zhí)行時改變的HLS 核寄存器,負(fù)責(zé)主機(jī)數(shù)據(jù)與全局變量的搬移與HLS 核的硬件執(zhí)行。

      通過交叉編譯,該OpenCL 程序可以編譯成可供上級主機(jī)程序調(diào)用的外部函數(shù)庫。

      4.3 主程序設(shè)計

      主程序基于Python 編寫,有利于直接移植算法設(shè)計環(huán)境的函數(shù)。通過ctypes 庫來實(shí)現(xiàn)C/C++兼容,完成庫程序的調(diào)用。主程序基于多線程方案實(shí)現(xiàn),其設(shè)計方案如圖8 所示。

      圖8 主程序設(shè)計

      圖像輸入借助OpenCV 庫,可從存儲卡中讀取圖片或者通過VideoCapture 獲得USB 攝像頭的數(shù)據(jù)。HLS硬核可通過第4.2 節(jié)生成的外部函數(shù)庫調(diào)用執(zhí)行,DPU程序可通過DNNDK 庫與第4.1 節(jié)生成的指令庫調(diào)用執(zhí)行,由于DPU 推斷網(wǎng)絡(luò)并不構(gòu)成速度瓶頸,故只使用了單DPU 做推斷。軟件后處理為排序操作,不涉及計算,負(fù)責(zé)檢測框篩選,將檢測框在原圖描述出來并標(biāo)注類別和概率。圖像借助千兆網(wǎng)口和SSH 工具輸出,在遠(yuǎn)程主機(jī)上直觀顯示。當(dāng)然,也可以為了減少網(wǎng)絡(luò)帶寬,不輸出圖片,改為直接輸出檢測分類結(jié)果與坐標(biāo)位置。

      線程間分別設(shè)置了深度為3 的線程隊(duì)列,允許線程流水線式并行執(zhí)行,線程間內(nèi)存共享,故不引入額外內(nèi)存搬移消耗。

      5 測試與分析

      本項(xiàng)目在ZCU104 開發(fā)板上完成測試。測試集由無人機(jī)對目標(biāo)場景針對性拍攝而成。

      5.1 占用資源情況

      FPGA 的資源消耗如表2 所示??梢钥吹?,本系統(tǒng)充分地利用了平臺硬件資源。

      表2 FPGA 的資源消耗

      5.2 檢測準(zhǔn)確性

      基于完整軟件測試集,分別對浮點(diǎn)模型和量化后的評估模型對于目標(biāo)檢測的均值平均精度(mean Average Precision,mAP)指標(biāo)進(jìn)行測試。表3 為測試結(jié)果,一般可以認(rèn)為量化評估模型圖的運(yùn)行結(jié)果能基本代表硬件結(jié)果。從表中可以看到本項(xiàng)目有比較高的檢測精度。

      表3 檢測精度

      圖9 示意了2 個場景下的目標(biāo)檢測結(jié)果。

      圖9 兩個場景的目標(biāo)檢測結(jié)果圖

      5.3 運(yùn)行速度

      運(yùn)行的耗時由1 000 次圖像輸入計算平均值得到,線程耗時項(xiàng)排除了隊(duì)列等待時長?;赟D 卡讀入的圖像尺寸為1 280×720,基于攝像頭讀入的圖像尺寸為640×480。為了形成對比,專門測試了使用ARM 核運(yùn)行預(yù)處理核后計算的情況,如表4 所示。

      表4 內(nèi)核耗時 ms

      根據(jù)表4 結(jié)果可以發(fā)現(xiàn),多線程運(yùn)行總耗時一般取決于最大耗時線程,由于HLS 核由線程鎖阻塞執(zhí)行,其線程耗時求和可影響總耗時。對比表中SD 卡讀入的2 種情況,由ARM 核做網(wǎng)絡(luò)的前后處理的計算會形成速度瓶頸,使用HLS 硬件加速則可以有效提升運(yùn)行速度。

      以由HLS 核加速的SD 卡讀入測試為例,該方案總耗時約為50 ms,計算可得速度約為20 f/s。

      6 結(jié)語

      本文針對低空航拍的目標(biāo)檢測場景,提出了其終端部署的全流程解決方案。經(jīng)過測試,該方案在測試集上檢測精度為0.55,處理速度約為20 f/s,檢測精度高、運(yùn)行速度快,滿足了終端運(yùn)行的實(shí)時性要求。該方案利用多種高層次技術(shù),實(shí)現(xiàn)快速部署,縮短了定制周期且易于移植,并且可推廣至其他深度學(xué)習(xí)的嵌入式部署設(shè)計。

      猜你喜歡
      線程時鐘設(shè)置
      別樣的“時鐘”
      中隊(duì)崗位該如何設(shè)置
      古代的時鐘
      淺談linux多線程協(xié)作
      有趣的時鐘
      時鐘會開“花”
      本刊欄目設(shè)置說明
      中俄臨床醫(yī)學(xué)專業(yè)課程設(shè)置的比較與思考
      地鐵出入段線轉(zhuǎn)換軌設(shè)置
      基于上下文定界的Fork/Join并行性的并發(fā)程序可達(dá)性分析*
      南安市| 大同市| 渝中区| 木兰县| 崇阳县| 荆门市| 十堰市| 太康县| 烟台市| 宁乡县| 新安县| 乌兰浩特市| 伊通| 汾阳市| 通榆县| 娱乐| 沂南县| 砀山县| 南康市| 辽阳市| 福海县| 云阳县| 政和县| 韩城市| 茶陵县| 邢台市| 凯里市| 庆云县| 神农架林区| 泾川县| 庆云县| 确山县| 渝北区| 鸡西市| 密云县| 沈丘县| 历史| 深圳市| 临西县| 井研县| 康保县|