精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何使用Vitis-AI加速YOLOX模型實現視頻中的目標檢測

電子發燒友論壇 ? 來源: 電子發燒友論壇 ? 2023-10-16 15:43 ? 次閱讀

本文將介紹如何使用Vitis-AI加速YOLOX模型實現視頻中的目標檢測,并對相關源碼進行解讀。由于演示的示例程序源碼是Vitis-AI開源項目提供的,本文演示之前會介紹所需要的準備工作。演示之后會對關鍵源碼進行解析。

一、Vitis AI Library簡介

上一篇帖子中,我們了解了Vitis統一軟件平臺和Vitis AI,并體驗了Vitis AI Runtime的Resnet50圖像分類示例程序。本篇文章我們將會介紹Vitis AI Library,并體驗基于Vitis AI Library的YOLOX視頻目標檢測示例程序。

Vitis AI User Guide中的一張圖可以很好的理解Vitis AI Library和Vitis AI Runtime的關系:

d721f4ce-6700-11ee-939d-92fbcf53809c.png

簡單來說,Vitis AI Library是在Vitis AI Runtime之上構建出來的。

二、YOLOX視頻目標檢測示例體驗

參考此前的帖子:【KV260視覺入門套件試用體驗】部署DPU鏡像并運行Vitis AI圖像分類示例程序

首先需要部署DPU鏡像,DPU鏡像系統啟動過程中會加載DPU IP到FPGA側,并且系統本身已經集成了Vitis AI所需的各種庫文件。

2.1 準備測試所需視頻文件

賽靈思官方文檔里面提供了測試視頻資源

在開發板上下載、解壓的命令為:

# 跳轉到HOME目錄
cd ~


