人体姿态估计-CPN(三)

资源链接

论文出处:旷世科技(Face++)、2018CVPR

论文

论文

代码

tensorflow
pytorch

论文个人解读

这篇文章开发的多人姿态估计模型CPN级联金字塔网络,是2017年COCO人体关键点挑战赛的冠军,使用top-down策略,那么同样适用于单人姿态估计,在COCO测试集上取得mAP=73.0。
本算发聚焦点在于处理多人姿态估计所面临的挑战:关键点遮挡,关键点不可见,复杂背景等——就是优化对于难以检测的点的预测,即着重于处理 “hard” 关键点。思路就是detector先定位bbox,然后使用CPN检测关键点。

模型结构

模型分2个module:
CPN

网络特点

1) CPN本体由两个module组成:GlobalNet和RefineNet

2) GlobalNet:是一个功能金字塔网络,对关键点进行粗提取,即能够成功地定位“简单”的非隐藏的关键点,并且无法准确识别被遮挡或看不见的关键点。具体为:假设使用ResNet50作为backbone(全文都是以ResNet50作为backbone),左边的四个实心方块就是ResN50的res2- res5(包含[3,4,6,3]个Residual block),右边的虚线方块就是特征融合的过程,不断通过上采样和elem-sum的过程做特征融合。共有4个层次,这样就会得到4个不同的结果,都需要计算loss,不同的层次对应groundtruth的heatmap使用的高斯核大小或者sigma大小不一样,文中根据实验来选择,通常使用7-15之间的奇数。

3) RefineNet:主要针对隐藏关键点,一方面通过整合来自GlobalNet的多尺度特征来丰富位置和语义信息,另一方面通过扩大感受野的方式以及在线的关键点难例挖掘损失(OHKM loss)来优化对难例关键点的检测。具体为:把GlobalNet提取到的4个层次特征分别经过一些bottleneck(也是使用Residual block)和一些不同倍数的上采样,然后在特征层上进行concat进行特征融合,最后再经过一个bottleneck,输出最后的结果,最后的结果是outputsize[0]*ouputsize[1]*num_points的形式,对于COCO数据集,num_points=17,output_size=64,48,共有17个feature map,每一个表示一个关键点信息。在feature map上的heatmap中热力值最大的点就表示对应的关键点。
以上是最终的结构,作者在确定前也做了大量实验,尝试过不加bottleneck直接上采样和concat,加一个bottleneck,提取GlobalNet输出4层的哪几层(C2-C5),如下图:
CPN
CPN
4) OHKM(Online Hard Keypoints Mining) : 在coco 数据集中有17个关键点需要预测,GolbalNet预测所有的17个点,并计算所有17个点的L2 loss,RefineNet也预测所有的17个点,但是只有最难的8个点的loss 贡献给总L2 loss。ohkm更关注与高层次的信息,而ohem更关注与困难样本。为啥选择8个,作者进行了对比实验,如下图:
CPN
5) 损失函数:
GlobalNet采用L2 loss、RefineNet采用OHKM L2 loss
选择以上loss作者也进行了大量实验,如下:
CPN

算法效果

同样在coco数据集上进行验证,效果如下:
CPN

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CPN工具(Colored Petri Nets,有色彩彩色佩特里网)是一种用于建模和分析并发系统的强大工具。它使用一种图形化的方式来描述系统的结构和行为,并通过模拟和分析来评估系统的性能和可靠性。 CPN工具的核心功能之一是生成代码。具体来说,CPN工具可以根据我们在图形界面上设计的模型自动生成相应的代码。代码的生成过程主要包括以下几个步骤: 首先,我们需要在CPN工具中使用图形编辑器来设计系统的模型。我们可以使用各种图形元素,如变迁、库所和弧线来构建模型的结构。通过将这些元素连接在一起,我们可以定义系统的状态转换和并发操作。 然后,我们需要对模型进行参数化。这意味着给模型中的各个部分赋予一些初始值。例如,我们可以指定库所中的初始令牌数量,或者指定变迁的先决条件和后继条件。参数化是为了使代码生成过程更加准确和灵活。 接下来,我们可以使用CPN工具中的代码生成器来生成代码。代码生成器根据我们所设计的模型自动生成相应的程序代码。生成的代码可以是各种编程语言,如C、C++、Java等。这些代码包含了通过图形编辑器定义的系统结构和行为。它们可以被编译并运行,以模拟和分析系统的性能和可靠性。 最后,我们可以使用生成的代码进行系统的模拟和分析。通过运行代码,我们可以观察系统的行为,并评估其性能和可靠性。例如,我们可以计算系统的响应时间、吞吐量和资源利用率等指标。这些指标可以帮助我们找出系统中的瓶颈和性能瓶颈,并作出相应的优化和改进。 总之,CPN工具是一种功能强大的工具,它可以帮助我们建立并发系统的模型,并根据这些模型生成相应的代码。通过代码生成,我们可以更加准确和灵活地分析系统的性能和可靠性,从而优化系统的设计和实现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值