跳转到主要内容

Vitis AI 编译dnndk应用

judy 提交于

本文转载自:<span id="profileBt"><a href="https://mp.weixin.qq.com/s/LykXY8IGWRdnWeJdfMKGbQ"&gt; 硬码农二毛哥微信公众号</a></span>

在Vitis AI library中的模型在自定义单板使用中,介绍了如何进行模型库编译,下一步要将模型加入到AI应用中进行编译,生成可执行文件。

<strong>编译DNNDK AI应用</strong>

DNNDK API与VART API

DNNDK API:自定义神经网络时使用。

VART(Vitis-AI RunTime) API :使用Xilinx Model Zoo中的模型时使用。

<li>安装交叉编译环境</li>

进入https://github.com/Xilinx/Vitis-AI/tree/v1.2/mpsoc,下载sdk-2020.1.0.0sh。
<pre>$mkdir petalinux_sdk
$cd petalinux_sdk
$./sdk-2020.1.0.0.sh</pre>

创建环境变量
<pre>$source ~/petalinux_sdk/environment-setup-aarch64-xilinx-linux</pre>

下载 vitis-ai_v1.2_dnndk.tar.gz ,并安装到~/petalinux_sdk/sysroots/aarch64-xilinx-linux目录,用于交叉编译
<pre>$tar -xzvf vitis-ai_v1.2_dnndk.tar.gz
$cd vitis-ai_v1.2_dnndk
$./install.sh ~/petalinux_sdk/sysroots/aarch64-xilinx-linux</pre>

将vitis_ai_dnndk_sample拷贝到工作目录Tool_Example
<pre>$cp -r ../mpsoc/vitis_ai_dnndk_sample ./</pre>

下载 vitis-ai_v1.2_dnndk_sample_img.tar.gz,并解压
<pre>$tar -xzvf vitis-ai_v1.2_dnndk_sample_img.tar.gz</pre>

FACE_DETECTION

将编译后的dpu_*.elf拷贝到face_detection
<pre>$cd ~/Vitis-AI/Tool_Example/vitis_ai_dnndk_samples/face_detection
$mkdir model_for_fzu3</pre>

修改face_detection应用下的main.cc文件
<pre>void faceDetection(DPUKernel *kernel) {
mutex mtxQueueInput; // mutex of input queue
mutex mtxQueueShow; // mutex of display queue
queue&lt;pairImage> queueInput; // input queue
priority_queue&lt;pairImage, vector&lt;pairImage&gt;, PairComp&gt; queueShow; // display queue

VideoCapture camera(0);
if (!camera.isOpened()) {
cerr &lt;&lt; "Open camera error!" &lt;&lt; endl;
exit(-1);
}
camera.set(CV_CAP_PROP_FRAME_WIDTH,640);
camera.set(CV_CAP_PROP_FRAME_HEIGHT,480);</pre>

修改build.sh
<pre>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</pre>

交叉编译,生成face_detection
<pre>$./build.sh fzu3</pre>

<strong>单板上执行AI应用</strong>

将face_detection拷贝到sd卡

设置DISPLAY环境变量
<pre>$exprot DISPLAY=:0.0
$xrandr --output DP-1 --mode 640x480</pre>

执行人脸检测应用
<pre>$./face_detection</pre>