Avnet is working on Vitis 2021.1 platforms for several of their hardware platforms.
Thanks to this work, I was able to port Vitis-AI 1.4 on the following platforms:
- Ultra96-V2 Development Board
- UltraZed-EV SOM (7EV) + FMC Carrier Card
- UltraZed-EG SOM (3EG) + IO Carrier Card
Vitis-AI 1.4 Flow for Avnet Vitis platforms
For access to the pre-built SD card images, as well as instructions on how to rebuild these images, please refer to the following:
http://avnet.me/vitis-ai-1.4-project
Enjoy !
Bonus Content
As a bonus to the Element14 community, I wanted to also share how I created the animated image of the point cloud 3D demonstration.
The code for this project is one of the benefits of the Xilinx Developer Program.
If you are not registered in the Xilinx Developer Program, you can do it now at the following link:
https://developer.xilinx.com/en/developer-program.html
Once registered, navigate to the "Demos & Designs" tab, where you can find the source for several application examples, including "Point Cloud 3D detection".
https://www.xilinx.com/developer/products/vitis-ai.html#demos
As of this writing, the "Point Cloud 3D detection" demo was only provided for Vitis-AI 1.3, but we will modify it for use with Vitis-AI 1.4.
Download the "pp_3d_detect.tar.gz" archive, and copy to the SD card of the Ultra96-V2 board.
The "pp_3d_detect.tar.gz" archive contains many files (.*) which are not useful. I recommend extracting the archive with the --exclude argument to prevent extracting these unwanted files.
root@u96v2-sbc-base-2021-1:~# tar xvzf ppdemo1216.tar.gz --exclude='.*' root@u96v2-sbc-base-2021-1:~# cd ppdemo1216/
Several modifications need to be made for use with 2021.1 and Vitis-AI 1.4.
The first is to modify the demo.cpp source file to change one of the headers from iostream to fstream:
//#include <iostream> #include <fstream>
The second is to modify the build.sh script to change the c++ version and to define OPENCV_FLAGS for the new opencv version:
#g++ -std=c++11 -I. -o demo demo.cpp -lopencv_core -lopencv_video -lopencv_videoio -lopencv_imgproc -lopencv_imgcodecs -lopencv_highgui -lvitis_ai_library-pointpillars -lvart-util -pthread -lglog result=0 && pkg-config --list-all | grep opencv4 && result=1 if [ $result -eq 1 ]; then OPENCV_FLAGS=$(pkg-config --cflags --libs-only-L opencv4) else OPENCV_FLAGS=$(pkg-config --cflags --libs-only-L opencv) fi g++ -std=c++17 -I. ${OPENCV_FLAGS} -o demo demo.cpp -lopencv_core -lopencv_video -lopencv_videoio -lopencv_imgproc -lopencv_imgcodecs -lopencv_highgui -lvitis_ai_library-pointpillars -lvart-util -pthread -lglog
With these changes made, we can build the application.
root@u96v2-sbc-base-2021-1:~/ppdemo1216# source ./build.sh
Refer to the readme.txt for instructions for launching the application with the provided images and LIDAR data.
On the Ultra96-V2 and UltraZed-EG platforms, it is recommended to reduce the monitor resolution to prevent the display controller from starving while the DPU is running, which results in glitches on the screen.
root@u96v2-sbc-base-2021-1:~# xrandr --output DP-1 --mode 800x600 root@u96v2-sbc-base-2021-1:~# cd ~/dpu_sw_optimize/zynqmp/ root@u96v2-sbc-base-2021-1:~/dpu_sw_optimize/zynqmp# ./zynqmp_dpu_optimize.sh Auto resize ext4 partition ... Start QoS config ... root@u96v2-sbc-base-2021-1:~/dpu_sw_optimize/zynqmp# cd ~/ppdemo1216
To display the images with 3D annotations, use the following command:
root@u96v2-sbc-base-2021-1:~/ppdemo1216# ./demo ./ppd/vlist.txt ./ppd/ 1
To display the images with 3D annotations, use the following command:
root@u96v2-sbc-base-2021-1:~/ppdemo1216# ./demo ./ppd/vlist.txt ./ppd/ 2
On the UltraZed-EV platform, use the following command to view both:
root@u96v2-sbc-base-2021-1:~/ppdemo1216# ./demo ./ppd/vlist.txt ./ppd/ 3
Regards,
Mario Bergeron.