透過 xilinx 提供的 Deep Learning Processing Unit (DPU),在Zedboard上進行影像辨識之功能。
必須使用以下版本 Ubuntu18.04 vivado 2019.2 petalinux 2019.2 DNNDK v3.1 DPU檔案
解壓縮下載檔案後開啟 vivado 2019.2,並在 TCL console 輸入
cd project_path/Resnet50_ZedBoard/pl
source ./scripts/Resnet50_ZedBoard.tcl
點選Generate bitstream,需等待一段時間完成
sudo apt install -y tofrodos iproute2 gawk xvfb gcc g++ net-tools \
libncurses5-dev tftpd zlib1g-dev zlib1g:i386 libssl-dev flex bison \
libselinux1 wget curlsocat xterm python python3 screen pax diffstat \
chrpath autoconf libtool texinfo unzip zlib1g-dev gcc-multilib
petalinux2019.2 中的 yocto SDK 需要 python2,但 ubuntu18.04 並未有 python2 的版本,因此需要另外安裝。
sudo apt install -y curl
curl -O https://bootstrap.pypa.io/pip/2.7/get-pip.py
sudo apt install -y gcc make zlib1g-dev
wget https://www.python.org/ftp/python/2.7.18/Python-2.7.18.tgz
tar -xvzf Python-2.7.18.tgz
cd Python-2.7.18
./configure
make
sudo make install
chmod +x ~/YOUR_FILE_PATH/petalinux-v2019.2-final-installer.run
mkdir ~/petalinux/2019.2
cd ~/petalinux/2019.2
~/YOUR_FILE_PATH/petalinux-v2019.2-final-installer.run ~/petalinux/2019.2
- 執行後可能會遇到 petalinux_installation_log 相關問題,但通常是執行權限問題,輸入chmod 777 petalinux_installation_log 可解決。
- 安裝過程中需要同意一些,根據terminel上的指示操作即可。
安裝完成後將其加入環境變數,之後每次開啟Terminal不需額外輸入指令即可使用 petalinux commands
sudo nano ~/.bashrc
#貼上下方指令
source ~/petalinux/2019.2/settings.sh
cd Resnet50_ZedBoard_2019_2/apu/resnet50_zedboard_bsp/
petalinux-create -t project -s resnet50_zedboard.bsp -n YOUR_PROJECT_NAME --force
petalinux-config -c kernel
進入Device Drivers
進入USB support
進入Support for Host-side USB,啟用OTG support
回到 Deivce Drivers,進入Multimedia support
啟用 UVC input event device support
完成後儲存命名檔案
cd Resnet50_ZedBoard_2019_2/apu/resnet50_zedboard_bsp/YOUR_PROJECT_NAME/
petalinux-config --get-hw-description=~/DIRETORY_PATH/Resnet50_ZedBoard_2019_2/pl/prj/zedboard --silentconfig
petalinux-build
cd Resnet50_ZedBoard_2019_2/apu/resnet50_zedboard_bsp/YOUR_PROJECT_NAME/images/linux
petalinux-package --boot --fsbl zynq_fsbl.elf --u-boot u-boot.elf --fpga system.bit --force
最後將 Resnet50_ZedBoard_2019_2/apu/resnet50_zedboard_bsp/YOUR_PROJECT_NAME/images/linux 中的 BOOT.BIN & image.ub 存入 SDcard
cd Resnet50_ZedBoard_2019_2/apu/resnet50_zedboard_bsp/YOUR_PROJECT_NAME/
petalinux-build -s
cp Resnet50_ZedBoard_2019_2/apu/resnet50_zedboard_bsp/YOUR_PROJECT_NAME/images/linux/sdk.sh $TRD_HOME/apu/apps/
cd Resnet50_ZedBoard_2019_2/apu/apps
chmod 777 sdk.sh
./sdk.sh -d ./sdk -y
cp -r xilinx_dnndk_v3.1/ZedBoard/samples/resnet50 Resnet50_ZedBoard_2019_2/apu/apps
將範例程式修改成可使用相機辨識的功能 main.cc
#修改此檔案
Resnet50_ZedBoard_2019_2/apu/apps/resnet50/src/main.cc
unset LD_LIBRARY_PATH
. Resnet50_ZedBoard_2019_2/apu/apps/sdk/environment-setup-cortexa9t2hf-neon-xilinx-linux-gnueabi
cd Resnet50_ZedBoard_2019_2/apu/apps/resnet50
make
YOUR_PATH/Resnet50_ZedBoard_2019_2/apu/apps/resnet50/makefile
source Resnet50_Zedoard_2019_2/apu/apps/sdk/environment-setup-cortexa9t2hf-neon-xilinx-linux-gnueabi
完成後可以看到編譯器已經不是原本的 x86 使用的 g++。
最後將 Resnet50_ZedBoard_2019_2/apu/apps/resnet50 資料夾存入 SDcard
user : root password : root
cd /run/media/mmcblk0pl/resnet50
./resnet50
My.movie.1.mp4
- 辨識精確度過低
- 執行過程有時會死當