拜读曹哲的Realtime Multi-Person 2D Pose Estimation using Part Affinity Fileds

介绍一种实时多人人体姿态识别方法,采用部分亲和力场解决关键点检测难题,并通过多层卷积网络预测人体各部分之间的连接关系。该方法在COCO和MPI数据集上进行了验证。

曹哲【实时多人人体姿态识别】视频回放>>https://pan.baidu.com/s/1mhVRhpu;

PDF及参考资料>>https://pan.baidu.com/s/1i5qqaw9;

算法方面的话可以看视频还有PPT,我说不好,我记录一下视频在问答环节的一些问题和在观看视频中听到的一些关键信息。

非关键点检测后极大值抑制
17个点,30个人,点分类
中点作为确信值(空间错误),增加中点的数量不能解决这个问题
所以提出了部分亲和力场
通过拟合关系得到确信值(可以完美预测正确的连接)
KD匹配问题,NP难问题(只考虑相邻关键点连接,人体用树状结构连接,不在全局优化,只在部分关键点考虑,贪心的方法)
预测人体部分亲合场的网路结构,多层卷积的结构
网络结构分成两部分(关键点检测,躯干的亲和力场(位置,方向))
在Coco和MPI数据上进行测试
问题记录:
1:怎样进行人体关键点的跟踪?openpose没有进行关键点跟踪,是对每一帧关键点检测,然后连接
2:对于遮挡的身体节点训练集上的标定数据是什么?30%在COCO有标定,MPI在80%情况下有标定
3:矢量用角度表示?矢量场用x,y,类似于光流场,2个方向
4:矢量场如何进行网络训练?需要提前标注矢量场数据吗?不需要提前标注,在两个关键点画椭圆,调参数,加单位矢量。
5:何时可以支持caffe框架?
6:单个gpu处理如何优化?简化网络结构,把kenel减小加速25%,减少网络阶段,现在有6个阶段,可以提高25%速度,考虑用原图的大小,
不进行缩放可以提高25%,可以牺牲准确率
7:GPU型号:Tantx,GTX1080
8:手部关键点数据会公开吗?会公开,在CVPR之前公开。
9: 在固定网络分辨率和图片分辨率,能够检测最小骨架分辨率是多少,请计算出来?具体大小很难表达出来,在40*40的像素点
方框,可以检测出来。
10:这个方法可以检测手势吗?不是很难得问题,可以把手关键点的热点图叠加卷积进行识别,有标定的结果,就变成简单
的训练神经网络的问题了。
11:讲一下Failure Case?人关键点重叠,不确定手是直的还是曲择。2D的缺陷,从3D来看,深度是不一样的(具有挑战,未解决)。
12:关键点重叠可以处理吗?很难得到正确结果。默认一个关键点只能连接一个关键点。
13:手的标注集中式怎么得到的?利用多摄像机系统,过滤许多不正确的检测结果,用多摄像机得到的结果作为下个训练集的输入,反复迭代
可以得到比较好的结果,这也是CMU的训练的方法,模糊训练,含糊迭代,最后得到比较好的结果。
14:MASK_RCNN,在COCO数据集上最好的,基于Faster-RCNN加了几个分支,一个做图片分割,一个做关键点检测,是自顶向下的方法。
15:手部数据集有多少张图像?数据集很大,需要花一定时间把所有图片处理完再公开出来。







### OpenPose 实时多人 2D 姿态估计 OpenPose 是由卡内基梅隆大学感知计算实验室开发的一项开创性技术,旨在实现实时多人2D姿态估计。该系统能够在同一场景中同时检测多个人体的关键点,包括身体、手部、面部和脚部的位置[^1]。 #### 部分亲和域 (Part Affinity Fields) 为了提高姿态估计的准确性并解决遮挡问题,OpenPose引入了部分亲和域(Part Affinity Fields, PAFs)的概念。PAFs用于表示不同部位之间的连接关系,具体来说: - **定义**:对于每一对相连的身体部件(如肩膀到肘),构建一个二维向量场来描述这对部件的方向性和置信度。 - **作用机制**:通过分析这些向量场中的梯度方向可以推断出各个肢体间的相对位置以及它们之间是否存在关联。这使得即使某些关节被遮挡或不可见的情况下也能正确重建完整的骨架结构[^3]。 ```python import cv2 from openpose import pyopenpose as op params = dict() params["model_folder"] = "path/to/models" opWrapper = op.WrapperPython() opWrapper.configure(params) datum = op.Datum() cap = cv2.VideoCapture(0) while True: ret, frame = cap.read() datum.cvInputData = frame opWrapper.emplaceAndPop([datum]) # Display keypoints and part affinity fields on the image cv2.imshow("Keypoints", datum.cvOutputData) if cv2.waitKey(1) & 0xFF == ord('q'): break cv2.destroyAllWindows() ``` 此代码片段展示了如何利用OpenPose库读取摄像头输入,并显示处理后的图像,其中包含了检测到的人体关键点及其对应的PAF可视化结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值