安装还是失败,因为petalinux_sdk_2023.1文件权限问题,需要现授权然后在安装。
1.3、安装完成后,请遵循提示,执行以下命令:
$ source ~/petalinux_sdk_2023.1/environment-setup-cortexa72-cortexa53-
xilinx-linux
1.4、要在 Vitis AI Library 中使用 classification 编译库样本,请执行以下命令。
$ cd ~/Vitis-AI/examples/vai_library/samples/classification
$ bash -x build.sh
1.5、修改库源码
要修改库源码,请在 ~/Vitis-AI/src/vai_library 下进行查看并修改。
编译 Vitis AI Library 前,请确认编译的输出路径。默认输出路径是 $HOME/build。
1.6、构建所有库
执行以下命令一次性构建所有库。
$ cd ~/Vitis-AI/src/vai_library
$ ./cmake.sh --clean
二、Vitis AI 人脸检测
在边缘平台或数据中心平台上运行Vitis AI Library 示例之前,请下载vitis_ai_library_r3.0.x_images.tar.gz 和vitis_ai_library_r3.0.0_video.tar.gz。以下示例中使用的图像或视频均可在这两个包中找到。
https://china.xilinx.com/bin/public/openDownload?filename=vitis_ai_library_r3.0.0_images.tar.gz
https://china.xilinx.com/bin/public/openDownload?filename=vitis_ai_library_r3.0.0_video.tar.gz
对于边缘器件
Vitis AI 运行时包和 Vitis AI Library 样本与模型都已编译到预构建的 Vitis AI
开发板镜像中。您可直接运行示例。如有新程序,请在主机侧对其进行编译并将可执行程序复制到目标。
1. 使用 scp 命令将 vitis_ai_library_r3.0.0_images.tar.gz 和
vitis_ai_library_r3.0.0_video.tar.gz 从主机复制到目标,如下所示:
scp vitis_ai_library_r3.0.0_images.tar.gz root@xilinx-kv260-starterkit-20222:~/
scp vitis_ai_library_r3.0.0_video.tar.gz root@xilinx-kv260-starterkit-20222:~/
在这里使用SSH软件直接将压缩包上传到板卡当中。
2. 在目标上解压镜像和视频程序包。
cd ~
tar -xzvf vitis_ai_library_r3.0*_images.tar.gz -C Vitis-AI/examples/vai_library
tar -xzvf vitis_ai_library_r3.0*_video.tar.gz -C Vitis-AI/examples/vai_library
3. 进入目标开发板上示例的解压后目录,然后编译示例。以 facedetect 为例。
cd ~/Vitis-AI/examples/vai_library/samples/facedetect
4.运行示例。
./test_jpeg_facedetect densebox_320_320 sample_facedetect.jpg
5. 查看运行结果。
有两种方法可用于查看结果:一种方法是通过打印信息来查看结果。另一种方法是下载
sample_facedetect_result.jpg 图像查看结果,如下图所示:
6. 要以 USB 摄像头作为输入来测试程序,请运行以下命令:
./test_video_facedetect densebox_320_320 0 -t 8
使用的事奥比中的摄像头,程序实时监测人脸。
三、RefineDet人体检测
RefineDet是一种基于SSD(Single Shot MultiBox Detector)算法的改进方法,它结合了两阶段方法和一阶段方法的优点。该方法主要包含两个模块:
ARM(Anchor Refine Module)和ODM(Object Detection Module)。
ARM模块负责滤除置信度非常高的负类样本。它对锚框(anchor boxes)进行二分类和边框回归。这个模块采用与SSD框架相同的前馈卷积网络,但只针对锚框的二分类和边框回归进行训练。
ODM模块使用ARM模块得到的anchor完成目标的检测。这个模块也是基于SSD框架,但在训练时不仅关注锚框的二分类和边框回归,还关注目标检测的分类和位置回归。
另外,RefineDet还借鉴了FPN(Feature Pyramid Networks)中将高层特征与低层特征融合的思想,以提升目标检测的性能。
3.1、代码实现
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include "./process_result_tf.hpp"
using namespace std;
int main(int argc, char* argv[]) {
string model = argv[1];
return vitis::ai::main_for_jpeg_demo(
argc, argv, [model] { return vitis::ai::RefineDet::create(model); },
process_result_tf, 2);
}
3.2、实践效果
使用命令运行代码程序。
cd Vitis-AI/examples/vai_library/samples/refinedet
./test_jpeg_refinedet_tf refinedet_VOC_tf sample_refinedet.jpg
RefineDet 是用于人体检测的神经网络。输入是含待测个人的图片。输出是生成的结构(包含每个框的信息)的矢量。
下图显示了 RefineDet 检测的结果: