**【KV260视觉入门套件试用体验】+03.SmartCamera人脸识别示例程序(zmj)
**
本篇主要介绍在KV260视觉入门套件使用Ubuntu-22.04-LTS系统镜像实现SmartCamera人脸识别的示例程序。
https:
//------SmartCamera人脸识别基本框架
---------------------------以下为正文----------------------------
1. 下载并烧录系统镜像
从官网下载系统镜像“Kria Ubuntu Desktop 22.04 LTS 映像”,然后使用BalenaEther烧录到TF卡/microSD卡上。
烧录完成后,将TF卡插入到KV260板卡的TF卡槽。
https:
Xilinx教程使用软件“Balena_Etcher”,可以直接烧录petalinux-sdimage-2021.1-update1.wic。
也可以使用Win32DiskImager进行烧录,烧录测试OK。
开发套件配备了16GB的TF卡,我个人使用了一张64GB的TF卡。
//------系统镜像:Kria Ubuntu Desktop 22.04 LTS 映像
//------烧录工具:Balena_Etcher和Win32DiskImager
2. 启动Ubuntu系统
KV260视觉入门套件的板卡并无电源开关,连接电源后系统即可正常启动。
对于第一次启动系统来讲,需要通过串口终端进行调试,等确认RJ45有线网络状态及功能正常后才能通过SSH方式远程访问KV260进行调试。
当然,KV260还可以通过USB-WIFI的无线网卡实现WIFI连接,同样支持SSH方式远程调试。
2.1 串口终端设置
对于第一次启动系统来讲,需要通过串口终端进行调试,等确认RJ45有线网络状态及功能正常后才能通过SSH方式远程访问KV260进行调试。
当然,KV260还可以通过USB-WIFI的无线网卡实现WIFI连接,同样支持SSH方式远程调试。
入门套件使用 FTDI USB 至 COM 端口设备,该设备需要在您的计算机上安装 FTDI 虚拟 COM 端口驱动程序。如果该驱动程序没有安装在您的主机上或者 Windows 没有自动安装,请点击以下链接:
https:
列举了四个 COM 端口,其中第 2 个编号的 COM 端口对应于 UART。
- 波特率 = 115200
- 数据位 = 8
- 停止位 = 1
- 流程控制 = 无
- 奇偶校验 = 无
串口终端程序根据自己实际情况选择,例如TeraTerm、Putty、Xshell、MobaXterm。
此处我是用的MobaXterm。
2.2 系统登陆
入门套件 QSPI 使用 SD 启动模式启动开发板,并加载 SD 内容以启动至 Linux。
初始登录时,平台要求设置新密码(标准的系统策略要求在第一次使用默认凭证登录后更改密码)。
用户名:ubuntu
密码:ubuntu
2.3 网络配置
网络配置是很重要的一个环节,网络环境配置完成后必须升级系统软件包。
//
通过 “ping” 或 “DNS lookup” 验证 Internet 连接,例如:
ping 8.8.8.8
如果可以观察到数据包传输/接收工作正常并且使用上述 ping 命令没有数据包丢失,这意味着 Internet 连接正处于正常工作状态。
//
sudo snap install xlnx-config
//
sudo xlnx-config.sysinit
//
sudo apt update
2.4 安装固件
KV260的PL侧固件以软件包的形式提供。
sudo apt search xlnx-firmware-kv260
sudo apt install xlnx-firmware-kv260-*
sudo xmutil listapps
ubuntu@kria:~/zmj_ws/vitis_ai$ sudo apt search xlnx-firmware-kv260
Sorting... Done
Full Text Search... Done
xlnx-firmware-kv260-aibox-reid/jammy 0.9-0xlnx1 arm64
FPGA firmware for Xilinx boards - kv260 aibox-reid application
xlnx-firmware-kv260-benchmark-b4096/jammy 0.9-0xlnx1 arm64
FPGA firmware for Xilinx boards - kv260 benchmark-b4096 application
xlnx-firmware-kv260-bist/jammy 0.9-0xlnx1 arm64
FPGA firmware for Xilinx boards - kv260 bist application
xlnx-firmware-kv260-defect-detect/jammy 0.9-0xlnx1 arm64
FPGA firmware for Xilinx boards - kv260 defect-detect application
xlnx-firmware-kv260-nlp-smartvision/jammy 0.9-0xlnx1 arm64
FPGA firmware for Xilinx boards - kv260 nlp-smartvision application
xlnx-firmware-kv260-smartcam/jammy,now 0.9-0xlnx1 arm64 [installed]
FPGA firmware for Xilinx boards - kv260 smartcam application
ubuntu@kria:~/zmj_ws/vitis_ai$ sudo apt install xlnx-firmware-kv260-*
ubuntu@kria:~/zmj_ws/vitis_ai$ sudo xmutil listapps
Accelerator Accel_type Base Base_type #slots(PL+AIE) Active_slot
kv260-aibox-reid XRT_FLAT kv260-aibox-reid XRT_FLAT (0+0) -1
kv260-nlp-smartvision XRT_FLAT kv260-nlp-smartvision XRT_FLAT (0+0) -1
kv260-defect-detect XRT_FLAT kv260-defect-detect XRT_FLAT (0+0) -1
kv260-smartcam XRT_FLAT kv260-smartcam XRT_FLAT (0+0) -1
kv260-benchmark-b4096 XRT_FLAT kv260-benchmark-b4096 XRT_FLAT (0+0) -1
k26-starter-kits XRT_FLAT k26-starter-kits XRT_FLAT (0+0) 0,
kv260-bist XRT_FLAT kv260-bist XRT_FLAT (0+0) -1
ubuntu@kria:~/zmj_ws/vitis_ai$
3. 测试SmartCamera人脸识别
3.1 切换固件
使用“xmutil”工具切换固件。
sudo xmutil unloadapp
sudo xmutil loadapp kv260-smartcam
k26-starter-kits
ubuntu@kria:~/zmj_ws/vitis_ai$ sudo xmutil unloadapp
remove from slot 0 returns: 0 (Ok)
ubuntu@kria:~/zmj_ws/vitis_ai$ sudo xmutil loadapp kv260-smartcam
kv260-smartcam: loaded to slot 0
ubuntu@kria:~/zmj_ws/vitis_ai$ sudo xmutil listapps
Accelerator Accel_type Base Base_type #slots(PL+AIE) Active_slot
kv260-aibox-reid XRT_FLAT kv260-aibox-reid XRT_FLAT (0+0) -1
kv260-nlp-smartvision XRT_FLAT kv260-nlp-smartvision XRT_FLAT (0+0) -1
kv260-defect-detect XRT_FLAT kv260-defect-detect XRT_FLAT (0+0) -1
kv260-smartcam XRT_FLAT kv260-smartcam XRT_FLAT (0+0) 0,
kv260-benchmark-b4096 XRT_FLAT kv260-benchmark-b4096 XRT_FLAT (0+0) -1
k26-starter-kits XRT_FLAT k26-starter-kits XRT_FLAT (0+0) -1
kv260-bist XRT_FLAT kv260-bist XRT_FLAT (0+0) -1
ubuntu@kria:~/zmj_ws/vitis_ai$
3.2 启动Docker
启动Docker拉取SmartCamera的Docker镜像,注意使用sudo权限。
//------启动Docker拉取SmartCamera的Docker镜像
//---拉取Docker镜像
sudo docker pull xilinx/smartcam:2022.1
//---查看已有Docker镜像
sudo docker images
//---启动Docker容器
sudo docker run \
--env="DISPLAY" \
-h "xlnx-docker" \
--env="XDG_SESSION_TYPE" \
--net=host \
--privileged \
--volume="$HOME/.Xauthority:/root/.Xauthority:rw" \
-v /tmp:/tmp \
-v /dev:/dev \
-v /sys:/sys \
-v /etc/vart.conf:/etc/vart.conf \
-v /lib/firmware/xilinx:/lib/firmware/xilinx \
-v /run:/run \
-it xilinx/smartcam:2022.1 bash
//------Log信息
ubuntu@kria:~/zmj_ws/vitis_ai$ sudo docker pull xilinx/smartcam:2022.1
2022.1: Pulling from xilinx/smartcam
Digest: sha256:da2e52629011aeec332152a0f468d3ff156917dba9b596cf6d0de958d5dc29d7
Status: Image is up to date for xilinx/smartcam:2022.1
docker.io/xilinx/smartcam:2022.1
ubuntu@kria:~/zmj_ws/vitis_ai$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
xilinx/smartcam 2022.1 aa0270aef908 12 months ago 1.41GB
ubuntu@kria:~/zmj_ws/vitis_ai$ sudo docker run \
--env="DISPLAY" \
-h "xlnx-docker" \
--env="XDG_SESSION_TYPE" \
--net=host \
--privileged \
--volume="$HOME/.Xauthority:/root/.Xauthority:rw" \
-v /tmp:/tmp \
-v /dev:/dev \
-v /sys:/sys \
-v /etc/vart.conf:/etc/vart.conf \
-v /lib/firmware/xilinx:/lib/firmware/xilinx \
-v /run:/run \
-it xilinx/smartcam:2022.1 bash
_ __ _ ____ ___ __ __
| |/ /_ __(_) __ _ / ___| / _ \| \/ |
| ' /| __| |/ _ | \___ \| | | | |\/| |
| . \| | | | (_| | ___) | |_| | | | |
|_|\_\_| |_|\__ _| |____/ \___/|_| |_|
Build Date: 2022/09/26 15:21
root@xlnx-docker:/#
3.3 运行SmartCamera人脸识别
在已经启动的Docker容器shell环境中执行命令运行SmartCamera人脸识别,执行后实现了RTSP推流功能,通过VLC播放器查看RTSP推流。
//
smartcam
//
root@xlnx-docker:/# smartcam
(gst-plugin-scanner:10): GLib-GObject-CRITICAL **: 12:08:09.592: g_param_spec_float: assertion 'default_value >= minimum && default_value <= maximum' failed
(gst-plugin-scanner:10): GLib-GObject-CRITICAL **: 12:08:09.592: validate_pspec_to_install: assertion 'G_IS_PARAM_SPEC (pspec)' failed
stream ready at:
rtsp://172.17.0.1:554/test
rtsp://192.168.7.25:554/test
Resize: mean_r=128.000000
Resize: mean_g=128.000000
Resize: mean_b=128.000000
Resize: scale_r=1.000000
Resize: scale_g=1.000000
Resize: scale_b=1.000000
!! Loop filter is not allowed with GDR enabled !!
!! The specified ScalingList is not allowed; it will be adjusted!!
!! CABAC encoding is not allowed with this profile; CAVLC will be used instead !!
!! The specified Level is too low and will be adjusted !!
//
On the client machine, to receive and play the RTSP stream, we recommend to install FFplay which is part of FFmpeg package.
For Linux, you can install FFmpeg with the package manager of your distribution.
For Windows, you can find install instructions on
https://ffmpeg.org/download.html
Other than FFplay, VLC can also be used to play RTSP stream, but sometimes it doesn’t work on some client machines, while the FFplay works well.
此处我是使用的VLC-Media-Player。
//------拉取Docker镜像,启动Docker,运行SmartCamera人脸识别。
//------通过VLC播放器查看RTSP推流
//------运行结果(异常,推测是摄像头故障)
4. 问题分析
我这边运行MIPI接口的“AR1335 IAS camera”结果异常,推测是摄像头故障。
官网示例运行结果如图所示:
//------end