本文转载自: 硬码农二毛哥微信公众号
在Vitis AI library中的模型在自定义单板使用中,介绍了如何进行模型库编译,下一步要将模型加入到AI应用中进行编译,生成可执行文件。
编译DNNDK AI应用
DNNDK API与VART API
DNNDK API:自定义神经网络时使用。
VART(Vitis-AI RunTime) API :使用Xilinx Model Zoo中的模型时使用。
进入https://github.com/Xilinx/Vitis-AI/tree/v1.2/mpsoc,下载sdk-2020.1.0.0sh。
$mkdir petalinux_sdk $cd petalinux_sdk $./sdk-2020.1.0.0.sh
创建环境变量
$source ~/petalinux_sdk/environment-setup-aarch64-xilinx-linux
下载 vitis-ai_v1.2_dnndk.tar.gz ,并安装到~/petalinux_sdk/sysroots/aarch64-xilinx-linux目录,用于交叉编译
$tar -xzvf vitis-ai_v1.2_dnndk.tar.gz $cd vitis-ai_v1.2_dnndk $./install.sh ~/petalinux_sdk/sysroots/aarch64-xilinx-linux
将vitis_ai_dnndk_sample拷贝到工作目录Tool_Example
$cp -r ../mpsoc/vitis_ai_dnndk_sample ./
下载 vitis-ai_v1.2_dnndk_sample_img.tar.gz,并解压
$tar -xzvf vitis-ai_v1.2_dnndk_sample_img.tar.gz
FACE_DETECTION
将编译后的dpu_*.elf拷贝到face_detection
$cd ~/Vitis-AI/Tool_Example/vitis_ai_dnndk_samples/face_detection $mkdir model_for_fzu3
修改face_detection应用下的main.cc文件
void faceDetection(DPUKernel *kernel) { mutex mtxQueueInput; // mutex of input queue mutex mtxQueueShow; // mutex of display queue queue<pairImage> queueInput; // input queue priority_queue<pairImage, vector<pairImage>, PairComp> queueShow; // display queue VideoCapture camera(0); if (!camera.isOpened()) { cerr << "Open camera error!" << endl; exit(-1); } camera.set(CV_CAP_PROP_FRAME_WIDTH,640); camera.set(CV_CAP_PROP_FRAME_HEIGHT,480);
修改build.sh
elif [ "$TestBoard" = "fzu3" ] || [ "$TestBoard" = "fzu3" ]; then if [ -e ./model_for_fzu3 ]; then echo "copy fzu3 model file..." cp -r model_for_fzu3 ./model else echo "The folder named 'Model_for_fzu3' does not exist!" exit 1 fi
交叉编译,生成face_detection
$./build.sh fzu3
单板上执行AI应用
将face_detection拷贝到sd卡
设置DISPLAY环境变量
$exprot DISPLAY=:0.0 $xrandr --output DP-1 --mode 640x480
执行人脸检测应用
$./face_detection