2020 COCO Keypoint Challenge 冠军之路!

本文转载自知乎,已获作者授权转载。

https://zhuanlan.zhihu.com/p/206430760

前言

今年的coco,是最难的一年,也是最容易的一年。

难是难在历届成绩奇高,高到大部分赛道上一年的技术积累依然无法突破算力所形成的壁垒。也难在问题已经过了可以随便找个codebase,拿过来花两个月调参、改一改网络结构最终比赛结果就会有提升的阶段。自己没有创新只靠开源,要超过去年成绩完全没戏。

容易则是容易在去年冠军不参赛了,也劝退了大部分划水玩家。往年拼得你死我活的比赛,今年基本就是交了结果和报告就有不错排名,像detection赛道一共也就排名前二的两支队伍提交报告,意思是你交报告了,就能以第三的排名列在榜上。

coco detection challenge 2020 leaderboard

一开始只有两个结果,今天一看成三个了,可能是组委会也看不惯今年那惨淡的成绩吧。这也说明去年一年下来detection问题上那些所谓的突破在v100面前啥也不是,瞬间灰飞烟灭。差不多的还有全景分割赛道,而Densepose赛道更惨一支参赛的队伍都没有,只要你交结果和报告,你就是冠军了。从结果上来看,今年coco四个赛道旷视凭借去年的成绩就赢了三个,旷视才是最大的赢家,不接受反驳,其他赛道谁敢提交报告谁敢pr都是给旷视当绿叶。

coco panoptic challenge 2020 leaderboard

作为唯一超过去年冠军的结果,Keypoint赛道里我们的成绩就很强吗?也不见得,从成绩上看虽然test-dev比去年旷视高了1.6AP,但是test-challenge上却只有0.3AP的优势。这个test-dev上到test-challenge为何掉点那么多,一直困扰着我,是他们test-dev不行还是我的test-challenge不行?希望有土豪支持V100让我跑下旷视的结果验证问题。另外一个有意思的事情是keypoint 榜上的结果是(1st,4th,7th)的成绩,意思是第二第三名并没有按照组委会要求提交报告,不知道成绩如何。

coco keypoint challenge 2020 leaderboard