# 下載 tar.gz 文件
TGZ=[vitis_ai_library_r3.0.0_video.tar.gz](https://china.xilinx.com/bin/public/openDownload?filename=vitis_ai_library_r3.0.0_video.tar.gz)
wget -O $TGZ "[https://china.xilinx.com/bin/public/openDownload?filename=](https://china.xilinx.com/bin/public/openDownload?filename=vitis_ai_library_r3.0.0_video.tar.gz)$TGZ"


# 解壓 tar.gz 文件
DIR=[vitis_ai_library_r3.0.0_video](https://china.xilinx.com/bin/public/openDownload?filename=vitis_ai_library_r3.0.0_video.tar.gz)
mkdir $DIR
tar -C $DIR -xvf $TGZ

(左右移動查看全部內容)

2.2 準備KV260套件和DPU鏡像SD

和上一篇帖子一樣,使用Vitis-AI之前需要先準備好KV260套件和寫入DPU鏡像的SD卡,具體可以參考上一篇帖子中的第二章“部署DPU鏡像到KV260”:【KV260視覺入門套件試用體驗】部署DPU鏡像并運行Vitis AI圖像分類示例程序

2.3 編譯YOLOX視頻目標檢測示例程序

KV260使用DPU鏡像的SD卡啟動后,跳轉到Vitis-AI/目錄下,可以看到如下文件及目錄:

d735daca-6700-11ee-939d-92fbcf53809c.png

其中,藍色的為目錄,綠色的為可執行文件,白色的為沒有執行權限的文件。

執行build.sh腳本,可以重新編譯文件(可以嘗試將可執行文件刪除掉再重新執行build.sh腳本)。

該腳本文件內的代碼為:

d7503bd6-6700-11ee-939d-92fbcf53809c.png

重新編譯后,可以看到時間戳全部更新了:

d7612df6-6700-11ee-939d-92fbcf53809c.png

2.4 運行YOLOX視頻目標檢測示例程序

接下來,運行YOLOX視頻目標檢測程序——test_video_yolox,命令為:

VIDEO_PATH=~/vitis_ai_library_r3.0.0_video/apps/seg_and_pose_detect/seg_960_540.avi
MODEL_NAME=yolox_nano_pt
./test_video_yolovx $MODEL_NAME $VIDEO_PATH

(左右移動查看全部內容)

可以看到,畫面中的目標被框起來了。

三、YOLOX視頻目標檢測原理解析

YOLOX視頻目標檢測示例程序源碼非常簡短(test_video_yolovx.cpp文件):

d789637a-6700-11ee-939d-92fbcf53809c.png

這段代碼中:

model是模型名稱;

vitis::create(model) 用于創建模型;

3.1 main_for_video_demo 源碼分析

main_for_video_demo 核心代碼如下:

d78d6ec0-6700-11ee-939d-92fbcf53809c.png

其中,關鍵代碼行如下:

parse_opt 用于解析命令行參數,包括線程數(例如-t 4指定4個線程)和視頻文件名

decode_queue 是解碼隊列,用于傳遞已經解碼的圖像;

decode_thread 是解碼任務線程,讀取視頻文件,并解碼每一幀畫面,放入解碼隊列;

dpu_thread 是DPU任務線程,從解碼隊列取出圖像,如果-t 參數指定的大于1,會創建多個DPU線程(不指定-t參數,默認為1個DPU線程);

gui_thread 是圖形用戶界面(GUI)線程,調用cv::imshow顯示每一幀結果畫面;

gui_queue 是結果圖像隊列,GUI線程會從這個隊列取出圖像再顯示出來;

sorting_thread 是排序線程,用于確保傳遞給gui_queue的圖像和視頻中出現的順序一致,從而保證視頻顯示的畫面正常。

這段代碼搭建了一個多線程的視頻處理流水線,流水線結構如下圖所示:

d7b8974e-6700-11ee-939d-92fbcf53809c.png

3.2 DecodeThread 源碼分析

DecodeThread的構造函數:

d7bca62c-6700-11ee-939d-92fbcf53809c.png

構造函數中調用open_stream,open_stream創建了OpenCV的VideoCapture對象指針,用于后續視頻文件讀取操作。

d7c52ab8-6700-11ee-939d-92fbcf53809c.png

DecodeThread::run函數:

d7e11d9a-6700-11ee-939d-92fbcf53809c.png

DecodeThread::run函數的關鍵代碼為:

cap >> image 實現了從視頻讀取畫面,

queue_->push(…) 實現了給幀畫面編號,并將其放入隊列。

3.3 SortingThread 源碼分析

SortingThread::run函數關鍵代碼如下:

d7ffa0e4-6700-11ee-939d-92fbcf53809c.png

SortingThread::run中的關鍵代碼為:

queue_in_->pop(…) 等待特定frame_id的圖像到來;

queue_out_->push(…) 再將其放入輸出隊列(gui_queue)。

3.4 GuiThread 源碼分析

GuiThread::run函數源碼:

d827ddac-6700-11ee-939d-92fbcf53809c.png

其中關鍵的代碼為:

調用queue_->pop()從隊列取出一幀畫面;

調用cv::imshow顯示圖像畫面。

3.5 DpuThread 源碼解析

DpuThread::run函數源碼:

d850cf82-6700-11ee-939d-92fbcf53809c.png

其中關鍵代碼為:

調用queue_in_->pop(frame)取出畫面;

調用filter_->run(frame.mat)處理畫面;

調用queue_out_->push(frame)傳出畫面;

要解讀filter到底是什么,還需要看DpuThread構造函數的聲明:

d871dae2-6700-11ee-939d-92fbcf53809c.png

以及DpuThread類型實例化的代碼:

d88de4e4-6700-11ee-939d-92fbcf53809c.png

以及main函數:

d89d4308-6700-11ee-939d-92fbcf53809c.png

這里可以看到:

factory_method是一個C++11的lamba表達式,

其中調用了vitis::create(model);

vitis::create的具體實現代碼較多,感興趣的可以自行查閱Vitis-AI源碼,它主要實現了模型加載,以及調用Vitis-AI-Runtime接口執行推理,這里不再解讀。

process_result函數定義:

d8a652e0-6700-11ee-939d-92fbcf53809c.png

可以看到,process_result的作用主要是畫出方框,以及打印日志。

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • AI
    AI
    +關注

    關注

    87

    文章

    28818

    瀏覽量

    266157
  • DPU
    DPU
    +關注

    關注

    0

    文章

    341

    瀏覽量

    24044
  • 模型
    +關注

    關注

    1

    文章

    3029

    瀏覽量

    48343
  • 目標檢測
    +關注

    關注

    0

    文章

    196

    瀏覽量

    15564
  • Vitis
    +關注

    關注

    0

    文章

    145

    瀏覽量

    7310

原文標題:【試用報告】Vitis-AI加速的YOLOX視頻目標檢測示例體驗和原理解析

文章出處:【微信號:gh_9b9470648b3c,微信公眾號:電子發燒友論壇】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    在ultrascale+上利用VCU和DPU實現的智能零售系統

    整個系統是以DPU為核心,在 DPU 上部署對象檢測模型實現實時智能檢測,該系統視頻輸入可以來自 VCU 解碼的
    發表于 02-20 17:35

    基于YOLOX目標檢測算法的改進

    并應用于邊界框回歸損失,提高了 YOLOX 在 KITTI 數據集上的檢測精度,檢測出更多的遮擋目標;采用動態錨框來優化置信度標簽分配,
    發表于 03-06 13:55

    【KV260視覺入門套件試用體驗】部署vitis-ai環境以及測試demo

    /usr/share/vitia_ai_library能找到樣例所需要的全部models 此時目標環境已經搭建完成。但是想要正式使用,還要有交叉編譯環境 開始程序需要如下文檔指導: Viti
    發表于 08-27 23:35

    【KV260視覺入門套件試用體驗】部署DPU鏡像并運行Vitis AI圖像分類示例程序

    Model Composer 是一款基于模型的設計工具,不僅可在 MathWorks MATLAB? 和 Simulink? 環境實現快速設計探索與驗證 ,而且還可加速 AMD 器
    發表于 09-10 23:01

    【KV260視覺入門套件試用體驗】五、VITis AI (人臉檢測和人體檢測)

    都已編譯到預構建的 Vitis AI 開發板鏡像。您可直接運行示例。如有新程序,請在主機側對其進行編譯并將可執行程序復制到目標。 1. 使用 scp 命令將
    發表于 09-26 16:22

    【KV260視覺入門套件試用體驗】六、VITis AI車牌檢測&車牌識別

    。下圖顯示了車牌檢測的結果。 將圖片中的車牌進行了框選,同事標準位置。 4.2、車牌識別 cd ~/Vitis-AI/examples/vai_library/samples/platenum
    發表于 09-26 16:28

    【KV260視覺入門套件試用體驗】七、VITis AI字符和文本檢測(OCR&Textmountain)

    4.1、字符檢測 使用命令運行代碼程序。 cd ~/Vitis-AI/examples/vai_library/samples/ocr ./test_jpeg_ocr ocr_pt
    發表于 09-26 16:31

    【KV260視覺入門套件試用體驗】八、VITis AI自動駕駛多任務執行MultiTask V3

    是一種模型,旨在同時執行自動駕駛場景的不同任務,同時實現優異的性能和效率。這些任務包括對象檢測、分割、車道檢測、可行駛區域分割和深度估算,
    發表于 09-26 16:43

    【KV260視覺入門套件試用體驗】基于Vitis AI的ADAS目標識別

    AI模型商城。 Vitis AI Model Zoo 包含經過最優化的深度學習模型,可在賽靈思平臺上
    發表于 09-27 23:21

    【KV260視覺入門套件試用體驗】Vitis-AI加速YOLOX視頻目標檢測示例體驗和原理解析

    本文將介紹如何使用Vitis-AI加速YOLOX模型實現視頻
    發表于 10-06 23:32

    【KV260視覺入門套件試用體驗】Vitis AI 構建開發環境,并使用inspector檢查模型

    FFT運算(Vivado) 四、硬件加速之—使用PL加速矩陣乘法運算(Vitis HLS) 五、Vitis AI 構建開發環境,并使用ins
    發表于 10-14 15:34

    基于紫光同創FPGA的多路視頻采集與AI輕量化加速的實時目標檢測系統

    基于紫光同創FPGA的多路視頻采集與AI輕量化加速的實時目標檢測系統#2023集創賽#紫光同創#小眼睛科技助力紫光同創高校生態建設@小眼睛科
    發表于 11-02 17:51

    YOLOX目標檢測模型的推理部署

    曠視科技開源了內部目標檢測模型-YOLOX,性能與速度全面超越YOLOv5早期版本!
    的頭像 發表于 04-16 23:00 ?2859次閱讀

    Xilinx KV260 Vitis-AI 1.4人臉檢測

    電子發燒友網站提供《Xilinx KV260 Vitis-AI 1.4人臉檢測.zip》資料免費下載
    發表于 06-14 10:34 ?0次下載
    Xilinx KV260 <b class='flag-5'>Vitis-AI</b> 1.4人臉<b class='flag-5'>檢測</b>

    使用Vitis-AI進行車牌識別

    電子發燒友網站提供《使用Vitis-AI進行車牌識別.zip》資料免費下載
    發表于 06-27 09:49 ?2次下載
    使用<b class='flag-5'>Vitis-AI</b>進行車牌識別