【KV260视觉入门套件试用体验】4.机器视觉支持ReID加速应用AIBox测试 大信ALSET(QQ:8125036) 感谢安富利科技和烧友烧网给予的Xilinx KriaKV260视觉AI套件视觉入门套件试用机会。Xilinx KriaTMKV260 开发板全称是Kria KV260 Vision AI Starter Kit。该开发套件主要应用之一是面向多媒体与视觉领域的开发。开发板硬件使用 FPGA的灵活性,提供了多种的AI开发固件,可以让开发者测试使用FPGA支持的多媒体能力,并且开发板提供了基于FPGA的开发SDK,使得在该开发平台上快速开发AI应用。 ReID行人重识别(Person re-iden tification)也称行人再识别,是利用计算机视觉技术判断图像或者视频序列中是否存在特定行人的技术。广泛被认为是一个图像检索的子问题。给定一个监控行人图像,检索跨设备下的该行人图像。 从Kria KV260资料上看该开发板的ReID加速应用的AI Box能够执行可扩展的分布式多流的跟踪与识别。 基于ReiD的应用不仅可利用机器学习来跟踪行人并解码多个摄像头数据流,而且还可通过摄像头视频执行行人检测与跟踪。这个应用常用于智慧城市、智慧安防、零售分析和视频分析等领域。
一、ReID加速技术介绍
1. 技术简介 ReID 的加速是指能够在进行多路视频流进行视频关联的推理,其视频推理的流程如下:
2. 系统特性: l 在1080p分辨率下支持达 4 路H.264/H.265视频流的解码 l 通过所有数据流进行行人跟踪 l HDMI 或DIsplayPort 输出 l 提供用户可编程深度学习模型和视频编解码器 l 具有包含硬件设计的完整应用 核心硬件: Kria™KV260 视觉 AI套件 3. 资料地址: https://xilinx.github.io/kria-apps-docs/kv260/2022.1/build/html/docs/aibox-reid/aibox_landing.html 二、开发测试目标
本次测试目标是按Xilinx KriaTMKV260给出的基于ReID加速应用执行视频流内容识别的过程与方法,探索其支持ReID应用的方案,评估其在行人跟踪和识别的效率以及效果,聚焦Reid的应用安装部署与应用模式。 ReID加速应用是基于KV260 Vision AI套件构建的AI Box应用程序设计为构建和定制视频平台提供了一个框架,该平台由四个管道阶段组成:捕获管道,视频处理管道,加速管路,输出管道。该设计具有平台和集成加速器功能。该平台由捕获流水线、输出流水线和一些视频处理功能组成。这种方法使设计更加精简,并为加速器开发提供了使用最大可编程逻辑(PL)。该平台支持来自IP摄像机的输入流以及文件源。输出可以显示在DisplayPort/HDMI监视器上。 AI Box的应用管线设计如下图:
三、开发板硬件连接
硬件连接如下,分别连接HDMI显示器用于图像或视频在板上的显示。连接有线网络用于视频流在以太网络上的传输。连接开发板带的mipi摄像头到J7口上,连接microUSB线到j4口上。 连接完成后,如下图所示:
按使用说明,在后面的操作都在串口的控制台下进行,而不能使用图形桌面下的终端操作,这里接上USB-Mucro端口,使用SSH打开该串口,如下:
四、更新开发板的引导固件
因为在开发板出厂之后,系统软件已经更新的很多版本,开发板出厂所带的固件已经不能支持新的系统软件,因此在做最新的视觉推理测试时,需要更新开发板的引导固件。 先按这个文档提示,在 https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/1641152513/Kria+K26+SOM#Boot-Firmware-Updates 下载到最新版本的引导固件文件,20230516版本引导固件: BOOT-k26-starter-kit-20230516185703.bin 在开发板上电之后,先查看现有的引导固件版本,使用命令:xmutilbootfw_status , 可见引导固件版本是 202110422的,已经是3年前的版本很老了。
更新固件的一种方法,是继续使用xmutil工具按提示来更新固件,经过实践,发现因为引导固件分为A/B区,因此在系统已经启动的情况下,来更新引导固件,只能更新待引导的区,而当前是哪个区,下一次启动时哪个区,不一定确定,因此会不知道更新到哪个区了,会出只更新一个区,而启动时使用的是另外一个区, 另外最好的办法就是不在系统启动后去更新引导区,而是在在启动时,进入引导管理的,方法是: 1. 先准备一个网线,一端插入开发板,另外一段直接插入笔记本电脑,注意不要经过路由器等设备,而是采用直连的方式,因此引导固件没有操作系统,此时没有完整的Ethnet协议栈,无法动态获取IP,它使用了一个固定的静态的IP地址。 2. 把笔记本电脑的网卡设定为静态IP,并且设置为 192.168.0.*网段。 3. 重启开发板时,按住BOOT按钮不放的同时,按下Reset按钮,此时串口界面会提示,进入BootFlash工程模式,并提示管理界面的IP地址,本开发板提示地址为 192.168.0.111 4. 在PC上用浏览器打开该地址,显示如下固件管理界面:
在此界面可以浏览开发板固件内的信息,核心板信息。和更新固件的操作。 5. 按界面提示,分别选择A和B,选择上面下载的固件引导文件,点击upload 即可完成A,B区的引导固件的更新。 6. 正常方式重启开发板,进入开发板用上面的固件版本查看工具查看固件版本,发现A,B固件都已经更新到最新版本。
五、系统初始化与软件安装
按第一章的方法,烧录好SD卡之后,也插上SD卡,连接键盘鼠标,上电启动Ubuntu。启动系统。然后就可以为开发板的Ubuntu LTS设置一下xilinx的开发环境,按以下流程几个命令就可以了。 1.安装系统配置脚本 首先需要对系统初始化,安装系统管理所需要的xlnx-configsnap,在开发板上执行命令: 命令:sudo snapinstall xlnx-config –classic --channel=2.x
2.系统初始化执行 命令:sudo xlnx-config.sysinit
安装过程会提出几次确认
3.对Kria指定特定的PPA库,会更新系统的相关软件包。 命令:sudo add-apt-repositoryppa:xilinx-app
4.指定PPA-SDK库位置,更新系统SDK组件包。 命令:sudoadd-apt-repository ppa:ubuntu-xilinx/sdk
5.执行系统组件包更新。 命令:sudoapt update sudo apt upgrade
6.安装 xrtzocl 驱动 命令:aptinstall xrt-dkms
7.时间社区设置 命令:sudotimedatectl set-ntp true sudo timedatectl set-timezoneAsia/Hong_Kong timedatectl
六、测试应用安装部署
1.搜索kv260测试的固件软件包 开发板提供了kv260系列测试固件包,固件包是针对FPGA开发打包好的bit流文件,通过对FPGA处理器装载不同的固件,实现不同的硬件功能定义。通过以下指令可以搜索到现在库里提供的所有适用于KV260的固件包: 索找kv260-smartcam的驱动包,输入指令: sudo apt search xlnx-firmware-kv260
2.安装ReID 的PL端的固件 在安装固件的二进制文件执行命令: sudo apt install xlnx-firmware-kv260-aibox-reid 这时需要等待一段时间,安装完成即可。
3.安装dock软件
4.配置docker权限 sudo chown root:docker/var/run/docker.sock
5.下载kv260-aibox-reid容器镜像 docker拉取kv260-aibox-reid的测试镜像包:
拉取镜像完毕,查看docker容器镜像包 七、测试操作步骤
1.检查摄像头设备 media-ctl –p –d /dev/media0
2.禁用默认桌面图形系统ubuntu 因为测试程序需要占用屏幕设备输出,因此需要先关闭现有的ubuntu的桌面显示,执行命令sudo xmutil desktop_disable
同样需要恢复默认的桌面输出时, 执行sudo xmutildesktop_enable即可。 3.切换FPGA的固件 通过命令sudo xmutillistapps可以列出系统现有的固件,在Accelerator列显示为0的即为当前所加载的固件。 使用sudo xmutilunloadapp卸载当前固件。 再加载我们需要测试的固件smartcam,执行命令sudo xmutilload appkv260-smartcam即可加载上。加载完使用listapp指令可以查看,固件已经替换。
4.启动测试应用的Docker环境 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\ -v/home/ubuntu/workspace:/root/workspace\ -w/root\ -itxilinx/smartcam:2022.1bash
5.在docker中启动视频采集测试应用: 首先准备好测试视频文件,放到workspace 下 ffmpeg -i alley_1080p.mp4 -c:v libx264 -pix_fmt nv12 -vf scale=1920:1080-r 30 alley_1080p.nv12.h264
在执行python脚本安装必要的资源文件
6.检查测试程序的输出 程序执行完毕,在当前目录下生成了out.h264即采集到视频并进行压缩编码后的数据。 aibox-reid -s/root/workspace/alley_1080p.nv12.h264 -t file -p 1
在显示端输出了行人和行人跟踪的视频结果
八、机器视觉ReID的测试总结
本次通过对ReID的应用AIBOX测试,成功的加载人体识别和连续跟踪的模型,对测试文件进行了行人连续跟踪识别,在识别中可以达到15fps以上,画面中所有任务均识别准确,对同一人在帧间的跟踪识别表现良好。 从测试视频通过简单的模式测试了ReID过程,效果表现不错。因为视频源,没有多路视频信号,以后将进一步测试,垮多路视频源中对人物垮多路下视频的跟踪与识别。
|