今年和coco一起举办的还有LVIS(Large Vocabulary Instance Segmentation https://www.lvisdataset.org/),一个类别数极多的实例分割比赛(coco只有80类,它有1200+类)。竞争非常激烈,排名前列都是一群又土豪又有实力的玩家,比如冠军是大名鼎鼎的商汤,后面还有阿里巴巴、MMDet 和华为等。只有旷视今年非常佛系的啥都不参加,坐看风云起却笑纳三冠军……

LVIS Challenge 2020

coco死了吗?个人觉得并没有,一方面coco一直是学术界算法评测的标杆,谈饱和还言之过早,至少我觉得keypoint问题上还没有,一眼望去在coco的反映下,还有太多问题还没完全解决。另外一方面,今年的局面大多也是由于coco的地位导致资本角逐,但是明年的coco有新一年的技术突破加持下,其他赛道也很有希望突破算力形成的壁垒,回归以学术为主导,百家争鸣时代指日可待,大家共勉。今年workshop上组委会也强调了明年的coco会有大改动,期待ing。


突破

在这里先介绍在keypoint这个问题上的两个改进,一个是关于codebase可靠性的,另外一个则是在监督方面让网络关注约束信息。个人对网络设计不太感冒,一方面觉得小修小改要突破性能瓶颈很难,自己也尝试过不少,但说能超过hrnet的改进还真一个都没有。另外一方面,网络方面的改进到最后大概率会被算力淹没。

论文地址:https://arxiv.org/abs/1911.07524
代码地址:https://github.com/HuangJunJie2017/UDP-Pose

人体姿态估计中无偏的数据处理

如上图所示,人体姿态估计任务中的数据处理主要包含两个环节:数据在不同坐标轴之间的变换和关键点坐标的编码解码。基于此,人体姿态估计任务中数据处理流可以用以下公式进行建模:

而无偏的数据处理则需要满足数据流的输入与输出严格相同,即:

由于评测会对偏差直接作出惩罚,无偏的数据处理对于高精度的人体姿态估计极为重要。此外,潜藏在数据流中的偏差会对研究造成严重的干扰,无偏的数据流是可靠codebase必不可少的特征。

通过对现有的codebase进行推理分析,我们发现现有SOTA工作的数据处理中普遍存在偏差,这些偏差存在于上述两个环节中并相互耦合。一方面直接影响了算法的性能表现,另外一方面为后续的研究埋下了难以察觉的隐患。基于严格的数学推理,我们提出用于人体姿态估计无偏的数据处理流作为解决方案,在大幅度提升现有工作的性能表现的同时,为后续研究提供可靠的基础。

在这里我只轻描淡写,至于详细的问题分析和方法请参考论文。这个东西理解起来有点费劲,我自己也是一边写论文一边推明白(写论文之前也只有各大概的概念),所以真不能强求自己在几天内能看懂。如果能通过推理自己把论文里唯一的图画出来,你知道的就已经不比我少了。

论文地址:https://arxiv.org/abs/1911.07524

在利用UDP构建可靠的codebase之后,我们又对人体姿态估计的性能瓶颈进行分析。近几年来网络结构的改进是研究的重点,涌现了SimpleBaseline, MSPN, HRNet, RSN 等一系列具有代表性的工作。而监督方面则一直沿用着位于关键点处的高斯响应图作为监督,此监督设计直观,其有效性已被广泛证明。然而这种看似完美的监督是否存在缺点呢?答案是肯定的。

人在定位图像中的人体关键点时使用了两种信息,外观信息和约束信息。外观信息是定位关键点的基础,而约束信息则在定位困难关键点时具有重要的指导意义。约束信息主要包含人体关键点之间固有的相互约束关系以及人体和环境交互形成的约束关系。直观上看,约束信息相比外观信息而言更复杂多样,对于网络而言学习难度更大,这会使得在外观信息充分的情况下,存在约束条件被忽视的可能。基于此假设,我们引入信息丢弃的正则化手段,通过在训练过程中以一定的概率丢弃关键点的外观信息,以此避免训练过程过拟合外观信息而忽视约束信息。

各种信息丢弃的方法

虽然随机丢弃外观信息可以避免训练过程过拟合外观信息,但是由于外观信息是视觉定位人体关键点的基础,外观信息的缺乏会使得训练前期收敛较慢,网络需要一个更长训练周期才能达到完全收敛。

在实验过程中,我们通过使用多种基线验证了上述假设的合理性以及所提出方法的有效性。有趣的是,在不同的baseline上所提出的方法表现惊人的一致,这个一方面反映了这种过拟合外观信息的问题是广泛存在的,修改网络,增加数据并不能解决这个问题。另外一个方面也验证信息丢弃可以有效遏制这个问题。至于这种惊人的一致性,个人觉得背后一定有某些规律等着我们去挖掘。


冠军之路

2020 COCO Keypoint Challenge Road Map

还记得HRNet横空出世时,我刚入coco keypoint的坑,那时觉得这指标太牛逼了,而且MSRA还是非常良心的,开源指标和论文一致,这个非常难能可贵!所以MSRA的hrnet一直是我研究的baseline,我中间搞过旷视的MSPN/RSN,只能说打扰了,开源指标比论文低3.2AP的操作令人窒息,论文背后有多少坑需要填难以想象,期待有大佬能复现。

上面说过我对网络不感冒,一直以搞baseline为主,在更换大backbone和大inputsize前一直致力于提升hrnetw32-256x192配置的性能,并最终刷到76.8AP。同时由于改进不针对网络结构,所以在增大backbone和inputsize以及增加训练数据时指标提升一如既往的给力。

因为沿用top-down的方法(先检测人,然后对每个instance进行关键点定位),人体检测的效果对最后keypoint指标影响几乎是线性的,大概每提一个点的detection AP, keypoint AP提升0.1的样子。今年组里也组织参加detection的赛道,一方面keypoint这边有明确的需求,另外一方面碰碰运气,最终成绩也不差,box在test-dev上接近60AP.

最后我们ensemble 17个关键点检测模型的结果,在test-dev上达到80.8AP,比去年冠军高1.6AP。看起来很强,然而,然而……在test-challenge上萎了,竟然萎了,从去年第二名的结果来看(他们也是用hrnet,但是test-dev到test-challenge只掉2.5AP,我们掉了3.4AP),这里也有我看不透的操作。


总结

  • 从今往后,最大的对手只剩自己

  • baseline很重要

  • 创新使你无敌

  • 不能有短板

PS:招个亲传的keypoint实习生,要求基础厚的要有半年以上时间,没基础的一年起步。简历发junjie.huang@ieee.org

备注:姿态

姿态估计交流群

人体姿态估计、手势识别等更多新鲜资讯,若已为CV君其他账号好友请直接私信。

我爱计算机视觉

微信号:aicvml

QQ群:805388940

微博知乎:@我爱计算机视觉

投稿:amos@52cv.net

网站:www.52cv.net

在看,让更多人看到  

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 您可以使用COCO数据集中的图像和标注来训练自己的COCO Keypoint模型。首先,您需要下载COCO数据集并使用标注工具标注图像。然后,您可以使用深度学习框架,如TensorFlow或PyTorch,来训练模型。训练完成后,您可以使用模型来检测和识别图像中的关键点。 ### 回答2: 制作自己的Coco关节点(Keypoint)需要以下步骤: 1. 数据收集:首先,需要收集一组有标记关节点的图像数据集。这可以通过拍摄或从互联网上收集到的数据集来实现。确保数据集包含目标对象,例如人体,以及正确标记的关节点位置,如头部、肩膀、手和脚等部位。 2. 数据预处理:对数据进行预处理是为了确保所有图像具有相同的大小和质量。可以使用图像处理软件或库,如OpenCV,将数据进行裁剪、缩放或旋转等操作,以适应训练模型的要求。 3. 构建模型:制作Coco关节点的关键在于建立一个适合的神经网络模型。可以选择使用深度学习框架,如TensorFlow或PyTorch,并根据自己的需求选择合适的模型结构,如Hourglass网络或OpenPose模型等。 4. 数据训练:将准备好的数据集用于训练模型。这需要定义合适的损失函数来度量模型输出与真实关节点位置之间的差异。然后使用训练数据进行迭代,通过优化算法来最小化损失函数,并不断调整模型参数。 5. 模型评估:训练完成后,使用测试数据对模型进行评估。通过计算关节点检测的准确率、召回率等指标来评估模型的性能。 6. 模型应用:在完成模型训练和评估后,就可以将其应用于实际场景中。使用训练好的模型来检测和跟踪图像中的关节点,例如在人体姿势估计、动作捕捉等方面应用。 总的来说,制作自己的Coco关节点需要数据收集、数据预处理、模型构建、数据训练、模型评估和模型应用等多个步骤。通过这些步骤,可以创建一个适合自己需求的Coco关节点模型,并将其应用于相关领域中。 ### 回答3: 制作自己的Coco Keypoint 包括几个步骤: 1. 数据收集:首先,需要收集一组包含所需关键点的图像数据集。这些图像可以来自不同来源,例如网络上的公开数据集、拍摄的实际图片等。确保图像数据集中的主体存在所需的关键点。 2. 标注关键点:接下来,需要为收集的每个图像标注关键点。使用适当的图像标注工具(例如LabelImg),为每个图像标记所需的关键点。确保关键点标注的准确性和准确的位置。 3. 数据预处理:一旦完成标注,就可以进行数据预处理。这包括将图像调整为相同的尺寸、进行图像增强(如旋转、缩放、镜像等)以及将数据集分成训练集和测试集等。 4. 模型选择与训练:根据任务需求,选择合适的机器学习或深度学习模型。可以选择使用OpenPose、DeepLab等已有的预训练模型,也可以根据需求自行设计模型。然后,使用训练集数据对选定的模型进行训练,以获得能够准确预测图像中关键点的模型。 5. 模型优化与测试:训练完成后,需要对模型进行优化和测试。可以使用训练集以外的数据进行模型测试,并进行模型性能评估,如计算准确度、精确度和召回率等指标。 6. 部署与应用:一旦模型经过有效的优化,并且在测试集上获得了较好的性能,就可以将模型部署到实际应用中。这可以是一个预定义的应用程序,如人体姿态识别、运动分析等,或根据需求进行定制化。 总的来说,制作自己的Coco Keypoint需要进行数据收集、关键点标注、数据预处理、模型选择与训练、模型优化与测试以及部署与应用等步骤。每个步骤都需要仔细和有系统地进行,以确保最终的Coco Keypoint模型能够准确预测图像中的关键点。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值