本文主要是介绍CrowdPose,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
这篇文章是针对人体姿态估计提出的一个新的数据集和一个新的两阶段算法
本文的主要贡献(开源了一个新的数据集并且提出一个比较好的算法)
1, we propose a novel method to tackle the crowded problem of pose estimation;
2 ,we collect a new dataset of crowded human poses to better evaluate algorithms in
crowded scenes
以前算法的缺陷
1,都是low-density 的,数据集密度分布不均衡,导致以前的算法对于目前拥挤场景或者人群重叠的效果不是很好。并且没有一个公共的benchmark解决现有的问题
2,以前的算法都是分为两种,
- part -based 的方法
关联关节的和部分亲密区域的贪婪算法,检测各个joint,预测用于连接的位移场。多任务模型,将joint分配给检测到的人物。这些方法是脆弱的,因为仅仅考虑了一些局部信息,输出的都是一些更小的热力图。 - two-step
首先检测出人物的候选区域,然后对于检测到单个人物进行姿态估计;缺点就是,这些方法依赖于人物检测框的结果,所以在拥挤的场景,人们距离太近就很难crop出一个box只包含一个人。
作者算法的不一样的地方这个算法叫做;joint-candicate SPPE and a
global maximum joints association algorithm
作者也是先检测出个体,然后执行当个人物的姿态检测就是SPPE,会输出每一个joint的候选location,候选名list包括target and inteference joint。最后使用global maximum joint association algorithm 进行joint的association。
Method
human detect偶尔
human detector将检测的box送入JCSPPE(joint-candicate)JC SPPE在heatmap上定位不同反应分数的联合候选joint,然后我们的joint association算法将这些结果建立一个候选连接图,最后使用全局最大关键点连接算法解决图的匹配问题。
3.1. Joint-Candidates SPPE
尽管是一个human proposal 应该对应的是一个human instance,但是我们不可避免的在复杂和拥挤的场景里面需要处理来自不同个人的关键点,并且感受野总是受输入的human proposals的限制,为了解决这个问题,JSSPPE使用一种新的损失函数在一个更加global的view。
对于一个human proposals 一般具有两个类型的joint,一种叫做target joint(属于当前这个人)一种叫做interferance joint(就是不属于这个人的关键点)我们的目标就是enhance target joint and supress interference joint。因为有些时候inference joint经常被当成target joint,所以我呢吧不能直接进行这些操作,因此我们利用interference joint 用一种全局方式估计人体姿态,为了使用这两种候选joint,我们用不同的强度输出。
Heatmap Loss
SPPE的任务就是在human proposals 里面locating和identify出target joint,但是如果把interference joint误以为了target joint,这种错误在pose——NMS中没有办法挽回的,我们提出的候选区域关键点loss就是解决这个限制的,loss function encourageJCSPPE预测多封的热力图,在拥挤的场景,传统的SPPE很难识别target joint,JCSPPE可以预测出一系列的joint candidate是并且保证了较高的召回率。
3.2. Person-Joint Graph
因为候选机制,和来自关键点的冗余信息,候选joint比实际的joint还要多很多,为了解决joint的冗余
we build a person-joint graph and apply a maximum person-joint matching algorithm to construct the final human poses.构造了关节点图和最大关节点匹配算法构建最终的人体姿态。
3.2.1 Joint Node Building
Person 代表的是被检测器检测到的候选框里面的人。作者一般都会将一些拥挤场景中的冗余的,截断的后者不完整的boundingbox去掉。
3.2.3 Person-Joint Edge
获得到关节节点和person node,就可以连接这些节点进行person-joint 匹配。建立一个节点和person node的一个边,还有一个权值,代表的是候选点的一个响应得分,
3.3. Globally Optimizing Association
所以拥挤人员的姿态估计转换为解决person-joint匹配和maximizing the total edge weight s。并且每个候选区域候选人的第k个关节最终只能匹配一个joint,可以吧全局的图匹配问题转换为k个子图匹配的问题,
作者的算法复杂度和之前的相比,都是比较好的,是建立在图的基础上连接joint和human proposals,并且不合格的没有人物实例的person proposals就不会匹配任何节点,因为由于失去了人物事例,这些joint的response score很低。
4. CrowdPose Dataset
.1. Crowding Level Definition
之前的dataset都是不拥挤的图像所主导的。
此数据集构造了一个crowd index,对于属于某人的一个实例,找出属于这个人的点与不属于这人的点的一个比例,一个图片里面的人有n个,算出这个均值来带代表crowd Index
这里计算了单个数据集的这个指数,发现不拥挤的比例大,到值了之前的那些方法都是关注与简单的场景却忽略了拥挤的场景。
4.2. Data Collection
想让自己的数据集既包括不同类别的情形,又包括日常生活的场景,为了实现这个,分析了三个主要的数据集MSCOCO,MPII,AIChallenger,并且把这些图片根据crowd index 分成20组,,每组之间的差距是0.05,总用有30000张图片。
实验做了对比,无论在拥挤的场景还是不拥挤的场景,都是做很好的。
这篇关于CrowdPose的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!