Vitis 視頻分析 SDK 是在 AMD 平臺上構(gòu)建 AI 驅(qū)動的智能視頻分析解決方案的完整軟件棧。它從 USB/MIPI 攝像頭、視頻文件或者 RTSP 流中獲取輸入,并使用 Vitis AI 實現(xiàn)各種基于人工智能的應(yīng)用,如智能城市、行人檢測、健康監(jiān)測、智慧零售、缺陷檢測等等。
對于開發(fā)者,VVAS 以基礎(chǔ)插件、軟件加速庫的形式提供了一個框架,并為用戶開發(fā)自己的插件以控制定制的硬件加速器提供了簡化接口。有了這個框架,用戶可以輕松地將他們的定制加速器/內(nèi)核集成到 Vitis Video Analytics SDK 中。它建立在 XRT、Vitis 和 Vitis AI 之上,并對這些復(fù)雜的接口進行了抽象化,使開發(fā)人員更容易構(gòu)建視頻分析應(yīng)用。
用戶通過 Core API 可以完成軟硬件的調(diào)度。這四個 API 是:
xlnx_kernel_init()
xlnx_kernel_deinit()
xlnx_kernel_start()
xlnx_kernel_done()
我們首先介紹如何將軟件應(yīng)用集合到 VVAS 框架中。軟件應(yīng)用指的是只在 CPU 上執(zhí)行,不使用 FPGA 部分的自定義插件。我們以 smartcam 應(yīng)用中的 AI Rendering 插件作為例子。相關(guān)代碼可以從參考鏈接中找到。
AI Rendering 插件的主要功能是繪制檢測到的物體。當(dāng) DPU 推理結(jié)果(如檢測到的人臉的坐標(biāo))傳遞給 AI Rendering 插件后,該插件負責(zé)在原始幀中的物體周圍繪制邊界框。
xlnx_kernel_init() API 只在插件初始化的時候被 VVAS 調(diào)用一次。軟件應(yīng)用可以在這個函數(shù)中執(zhí)行一次性初始化操作。
xlnx_kernel_start() API 在處理輸入緩沖區(qū)中的每個幀調(diào)用這個 API,以便進一步處理。軟件應(yīng)用可以執(zhí)行每幀操作,如更新狀態(tài)機,讀/寫 IP 的寄存器,然后指示 kernel 處理輸入。
xlnx_kernel_done() VVAS 基礎(chǔ)插件會調(diào)用這個 API 來確認 kernel 是否已經(jīng)完成處理緩沖區(qū)中的幀。加速應(yīng)用可以在這個函數(shù)中實現(xiàn)邏輯,以通過這個 API 了解 kernel 的狀態(tài)。
xlnx_kernel_deinit() 這個 API 在 kernel 結(jié)束運行時被 VVAS 基礎(chǔ)插件調(diào)用。加速應(yīng)用必須執(zhí)行任何清理、去初始化任務(wù),如釋放私有句柄和內(nèi)部內(nèi)存分配。
以上代碼編譯后成為 vvas 插件的一部分,并放置在 /opt/xilinx/kv260-smartcam/lib/ 目錄下。
在 smartcam 的 GStreamer 應(yīng)用中,調(diào)用 drawresult 的相關(guān)代碼為:
其中 drawresult.json 中需要指明使用的庫文件名為 libvvas_airender.so:
審核編輯:湯梓紅
-
amd
+關(guān)注
關(guān)注
25文章
5466瀏覽量
134087 -
接口
+關(guān)注
關(guān)注
33文章
8575瀏覽量
151014 -
攝像頭
+關(guān)注
關(guān)注
59文章
4836瀏覽量
95597 -
Video
+關(guān)注
關(guān)注
0文章
195瀏覽量
45175 -
Vitis
+關(guān)注
關(guān)注
0文章
146瀏覽量
7421
原文標(biāo)題:開發(fā)者分享|使用 VVAS 開發(fā)軟件應(yīng)用
文章出處:【微信號:gh_2d1c7e2d540e,微信公眾號:XILINX開發(fā)者社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論