資料介紹
描述
介紹
Xilinx 推出 Kria SOM 令人興奮!KV260 Vision AI 入門套件是用于開發和原型設計加速算法的絕佳平臺,包括但不限于機器學習、計算機視覺和信號處理。Kria App Store中有幾個預建的加速應用程序,可以下載并在 KV260 上運行。Xilinx 的智能相機和 NLP-SmartVision 應用程序使用 AR1335 圖像傳感器和 AP1302 ISP(AR1335 傳感器包含在KV260 配件包中,并且是圖像處理應用程序的一個很好的補充)。在測試了一些預構建的應用程序之后,您可能會問,“我如何創建自己的應用程序”。該項目將描述可用于創建用于加速 ML 推理任務的基本設計的步驟。
在我們開始之前,回顧一些 KV260 術語會很有幫助
- 平臺:用作基礎設計的 Vitis 平臺。定義與片外組件(如圖像傳感器)的物理接口。還定義了加速器時鐘和內存接口。
- Overlay:加速應用程序的秘方。這是我們添加 ML 加速器(即 DPU)以及我們需要的任何其他加速器的地方。使用術語“覆蓋”是因為我們將這些加速器覆蓋在平臺上。
該項目將為支持 AR1335 傳感器的平臺創建自定義疊加層。
要求
項目成立
對于這個項目,我們將從 KV260 BSP 和一些參考設計開始。從那里我們將修改 BSP 和參考設計以創建我們的自定義加速 ML 推理應用程序。
mkdir ~/kv260_ml_accel
export PROJ_DIR=~/kv260_ml_accel
-
使用以下命令從 GitHub克隆示例項目
KV260-Vitis
cd $PROJ_DIR
git clone https://github.com/xilinx/kv260-vitis
cd kv260-vitis
git checkout release-2020.2.2_k26
-
Vitis-AI
從 GitHub克隆存儲庫。該Vitis-AI
存儲庫將用于將深度學習處理單元 (DPU) 添加到設計中。
cd $PROJ_DIR
git clone https://github.com/xilinx/Vitis-AI
cd Vitis-AI
git checkout v1.3
注意:DPU 是位于 KV260 SOM 上的 Xilinx Zynq UltraScale+ MPSoC 芯片中 ARM A53 處理器復合體的軟 CNN 協處理器。
- 從 GitHub 克隆 Vitis_??Libraries 存儲庫。Vitis Vision 庫將用于添加 ML 預處理加速器(圖像大小調整)
cd $PROJ_DIR
git clone https://github.com/Xilinx/Vitis_Libraries
cd Vitis_Libraries
git checkout 2020.2
- 獲取 Vitis 和 PetaLinux 環境設置腳本。如果關閉這些腳本的源終端,則需要在新終端中重復此步驟
source /2020.2/settings64.sh
source /2020.2.2/settings.sh
注意:前面命令中顯示的設置腳本位于工具安裝目錄中,例如 Vitis 可能安裝在/tools/Xilinx/Vitis/2020.2
您機器上的目錄中。
-
下載 KV260 板文件(如果尚未完成)。以下命令中顯示的腳本將在
$XILINX_VIVADO/data/boards/board_files
目錄中安裝板文件。
cd $PROJ_DIR
wget https://www.hackster.io/code_files/543211/download -O get_kv260_boards.sh
dos2unix get_kv260_boards.sh
sh ./get_kv260_boards.sh
創建平臺
NLP-SmartVision 平臺提供基本時鐘(100、300、600 MHz)和內存連接,用于向 PL 添加加速器。該平臺還提供與 AR1335 和 AP1302 接口所需的捕獲管道。這將是該項目的基礎平臺。
修改平臺以刪除捕獲管道中的標量 IP。如果需要執行傳感器數據縮放,可以使用 AP1302 ISP 完成。此修改對于適合 KV260 設備 URAM 資源是必要的。
cd $PROJ_DIR/kv260-vitis/platforms/vivado/kv260_ispMipiRx_DP/scripts
cp config_bd.tcl config_bd.tcl.orig
sed -i 's/C_TOPOLOGY {0}/C_TOPOLOGY {3}/g' config_bd.tcl
sed -i '132i\ \ \ CONFIG.C_CSC_ENABLE_WINDOW {false} \\' config_bd.tcl
sed -i 's/v_proc_ss_0\/aclk_axis/v_proc_ss_0\/aclk/g' config_bd.tcl
sed -i 's/\[get_bd_pins v_proc_ss_0\/aclk_ctrl\]//g' config_bd.tcl
sed -i 's/v_proc_ss_0\/aresetn_ctrl/v_proc_ss_0\/aresetn/g' config_bd.tcl
以下命令將構建平臺:
cd $PROJ_DIR/kv260-vitis
make platform PFM=kv260_ispMipiRx_DP
平臺構建完成后,輸出將位于$PROJ_DIR/kv260-vitis/platforms/xilinx_kv260_ispMipiRx_DP_202022_1
編譯 ML 預處理加速器
在大多數情況下,傳感器數據需要先降低分辨率,然后才能執行 ML 推理。輸入捕獲管道設置為捕獲最大 4K 的圖像大小,但大多數 ML 網絡不支持這么大的輸入大小。為了在 ML 推理之前縮放圖像,我們將使用 Vitis Vision 庫將圖像縮放器 IP 添加到 PL 作為加速器。
- 修改默認調整大小加速器配置以支持彩色 (RGB) 圖像
cd $PROJ_DIR/Vitis_Libraries/vision/L2/examples/resize
sed -i 's/RGB 0/RGB 1/g' build/xf_config_params.h
sed -i 's/GRAY 1/GRAY 0/g' build/xf_config_params.h
- 使用 Vitis v++ 命令編譯 Vitis Vision 庫調整大小功能
v++ -c -t hw xf_resize_accel.cpp \
--platform $PROJ_DIR/kv260-vitis/platforms/xilinx_kv260_ispMipiRx_DP_202022_1/kv260_ispMipiRx_DP.xpfm \
--kernel_frequency 300 \
-I../../../L1/include \
-I./build \
--save-temps \
-k resize_accel \
-o resize_accel.xo
-
編譯過程的輸出是 Xilinx 目標文件 (
resize_accel.xo
),這是我們將加速器添加到我們的 PL 覆蓋層所需要的。
創建 ML 推理加速疊加層
我們將使用 Vitis-AI DPU-TRD 將 DPU IP 添加到設計中。DPU 是用于加速 CNN 推理任務的 IP。對于這個項目,我們將使用最大的 DPU——B4096 DPU。
- 導航到 DPU-TRD 目錄
cd $PROJ_DIR/Vitis-AI/dsa/DPU-TRD/prj/Vitis
-
更新
dpu_conf.vh
文件以使用 UltraRAM。以下sed
命令將更新dpu_conf.vh
文件以啟用 UltraRAM
sed -i 's/^`define URAM_DISABLE/`define URAM_ENABLE/' dpu_conf.vh
- 使用配置文件定義 DPU 時鐘和內存連接。這個項目提供了一個配置文件。以下命令將下載配置文件并將其放置在 DPU-TRD 項目中。
cd config_file
mv prj_config prj_config.orig
wget https://www.hackster.io/code_files/542906/download -O prj_config
cd ..
-
修改 DPU-TRD 項目 Makefile 以包含預處理加速器 (
resize_accel.xo
)
sed -i '53i kernel_xo += ${PROJ_DIR}/Vitis_Libraries/vision/L2/examples/resize/resize_accel.xo' Makefile
- 使用以下命令構建 DPU-TRD 以將 DPU 和調整大小加速器添加到平臺
export SDX_PLATFORM=$PROJ_DIR/kv260-vitis/platforms/xilinx_kv260_ispMipiRx_DP_202022_1/kv260_ispMipiRx_DP.xpfm
make binary_container_1/dpu.xclbin KERNEL=DPU DEVICE=kv260
構建完成后,您將看到位于目錄中的dpu.xclbin
文件$PROJ_DIR/Vitis-AI/dsa/DPU-TRD/prj/Vitis/binary_container_1
和位于$PROJ_DIR/Vitis-AI/dsa/DPU-TRD/prj/Vitis/binary_container_1/link/vivado/vpl/prj/prj.runs/impl_1
目錄中的位文件。
- 將構建文件復制到工作目錄
mkdir -p $PROJ_DIR/overlay_files
cd binary_container_1
cp dpu.xclbin $PROJ_DIR/overlay_files
cp link/vivado/vpl/prj/prj.runs/impl_1/*.bit $PROJ_DIR/overlay_files/kv260-ml-accel.bit
從 BSP 創建 PetaLinux 項目
在項目設置部分,我們從 Xilinx 下載站點下載了 BSP。我們將使用下載的 BSP 創建 PetaLinux 項目。以下命令將從 BSP 創建項目。
cd $PROJ_DIR
petalinux-create -t project -s ~/Downloads/xilinx-k26-starterkit-v2020.2.2-final.bsp
cd xilinx-k26-starterkit-2020.2.2
echo 'BOARD_VARIANT = "kv"' >> project-spec/meta-user/conf/petalinuxbsp.conf
petalinux-config --silentconfig
將包含 DPU 的自定義 PL 覆蓋添加到 PetaLinux 項目
自定義 PL 覆蓋將被打包為 PetaLinux 項目中的應用程序,并添加到目標根文件系統。這允許 xmutil 實用程序在 Linux 在 KV260 上啟動后將自定義覆蓋加載為“加速應用程序”。
- 從 GitHub 下載 kv260_ispMipiRx_DP 平臺的平臺設備樹定義
wget https://raw.githubusercontent.com/Xilinx/kv260-firmware/release-2020.2.2_k26/nlp-smartvision/kv260-nlp-smartvision.dtsi -O $PROJ_DIR/overlay_files/kv260-ml-accel.dtsi
- 修改設備樹以更改顏色空間轉換塊的驅動程序(需要,因為我們修改了平臺以刪除縮放功能)
cd $PROJ_DIR/overlay_files
sed -i 's/scaler-2.2/csc/g' kv260-ml-accel.dtsi
sed -i 's/clock-names = "aclk_axis", "aclk_ctrl"/clock-names = "aclk"/g' kv260-ml-accel.dtsi
- 從設備樹中刪除標量特定屬性,因為我們從捕獲管道中刪除了縮放功能(注意:如果需要,AP1302 ISP 仍然能夠執行縮放)。
sed -i 's/clocks = <\&misc_clk_2>, <\&misc_clk_2>/clocks = <\&misc_clk_2>/g' kv260-ml-accel.dtsi
sed -i '/xlnx,num-hori-taps = <6>;/d' kv260-ml-accel.dtsi
sed -i '/xlnx,num-vert-taps = <6>;/d' kv260-ml-accel.dtsi
- 創建 PetaLinux 應用配方。這將創建將我們的自定義覆蓋添加到 PetaLinux 項目所需的文件/目錄。
cd $PROJ_DIR/xilinx-k26-starterkit-2020.2.2
petalinux-create -t apps --template fpgamanager --name kv260-ml-accel --enable --srcuri "$PROJ_DIR/overlay_files/kv260-ml-accel.bit $PROJ_DIR/overlay_files/kv260-ml-accel.dtsi $PROJ_DIR/overlay_files/dpu.xclbin"
該應用程序將在中創建$PROJ_DIR/xilinx-k26-starterkit-2020.2.2/project-spec/meta-user/recipes-apps/kv260-ml-accel.
如果您需要更新比特流、設備樹或 xclbin,則只需替換位于該目錄中的文件即可。但是,請確保保留相同的名稱,因為 .bb 文件正在尋找特定的名稱。
創建配方添加配套軟件包
向項目添加額外的軟件包將創建一個目標根文件系統,其中包含用于 ML 推理的必要庫。這些庫包括 Vitis-AI 和 OpenCV 以及其他各種實用程序。此外,還有用于編程 AP1302 ISP 的固件文件也需要添加到項目中。
以下命令會將包添加到項目中:
mkdir -p project-spec/meta-user/recipes-core/packagegroups
echo '
DESCRIPTION = "KV260 ML inference app related packages"
inherit packagegroup
KV260_ML_ACCEL_PACKAGES = " \
ap1302-ar1335-single-firmware \
dnf \
e2fsprogs-resize2fs \
parted \
resize-part \
packagegroup-petalinux-vitisai \
packagegroup-petalinux-vitisai-dev \
packagegroup-petalinux-gstreamer \
cmake \
libgcc \
gcc-symlinks \
g++-symlinks \
binutils \
xrt \
xrt-dev \
zocl \
opencl-clhpp-dev \
opencl-headers-dev \
packagegroup-petalinux-opencv \
packagegroup-petalinux-opencv-dev \
packagegroup-petalinux-v4lutils \
"
RDEPENDS_${PN} = "${KV260_ML_ACCEL_PACKAGES}"
COMPATIBLE_MACHINE = "^$"
COMPATIBLE_MACHINE_k26-kv = "${MACHINE}"
PACKAGE_ARCH = "${BOARDVARIANT_ARCH}"
' > project-spec/meta-user/recipes-core/packagegroups/packagegroup-kv260-ml-accel.bb
- 將自定義包組添加到根文件系統配置
echo "CONFIG_packagegroup-kv260-ml-accel" >> project-spec/meta-user/conf/user-rootfsconfig
echo "CONFIG_packagegroup-kv260-ml-accel=y" >> project-spec/configs/rootfs_config
構建 PetaLinux 項目并創建 SD 卡 wic 映像
以下命令將構建 PetaLinux 項目,然后將輸出文件打包為 wic 映像,可以將其寫入 SD 卡。
- 構建項目
petalinux-build
- 生成wic鏡像文件
petalinux-package --wic --bootfiles "ramdisk.cpio.gz.u-boot boot.scr Image system.dtb"
將 wic 映像寫入 SD 卡
可以使用 BalenaEtcher 等映像實用程序或在 Linux 上使用命令將 wic 映像文件寫入 SD 卡dd
。可以在 Linux 機器上使用以下命令將 wic 映像寫入 SD 卡。在繼續之前,請務必閱讀以下免責聲明:
- 將 SD 卡映像寫入空白 SD 卡。以下命令可用于使用 Linux 寫入 SD 卡映像:
sudo dd if=images/linux/petalinux-sdimage.wic of=/dev/sdstatus=progress
注意:上面提到的 SD 卡/dev/sd
對于您的系統將是唯一的。您需要將 替換為sd
適合您系統的驅動器映射。例如,sd
可能等于sda
、sdb
、sdc
等,具體取決于您的系統如何枚舉 SD 卡設備。確保在of=
上面的參數中指定的名稱是設備名稱,而不僅僅是一個分區(即of=/dev/sd
正確,但of=dev/sd1
不正確)。
- 當 SD 卡寫入過程完成后,您可以使用以下命令彈出設備
sudo eject /dev/sd
注意:上一步中關于 SD 卡設備枚舉的說明也適用于此步驟。
設置 KV260
啟動 KV260
將上一節鏡像中的micro-SD卡插入KV260 micro-SD卡槽,給板子上電。該板應該開始啟動,完成后您將看到登錄提示。使用用戶名“petalinux”登錄,然后根據提示更改密碼。有關串行端口控制臺示例,請參見下圖。
從 Xilinx Vitis-AI Model Zoo 下載預編譯的 DenseBox 人臉檢測模型
Xilinx Vitis-AI Model Zoo 具有針對 B4096 DPU 架構的預編譯模型。我們正在創建的示例應用程序使用 DenseBox 人臉檢測模型。以下命令將下載預訓練和預編譯的模型,然后將其安裝在 KV260 根文件系統中。請在 KV260 上執行以下命令。
cd /home/petalinux
wget https://www.xilinx.com/bin/public/openDownload?filename=densebox_640_360-zcu102_zcu104-r1.3.0.tar.gz -O densebox_640_360-zcu102_zcu104-r1.3.0.tar.gz
sudo mkdir -p /usr/share/vitis_ai_library/models
提取模型:
sudo tar -xvzf densebox_640_360-zcu102_zcu104-r1.3.0.tar.gz -C /usr/share/vitis_ai_library/models
下載示例應用程序代碼
以下命令將下載并提取示例應用程序代碼
wget https://hacksterio.s3.amazonaws.com/uploads/attachments/1393631/face_detect_px1rBmdftj.zip -O face_detect.zip
unzip face_detect.zip
示例應用程序代碼使用編譯 ML 預處理加速器部分中創建的硬件加速器執行圖像縮放。DenseBox 人臉檢測模型的輸入層大小為 640x360,但捕獲分辨率為 1920x1080。調用硬件加速器以使用 OpenCL API 調整圖像大小。硬件加速器管理由頭文件中定義的類處理。resize_accel.hpp
編譯應用程序
在我們編譯應用程序之前,我們必須加載 kv260-ml-accel Kria 應用程序。在 KV260 上執行以下命令將卸載默認應用程序,然后加載 kv260-ml-accel 應用程序。
sudo xmutil unloadapp
sudo xmutil loadapp kv260-ml-accel
加載 kv260-ml-accel 后,您應該在終端中看到以下內容
加載應用程序后,您可能需要按鍵盤上的“返回或輸入”以返回提示。執行以下命令來設置 MIPI 捕獲管道。
cd /home/petalinux/face_detect
./setup_media_pipe.sh
運行腳本后,如果您將 MIPI 攝像頭連接到連接器 J7,您應該會看到類似于以下內容的輸出。
。該值將需要作為參數傳遞給示例應用程序。
執行以下命令來運行應用程序。您應該會看到 1920x1080 的捕獲圖像以及覆蓋在 HDMI 監視器上的人臉檢測。
cd /home/petalinux/face_detect
./facedetect.exe /dev/video2
請注意,這是一個非常簡單的示例應用程序,并未針對性能進行優化(即它是單線程的)。
概括
該項目為 Kria KV260 Vision AI 入門套件創建了自定義機器學習加速應用程序。加速應用程序包括與 B4096 DPU CNN 和圖像縮放加速器的疊加。
我希望你喜歡這個項目。 請關注我,以便及時了解我的最新項目。我正在開展一個項目,該項目描述了如何將此加速應用程序添加到Xilinx Kria KV260 Vision AI 入門套件的認證 Ubuntu 映像中。
更新2/9/2022 - 請查看我的其他項目,該項目使用 KV260 的官方 Canonical Ubuntu 映像 -使用 Xilinx Kria KV260 在 Ubuntu 上輕松進行機器學習
- Kria KV260視覺AI入門套件用戶指南
- 教程 2:添加特征-自定義配置文件創建
- 使用KV260進行事故檢測
- Vitis ai 1.4 KV260鏡像開源
- 在KV260上運行Yolov4 tiny
- 教程 2:添加特征-自定義配置文件創建
- 為Kria KV260添加USB WiFi
- Kria KV260 AI視覺套件入門
- Xilinx Kria KV260套件的第一個硬件項目
- Vivado 2021.1中的Kria KV260入門
- 使用Xilinx Kria KV260進行AI火災探測
- Kria KV260上的動態交通燈系統
- 使用Microsoft AJAX Library創建自定義客戶端腳本的資料說明 6次下載
- 遠程網絡處理器應用程序和與自定義應用程序的詳細資料免費下載 3次下載
- 在NI Multisim中創建自定義元器件 0次下載
- TSMaster 自定義 LIN 調度表編程指導 389次閱讀
- AMD Kria KR260 DPU配置教程 862次閱讀
- 博途用戶自定義庫的使用 639次閱讀
- IAR下手動拷貝自定義程序段到RAM中執行的方法分享 1349次閱讀
- 怎樣為顯示器創建自定義分辨率呢? 5897次閱讀
- 如何在KV260上快速體驗Vitsi AI圖像分類示例程序 1289次閱讀
- 添加自定義屬性控制fridaserver啟動和停止 1350次閱讀
- 自定義特性能做什么? 700次閱讀
- 如何自定義函數或局部腳本 1305次閱讀
- 創建自定義的u-boot命令 988次閱讀
- 如何在Vivado中更改自定義的Interface 2660次閱讀
- Glib創建自定義事件源的方法 2834次閱讀
- 如何給EOS賬號設置自定義權限 1414次閱讀
- Qt自定義窗口部件的創建 2368次閱讀
- erlang如何自定義_ERLANG環境搭建 1467次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數據手冊
- 1.06 MB | 532次下載 | 免費
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費
- 3TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費
- 5元宇宙深度解析—未來的未來-風口還是泡沫
- 6.40 MB | 227次下載 | 免費
- 6迪文DGUS開發指南
- 31.67 MB | 194次下載 | 免費
- 7元宇宙底層硬件系列報告
- 13.42 MB | 182次下載 | 免費
- 8FP5207XR-G1中文應用手冊
- 1.09 MB | 178次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應用800例(新編版)
- 0.00 MB | 33566次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關電源設計實例指南
- 未知 | 21549次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數字電路基礎pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅動電路設計》 溫德爾著
- 0.00 MB | 6656次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉中文版)
- 78.1 MB | 537798次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191187次下載 | 免費
- 7十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183279次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論
查看更多