Xilinx Model Zoo 包含许多预构建的卷积神经网络模型。
该项目利用了其中几个模型,以实现用于车牌识别的多推理应用程序。
让我们开始吧 !
为以下 Avnet 平台提供了预构建的 Vitis-AI 1.3 SD 卡映像:
可在此处找到预构建 SD 卡映像的下载链接:
下载并解压后,.img 文件可以编程到 16GB 微型 SD 卡。
0.解压压缩包得到.img文件
1. 将开发板特定的 SD 卡映像编程到 16GB(或更大)的 micro SD 卡
一个。在 Windows 机器上,使用 Balena Etcher 或 Win32DiskImager(免费开源软件)
湾。在 linux 机器上,使用 Balena Etcher 或使用 dd 实用程序
$ sudo dd bs=4M if=Avnet-{platform}-Vitis-AI-1-3-{date}.img of=/dev/sd{X} status=progress conv=fsync
其中 {X} 是一个小写字母,用于指定 SD 卡的设备。您可以使用“df -h”来确定您的 SD 卡对应的设备。
本项目中使用的源代码可以从以下存储库中获取:
如果您有活动的互联网连接,您可以简单地将存储库克隆到嵌入式平台的根目录:
$ cd ~
$ git clone https://github.com/AlbertaBeef/vitis_ai_cpp_examples
为了实现车牌识别示例,我们修改了一个现有示例platedetect ,该示例可以在以下目录中找到:
~/Vitis-AI/demo/Vitis-AI-Library/samples/platedetect
如果我们查看 test_jpeg_platedetect.cpp 源代码,我们会发现它非常小:
int main(int argc, char *argv[]) {
string model = argv[1];
return vitis::ai::main_for_jpeg_demo(
argc, argv,
[model] {
return vitis::ai::PlateDetect::create(model);
},
process_result, 2);
}
此代码的可视化表示如下图所示:
我们可以看到 main 函数使用了一个通用的 main_for_jpeg_demo() 函数,并向它传递了一个 PlateDetect 类的实例,该类提供了 create() 和 run() 方法,以及一个 process_result() 函数。
该示例可以使用以下命令运行:
1. 启动后,启动 dpu_sw_optimize.sh 脚本,该脚本将优化 DDR 内存的 QoS 配置
$ cd ~/dpu_sw_optimize/zynqmp
$ source ./zynqmp_dpu_optimize.sh
2. 禁用 dmesg 详细输出:
$ dmesg -D
3.使用以下参数启动platedetect应用程序:
$ cd ~/Vitis-AI/demo/Vitis-AI-Library/samples/platedetect
$ ./test_jpeg_platedetect sample_platedetect.jpg
应用程序将在以下文件中生成输出:
在这一点上可以进行两个观察:
我们可以使用这个通用的 main_for_video_demo(),以及一个定义我们修改后的用例的自定义类,如下图所示:
对于车牌识别示例,使用三个模型来实现 3-inference 管道:
下图说明了此示例的修改代码。
源代码可以在以下位置找到:
~/vitis_ai_cpp_examples/platerecognition/test_jpeg_platerecognition.cpp
~/vitis_ai_cpp_examples/platerecognition/test_video_platerecognition.cpp
1. 构建车牌识别应用
$ cd ~/vitis_ai_cpp_examples/platerecognition
$ ./build.sh
2. 在图像上启动车牌识别应用程序
$ cp ~/Vitis-AI/demo/Vitis-AI-Library/samples/platedetect/sample_platedetect.jpg .
$ export PLATERECOGNITION_DEBUG=TRUE
$ ./test_jpeg_platerecognition sample_platedetect.jpg
PLATERECOGNITION_DEBUG 环境变量,当设置为 TRUE 时,将显示 3-inference 管道生成的信息:
Frame 1
SSD : label=1 x,y,w,h=2,1,272,304 confidence=0.906937
PlateDetect : x,y,w,h=103,257,63,21 confidence=0.99977
PlateNum : size=288,96 color=Blue number=[jingQ2P6J2]
请注意,PlateNum 型号输出编号有两部分:
。
$ cd ~/vitis_ai_cpp_examples/platerecognition
$ export DISPLAY=:0.0
$ xrandr--output DP-1 --mode 800x600
$ unset PLATERECOGNITION_DEBUG
$ ./test_video_platerecognition./video/plate_recognition_video.mp4
本项目中实施的车牌识别适用于亚洲车牌。为了支持其他地区的车牌,还需要做额外的工作。
你会如何解决这个问题?
我希望本教程能帮助您在 Avnet 平台上快速开始使用 Vitis-AI 1.3。
如果您还想看到任何其他相关内容,请在下面的评论中分享您的想法。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !