0 - 人体姿态识别存在的挑战
1 - 整体思路整个模型架构是自底向上的,先识别出关键点和关节域,然后通过算法组合成个体的姿势图。 1.1 - 求所有关键点(头部,肩膀,手肘,手腕...)
循环直到收敛。示意图如上图(b)所示。 1.2 - 求所有关联区域
循环直至收敛。示意图如上图(c)所示。 (注:上述的热图是为了便于了解整体流程,其对应于下面详细描述的置信图或者PAFs) 1.3 - 根据关键点和关联区域进行矢量连接由上述两步得到的关键点和关联区域,而后需要依据关联区域将关键点连接以组成人体真正的骨骼结构。如果全局的每对点都试验一遍然后找到最优的划分和组合结构,是一个NP难问题。因此作者提出了以一个最小限度的边数量来获得个体姿势的生成树图(用了二分图+匈牙利算法等),在保证不错的准确度的同时,大大减少了复杂度,提高了实时性。 2 - 具体方法将输入图像通过上述两个分支,得到关键点(confidence maps,集合)和关联区域(PAFs,集合)。而后便是一个匹配问题,将其划分为二分图再运用匈牙利算法使得边权最大从而构出个体姿态。 2.1 - 架构原图经过VGG-19得到F(feature maps),然后经过上下分支,每个分支有t个阶段(表示越来越精细),每个阶段将feature maps进行融合。 2.2 - 损失函数定义通过不同损失函数引导不同分支做不同预测任务。
2.3 - 个体区域检测置信图置信图由ground truth的关键点生成,每一个置信图都是对特定关键点的2D表示(如果图像中有个对应关键点可见,则应该有个峰值)。置信图可以理解为图像该点属于对应关键点的概率。 对于第个人产生部位的置信图蔓延程度,其中表示图像中的坐标,那么总的置信图(多个个体)为。 2.4 - PAFs(部位联系场)
PAFs是一个2D矢量场,保留了位置和方向。如果坐标在这个肢体上面,则值为指向的单位矢量,否则为零向量。
其中,对应的单位向量由下式得到:
通过下式定义肢体上的点:
其中,肢体宽度是像素级上的距离,肢体长度,并且是正交于的向量。 一张图像中肢体的PAFs通过下式计算:
(此处存疑问:多个人的PAFs必定不同,这样子平均难道不会削弱精确度吗?还是因为这种情况很少出现而做得一个满足模型简易性的让步?) 根据预测出来的PAFs沿着候选区域计算两个关键点之间的线积分。对于两个候选部位位置和,我们从PAFs中取样,表示的是沿着线段去衡量它们间联系的置信度:
其中是在两个身体部位和间插入的位置:
实际上,我们通过抽样和求和等间距的的值来近似积分。 2.5 - 多人PAFs如果图像中有多个个体,那么识别出来的多个关键点需要划分为多个个体,算法的目标事找到所有最佳的关联,用如下集合表示:
考虑一对关键点和(如脖子、右臂)组成的肢体,可以抽象层二分图问题,其中节点为候选集合,边的权重由上面积分公式计算,二分图匹配选择最大权重的边,使得没有共享结点。
2.6 - 两个松弛(还没理解透,待补充)
3 - 结果准确率高,实时性好。且贪心策略可行,效率高很多,效果也更好。
自底向上方法的运行时间几乎不随个体数量的增加而增加。运行时间主要包括两个部分:(1)CNN处理时间,其运行复杂度为而不管什么数量的个体;(2)多个体解析时间的运行复杂度为,其中n表示个体数量。然而,解析时间并不会很是影响整体时间,因为它比CNN处理时间小了两个数量级,例如,对于9个个体,解析用了0.58ms而CNN用了99.6ms。我们的方法对于有19个个体的视频达到了8.8fps的速度。
4 - 存在挑战
我们的方法的准确率低于对较小尺度()的个体的自顶向下方法。其原因是我们的方法需要处理在所有个体在一张图片的一个对焦中的更大的范围尺度。相反,自顶向下方法能够将每一个检测区域放缩到一个更大的尺寸因此相比小尺度受到更少的影响。 5 - 补充知识点5.1 - 非极大值抑制
最后获得各个待检测区域最佳的检测框。 5.2 - 匈牙利算法在我的另一篇博客中有详细解析。 6 - 参考资料https://blog.csdn.net/yxr403614258/article/details/77977330 |
|
来自: Rainbow_Heaven > 《ReID》