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