智能硬件论坛
直播中

xusiwei1236

13年用户 192经验值
擅长:嵌入式技术
私信 关注
[经验]

【KV260视觉入门套件试用体验】运行SmartCamera示例程序

本文将介绍如何一步步运行Xilinx官网的SmartCamera示例程序,全文分为三个部分,分别为安装Docker、配置Docker国内镜像源,以及运行SmartCamera示例程序。读完本文,读者将会了解如何在KV260上安装最新版本Docker,以及如何在KV260上运行Xilinx官方的SmartCamera示例程序。

一、安装Docker

这里我参考的是Docker官方文档的步骤,这样可以安装最新版本的Docker。KV260系统镜像使用的是同时支持KV260和KR260的Ubuntu Desktop 22.04 LTS版本,下载页面:Install Ubuntu on Xilinx | Ubuntu 。具体安装方法上一篇帖子已有介绍,这里不再赘述了。

1.1 先决条件

Docker官方文档上说明,Ubuntu系统上安装最新版Docker要求必须是20.04及以上版本,我们KV260使用的的22.04版本是没有问题的。

1.2 卸载旧版本Docker

如果用Ubuntu默认软件源安装了Docker软件包,则需要先卸载这些软件包,才可以安装Docker官网最新版本的。

要卸载的非官方软件包是:

  • docker.io
  • docker-compose
  • docker-doc
  • podman-docker

此外,Docker引擎依赖于 containerdrunc .Docker 引擎将这些依赖项捆绑为一个捆绑包: containerd.io 。如果您已安装 containerdrunc 以前,请卸载它们以避免与 Docker 引擎捆绑的版本发生冲突。

运行以下命令以卸载这些软件包:

# 卸载已有docker包
for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do
	sudo apt-get remove $pkg
done

1.3 添加Docker官方apt源

Docker官方文档介绍了好几种安装最新版本Docker的方法,这里仅以apt方式为例。

具体包括以下四个步骤:

  1. 更新软件包索引,并安装 apt 软件包,让 apt 支持从HTTPS的软件源下载软件包:

    sudo apt-get update
    sudo apt-get install ca-certificates curl gnupg
    
  2. 添加 Docker 的官方 GPG 密钥:

    sudo install -m 0755 -d /etc/apt/keyrings
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
    sudo chmod a+r /etc/apt/keyrings/docker.gpg
    
  3. 使用以下命令设置存储库:

    echo \
      "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
      "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
      sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
    
  4. 更新apt包索引:

    sudo apt-get update
    

1.4 安装Docker服务和命令行工具

配置好Docker官方的apt源之后,就可以安装最新版的Docker服务和命令行工具了。

安装命令:

sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

安装完成后,通过运行 hello-world 映像验证 Docker 引擎安装是否成功:

sudo docker run hello-world

1.5 为用户添加docker组权限

Docker安装后,默认需要加sudo才可以运行docker命令,不是很方便。

将当前用户添加docker组权限后,当前用户下次登录系统不加sudo也可以运行docker命令,使用起来会比较方便。

执行以下命令,可以为当前用户添加docker组权限:

sudo usermod -aG docker $USER

二、配置国内Docker镜像源

默认情况下docker pull命令会从https://registry.hub.docker.com 下载映像,国内部分网络环境速度较慢,可以通过配置国内Docker镜像源加速。

2.1 修改Docker配置文件

配置国内Docker镜像源,需要修改Docker服务配置文件,该配置文件位于 /etc/docker/ 目录下,文件名为 daemon.json :

# 打开配置文件
sudo vim /etc/docker/daemon.json
# 添加以下配置
{
    "registry-mirrors": [
        "https://ccr.ccs.tencentyun.com",
        "https://docker.mirrors.ustc.edu.cn",
        "https://hub-mirror.c.163.com",
        "https://mirror.baidubce.com",
        "https://registry.docker-cn.com"
    ]
}

2.2 重启Docker服务

修改完配置文件后,需要重启docker服务配置文件才能生效。

重启Docker服务的命令为:

sudo service docker restart

2.3 查看Docker信息

可以通过docker info命令查看国内镜像配置是否生效,命令为:

docker info

我这里输出如下:

Untitled

可以看到配置的镜像信息已经生效了。

三、运行SmartCamera示例程序

Xilinx官方文档提供了SmartCamera示例程序,可以运行。接下来我们尝试在KV260上运行SmartCamera示例程序。

3.1 硬件准备

和上一篇帖子类似,开始实验前,需要为KV260准备:

  • 烧录好系统镜像的SD卡,作为系统启动介质
  • USB-Micro数据线,用于接收串口日志,登录系统
  • 电源适配器,用于给开发板供电
  • RJ45网线,另一端连接到可以访问公网的路由器上。
  • IAS摄像头,SmartCamera示例需要

3.2 软件准备

由于SmartCamera示例会在KV260上启动一个RTSP服务端,因此,PC上需要准备RTSP客户端软件,推荐使用VLC。VLC可以从其官网下载,下载页面:官方下载:VLC media player,最棒的开源播放器 - VideoLAN

另外,确保 PC 和 KV260 位于同一网段内,建议让PC和KV260连接到同一个路由器上,并且路由器可以访问互联网。

3.3 添加Xilinx软件包apt源

Ubuntu官网下载的KV260镜像中,默认不带有Xilinx软件包的源,无法通过apt命令下载Xilinx软件包;需要添加Xilinx软件包的apt源后,才可以通过apt安装Xilinx软件包。

添加Xilinx软件包apt源的命令如下:

sudo add-apt-repository ppa:xilinx-apps/ppa
sudo add-apt-repository ppa:ubuntu-xilinx/updates

