人体检测和跟踪
功能介绍
人体检测和跟踪算法示例订阅图片,利用BPU进行算法推理,发布包含人体、人头、人脸、人手框和人体关键点检测结果msg,并通过多目标跟踪(multi-target tracking,即MOT)功能,实现检测框的跟踪。X86版本暂不支持多目标跟踪以及Web端展示功能。
算法支持的检测类别,以及不同类别在算法msg中对应的数据类型如下:
| 类别 | 说明 | 数据类型 |
|---|---|---|
| body | 人体框 | Roi |
| head | 人头框 | Roi |
| face | 人脸框 | Roi |
| hand | 人手框 | Roi |
| body_kps | 人体关键点 | Point |
人体关键点算法结果索引如下图:

代码仓库: (https://github.com/D-Robotics/mono2d_body_detection)
应用场景:人体检测和跟踪算法是人体运动视觉分析的重要组成部分,可实现人体姿态分析以及人流量统计等功能,主要应用于人机交互、游戏娱乐等领域。
姿态检测案例:4.3. 姿态检测
小车人体跟随案例:4.4. 小车人体跟随
基于人体姿态分析以及手势识别实现游戏人物控制案例:玩转X3派,健身游戏两不误
支持平台
| 平台 | 运行方式 | 示例功能 |
|---|---|---|
| RDK X3, RDK X3 Module | Ubuntu 20.04 (Foxy), Ubuntu 22.04 (Humble) | 启动MIPI/USB摄像头,并通过Web展示推理渲染结果 |
| RDK X5, RDK X5 Module | Ubuntu 22.04 (Humble) | 启动MIPI/USB摄像头,并通过Web展示推理渲染结果 |
| RDK Ultra | Ubuntu 20.04 (Foxy) | 启动MIPI/USB摄像头/本地回灌,并通过Web展示推理渲染结果 |
| X86 | Ubuntu 20.04 (Foxy) | 启动本地回灌,并通过Web展示推理渲染结果 |
算法信息
| 模型 | 平台 | 输入尺寸 | 推理帧 率(fps) |
|---|---|---|---|
| fastrcnn | X3 | 1x3x544x960 | 74.96 |
| fastrcnn | X5 | 1x3x544x960 | 125.21 |
准备工作
RDK平台
-
RDK已烧录好Ubuntu 20.04/Ubuntu 22.04系统镜像。
-
RDK已成功安装TogetheROS.Bot。
-
RDK已安装MIPI或者USB摄像头。
-
确认PC机能够通过网络访问RDK。
X86平台
-
X86环境已配置Ubuntu 20.04系统镜像。
-
X86环境已成功安装tros.b。
使用介绍
人体检测和跟踪(mono2d_body_detection)package订阅sensor package发布的图片,经过推理后发布算法msg,通过websocket package实现在PC端浏览器上渲染显示sensor发布的图片和对应的算法结果。
RDK平台
使用MIPI摄像头发布图片
- Foxy
- Humble
# 配置tros.b环境
source /opt/tros/setup.bash
# 配置tros.b环境
source /opt/tros/humble/setup.bash
# 从tros.b的安装路径中拷贝出运行示例需要的配置文件。
cp -r /opt/tros/${TROS_DISTRO}/lib/mono2d_body_detection/config/ .
# 配置MIPI摄像头
export CAM_TYPE=mipi
# 启动launch文件
ros2 launch mono2d_body_detection mono2d_body_detection.launch.py
使用USB摄像头发布图片
- Foxy
- Humble
# 配置tros.b环境
source /opt/tros/setup.bash
# 配置tros.b环境
source /opt/tros/humble/setup.bash
# 从tros.b的安装路径中拷贝出运行示例需要的配置文件。
cp -r /opt/tros/${TROS_DISTRO}/lib/mono2d_body_detection/config/ .
# 配置USB摄像头
export CAM_TYPE=usb
# 启动launch文件
ros2 launch mono2d_body_detection mono2d_body_detection.launch.py
使用本地回灌图片
- Foxy
- Humble
# 配置tros.b环境
source /opt/tros/setup.bash
# 配置tros.b环境
source /opt/tros/humble/setup.bash
# 从tros.b的安装路径中拷贝出运行示例需要的配置文件。
cp -r /opt/tros/${TROS_DISTRO}/lib/mono2d_body_detection/config/ .
cp -r /opt/tros/${TROS_DISTRO}/lib/dnn_node_example/config/ .
# 配置本地回灌图片
export CAM_TYPE=fb
# 启动launch文件
ros2 launch mono2d_body_detection mono2d_body_detection.launch.py publish_image_source:=config/person_body.jpg publish_image_format:=jpg publish_output_image_w:=960 publish_output_image_h:=544
# RDK Ultra平台需要指定回灌图片,例如:
# ros2 launch mono2d_body_detection mono2d_body_detection.launch.py picture:=./config/target.jpg
X86平台
使用本地回灌图片
# 配置tros.b环境
source /opt/tros/setup.bash
# 从tros.b的安装路径中拷贝出运行示例需要的配置文件。
cp -r /opt/tros/${TROS_DISTRO}/lib/mono2d_body_detection/config/ .
cp -r /opt/tros/${TROS_DISTRO}/lib/dnn_node_example/config/ .
# 配置本地回灌图片
export CAM_TYPE=fb
# 启动launch文件
ros2 launch mono2d_body_detection mono2d_body_detection.launch.py