Vitis AI 编译dnndk应用

本文转载自: 硬码农二毛哥微信公众号

在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

    最新文章