ROS Group 产品服务
Product Service 开源代码库
Github 官网
Official website 技术交流
Technological exchanges 激光雷达
LIDAR ROS教程
ROS Tourials 深度学习
Deep Learning 机器视觉
Computer Vision
在小强上使用body_pose进行人体识别
-
body_pose 是一个人体姿态识别的软件包。这个软件包可以从图片中识别出人体的耳朵,眼睛,鼻子,四肢的共17个特征点。其实现是通过深度学习网络利用tensorflow框架。此软件还支持多人同时识别。
安装
- 安装tensorflow
由于小强上面没有Nvidia显卡, 所以我们安装CPU版本的Tensorflow。小强的CPU支持一些高效的指令集,默认的Tensorflow为了能够在更多平台上运行,没有使用这些指令集。所以性能实际上没有发挥到最高。我们可以安装开启了这些优化指令的版本。
sudo pip install --ignore-installed --upgrade "https://github.com/lakshayg/tensorflow-build/raw/master/tensorflow-1.4.0-cp27-cp27mu-linux_x86_64.whl"
- 安装软件包相关依赖
sudo pip install scipy scikit-image matplotlib pyyaml easydict cython munkres==1.0.12
- 下载相关模型
# 单人模型 cd src/models/mpii ./download_models.sh $ cd - # 多人模型 ./compile.sh cd models/coco ./download_models.sh cd -
运行
- 运行单人识别测试程序
# 在src文件夹内运行 TF_CUDNN_USE_AUTOTUNE=0 python demo/singleperson.py
运行成功后可以看到下图
- 运行多人识别的例子
TF_CUDNN_USE_AUTOTUNE=0 python demo/demo_multiperson.py
成功运行后显示下面的图像
- 运行ROS服务
roslaunch body_pose body_pose_test.launch
这个launch文件在小强上可以直接运行。但是如果不是在小强上你需要把usb_cam的节点换成自己的摄像头节点。
服务启动成功后会自动的识别摄像头中的图像。处理的结果会显示在/body_pose_tester/processed_image
topic 里面。可以利用摄像头显示处理结果。rosrun image_view image_view image:=/body_pose_tester/processed_image
可以看到图中标了一些圆圈。这些都是被识别出的人体特征位置。
在自己的程序中使用此服务
可以在自己的launch文件中添加这样的内容来启动节点
<node name="body_pose" pkg="body_pose" type="body_pose_node.py"> <param name="process_width" value="200" /> <param name="process_height" value="150" /> <param name="conf_min_count" value="3" /> </node>
参数说明
process_width 内部处理宽度,process_height内部处理高度。可能采集的图片很大,这样处理起来非常费时间。可以通过这两个参数对图片进行压缩以提高处理速度。
conf_min_count最小可接受点数。如果在一个人上识别出的特征点小于这个值,则认为这个识别对象并不是人。发布的服务
服务默认发布在~get_body_pose
可以类型为BodyPose.srv。详细的使用方法可以参照 body_pose_test_node.py 文件。
- 安装tensorflow
-
配置运行roslaunch body_pose body_pose_test.launch出现
-
运行TF_CUDNN_USE_AUTOTUNE=0 python demo/demo_multiperson.py时出现
-
@robot0612 是不是模型没有下载完整,重新执行下载模型的指令试试
-
模型重新下载了。运行还是出现这个问题:
-
@robot0612 感觉你的python环境可能有问题,错误的代码语法是python3的,但是却出现在python2.7的路径里面
-
@robot0612 里面的一个依赖库新版本不支持python2.7了。需要下载旧版本
pip install munkres==1.0.12
-
这个姿态识别包用的什么算法啊?大概实现的原理能说一下吗?
-
-
此回复已被删除! -
此回复已被删除! -
此回复已被删除! -
此回复已被删除! -
执行单人姿态识别成功,没有报错。
执行多人姿态识别时候报错如下
Traceback (most recent call last):
File “demo/demo_multiperson.py”, line 17, in
from multiperson.detections import extract_detections
File “demo/…/multiperson/detections.py”, line 10, in
from nms_grid import nms_grid
ImportError: No module named nms_gridROS执行报错如下,好像是同名节点的问题:
[camera_node-5] process has died [pid 31196, exit code 1, cmd /home/xiaoqiang/Documents/ros/devel/lib/usb_cam/usb_cam_node __name:=camera_node __log:=/home/xiaoqiang/.ros/log/b7b359c8-2222-11eb-ae28-cfd9b2d8c1b5/camera_node-5.log].
log file: /home/xiaoqiang/.ros/log/b7b359c8-2222-11eb-ae28-cfd9b2d8c1b5/camera_node-5*.log
shutdown request: new node registered with same name
有懂的朋友麻烦解释一下,感谢。 -
@moist 可能你的模型没有下载完整
-
此回复已被删除! -
@weijiz 您好,我roslaunch body_pose body_pose_test.launch后
出现如下情况
[WARN] [1605520393.882227]: Cannot get image from ~image
[WARN] [1605520394.884241]: Cannot get image from ~image
但是我点击鼠标右键会出现以下命令
[ INFO] [1605520396.100524512]: Saved image frame0004.jpg
然后我就使用rosrun image_view image_view image:=/body_pose_tester/processed_image
发现摄像头就消失了,也没有发现出现被识别出的人体特征位置的照片
您能否为解答一下吗?
我注释这句话<include file=“$(find xiaoqiang_tts)/launch/tts_xunfei.launch” /–> -
此回复已被删除! -
@marcos452 你好 请问你解决了这个问题吗 我也遇到了此问题
-
@yellow launch文件内的图像话题要改成kinect的图像话题