# 更新包索引
sudo apt update

3.4 下载并加载SmartCamera固件

KV260 SmartCamera示例程序需要加载专门的固件之后才可以正常运行。KV260 SmartCamera示例程序专属固件,可以通过apt命令从Xilinx专属apt源下载并安装。

首先执行以下命令,在软件包索引中搜索KV260固件相关的软件包

sudo apt search xlnx-firmware-kv260

执行结果为:

Untitled

成功搜索到了软件包,则前面添加Xilinx软件包apt源和更新apt包索引一切正常。

接下来,安装KV260 SmartCamera固件软件包:

sudo apt install xlnx-firmware-kv260-smartcam

3.5 加载SmartCamera固件

KV260固件由比特流和设备树覆盖 (dtbo) 文件组成。一旦 Linux 完全启动,固件将根据用户请求动态加载。xmutil 实用程序可用于此目的。

xmutil 常用的几个命令:

  • desktop_disable 禁用桌面,。
  • desktop_enable 启用桌面,。
  • listapps 查询固件资源管理器守护进程,当前平台上有哪些可用的预编译的应用比特流,并输出汇总信息。
  • unloadapp 卸载固件,需要加一个槽编号(默认为0);
  • loadapp 加载请求的应用配置比特流到可编程逻辑,如果设备可用的话;

接下来使用xmutil尝试加载SmartCamera固件:

  1. 首先,禁用桌面,执行命令:sudo xmutil desktop_disable

    Untitled

  2. 然后,查看当前可用固件有哪些,执行命令:sudo xmutil listapps

    Untitled

    其中,Active_slot为0,代表当前正在使用的;

  3. 接着,卸载当前固件,执行命令: sudo xmutil unloadapp

    Untitled

    执行成功后,风扇开始疯狂旋转,噪音明显升高。

  4. 最后,加载smartcam固件,执行命令:sudo xmutil loadapp kv260-smartcam

    Untitled

    可以看到,输出了“kv260-smartcam: loaded to slot 0”,表示成功加载了。另外,有几行警告输出,没有影响,可以不用关心。

3.6 拉取SmartCamera Docker映像

使用以下命令拉取智能摄像头的 2022.1 Docker 映像:

docker pull xilinx/smartcam:2022.1

拉取过程较慢,需要耐心等待。

拉取完成后,可以使用如下命令查看本地已有的Docker映像:

docker images

执行结果如下:

Untitled

3.7 启动Docker容器

使用以下命令,启动一个基于刚刚拉取的xilinx/smartcam:2022.1映像的 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 \
-it xilinx/smartcam:2022.1 bash

它将在新容器中启动智能摄像头映像。

执行结果如下:

Untitled

3.8 运行smartcam应用程序

这里介绍命令行方式运行SmartCamera应用程序。官方文档另外还介绍了Juypter Notebook的运行方式,感兴趣的可以自行查阅官方文档。

在刚刚启动的容器shell环境中,执行smartcam -h可以查看smartcam命令的使用方式:

Untitled

MIPI输入(IAS摄像头)RTSP输出

在刚刚启动的容器shell环境中,执行命令:

smartcam --mipi -W 1920 -H 1080 --target rtsp

执行后,控制台输出了RTSP链接:

Untitled

复制下面的链接,PC上打开VLC播放器,通过 媒体→打开网络串流 菜单,打开RTSP流:

Untitled

点击播放,就可以看到KV260摄像头的画面了。

SmartCamera可以识别画面中的人脸:

Untitled

3.9 视频文件输入RTSP输出

首先,下载测试视频文件,视频下载页面为(推荐下载1920x1080分辨率的): Alley People Walk Free Stock Video - Pixabay

接着,使用ffmpeg命令转为h264格式:

ffmpeg -i alley_1080p.mp4 -c:v libx264 -pix_fmt nv12 -vf scale=1920:1080 -r 30 output.nv12.h264

推荐在PC上执行ffmpeg命令,速度较快;Windows版本的ffmpeg可以从ffmpeg官网下载:https://ffmpeg.org/download.html

在我的PC上十几秒钟就转换完成了,视频一共1035帧,转换过程速率达到了79fps,耗时13秒多:

Untitled

在KV260上用ffmpeg转换同样的视频,实测速率只有3.1fps,总耗时5分钟多,不推荐:

Untitled

转换成功后,可以通过scp将转换成功的output.nv12.h264文件拷贝到KV260上:

Untitled

拷贝到设备上之后,类似的可以运行smartcam命令,并以文件为输入RTSP为输出:

smartcam --file /tmp/output.nv12.h264 -i h264 -W 1920 -H 1080 -r 30 --target rtsp

此时用VLC打开网络串流,可以看到画面中的人脸实时识别:

Untitled

我们也可以使用ffmpeg将RTSP流转录到视频文件中:

ffmpeg -i rtsp://192.168.0.110:554/test -frames 1035 -r 30 rtsp_output.mp4

四、参考链接

  1. Snaps - xlnx-config Snap for Certified Ubuntu on Xilinx Devices - Xilinx Wiki - Confluence (atlassian.net)
  2. Getting Started with Certified Ubuntu 22.04 LTS for Xilinx Devices - Xilinx Wiki - Confluence (atlassian.net)
  3. Smart Camera — Kria™ KV260 2022.1 documentation (xilinx.github.io)
  4. Install Docker Engine on Ubuntu | Docker Documentation
  5. Linux post-installation steps for Docker Engine | Docker Documentation
  6. Docker 配置国内源加速(2023/05/14)_docker国内镜像源_Hit不死的小强的博客-CSDN博客

rtsp_output

更多回帖

发帖
×
20
完善资料,
赚取积分