随着深度学习的发展,运用计算机视觉中的人体姿态估计技术已经能够高精度地从人体的图片中检测出人体关键点,并恢复人体位姿。在应用端,此技术也已经在人机交互、影视制作、运动分析、游戏娱乐等各领域大放异彩。

相比单人姿态检测,由于不知道图像中每个人的位置和总人数,多人姿态检测技术在预测图片中每个人的不同关键点所在的位置时更加困难。其困难在于:不仅要定位不同种类的关键点,还要确定哪些关键点属于同一个人。

针对这一困难,学术界有两种解决方案,一种是自顶向下的方法,先检测出人体目标框,再对框内的人体完成单人姿态检测,这种方法的优点是更准确,但开销花费也更大;另一种则是自底向上的方法,常常先用热度图检测关键点,然后再进行组合,该方法的优点是其运行效率比较高,但需要繁琐的后处理过程。

最近,也有学者采用了基于密集关键点坐标回归的框架(CenterNet)对图片中的多人姿态进行检测。此方法要求对于图中的每个像素点都要直接回归 K 个关键点的位置,虽然简洁,但在位置的准确度方面却一直都显著低于先检测再组合的方法。

而微软亚洲研究院的研究员们认为,回归关键点坐标的特征必须集中注意到关键点周围的区域,才能够精确回归出关键点坐标。基于此,微软亚洲研究院提出了一种基于密集关键点坐标回归的方法:解构式关键点回归(Disentangled Keypoint Regression, DEKR)。这种直接回归坐标的方法超过了以前的关键点热度图检测并组合的方法,并且在 COCO 和 CrowdPose 两个数据集上达到了目前自底向上姿态检测的最好结果。相关工作“DEKR: Bottom-Up Human Pose Estimation Via Disentangled Keypoint Regression”已经被CVPR 2021收录。

论文地址:

https://arxiv.org/pdf/2104.02300.pdf

代码地址:

https://github.com/HRNet/DEKR

DEKR 方法有两个关键:

1.用自适应的卷积激活关键点区域周围的像素,并利用这些激活的像素去学习新的特征;

2.利用了多分支的结构,每个分支都会针对某种关键点利用自适应卷积学习专注于关键点周围的像素特征,并且利用该特征回归这种关键点的位置。

通过以上两个技术关键,DEKR 学到的特征更加专注于目标关键点周围,因此,回归出的关键点具有很高的精度。

方法:解构式关键点回归(DEKR)

密集关键点回归框架对于每个像素点都会通过回归一个 2K 维度的偏移值向量来估计一个姿态。这个偏移值向量图是通过一个关键点回归模块处理骨干网络得到的特征而获得的。

解构式关键点回归(DEKR)的框架如下图所示,研究员们将骨干网络生成的特征分为K份,每份送入一个单独的分支。每个分支用各自的自适应卷积去学习一种关键点的特征,最后用一个卷积输出一个这种关键点的二维偏移值向量。在图中,为了表示方便,假设了 K=3,事实上,在 COCO 数据集的实验中,K 为17。

图1:解构式关键点回归(DEKR)的框架

关键点1:自适应卷积

一般来说,人体的关键点与中心点的距离比较远,一个在中心点处的普通卷积只能看到中心点周围像素的信息,而一系列在中心点处的普通卷积则可以看到更远的在目标关键点周围的像素信息,但是它不能集中地去激活这些关键点周围的像素。

因此,研究员们采用了自适应的卷积学习来激活关键点周围信息的特征。换句话说,自适应卷积就是普通卷积的加强版。

以上公式中,W 代表卷积核的权重。q 是二维的位置,g_si^q 代表了偏移量,而两者相加代表了被激活的像素点。这个偏移量可以像可形变卷积(Deformable Convolution)一样用额外的普通卷积进行估计,也可以将空间形变卷积(Spatial transformer network)从全局模式扩展到逐像素模式。

在上述选择中,研究员们采用了后者:为每个像素预测仿射变换矩阵和平移矩阵。从而将这两个矩阵作用于普通卷积的卷积核,得到自适应卷积的卷积核。

关键点2:多分支回归

研究员们还进一步用了多分支的结构。每个分支分别用不同的自适应卷积激活对应的关键点周围的像素,然后回归出相应的关键点。研究员们将骨干网络输出的特征分成了 K 个特征,然后利用这些特征估计对应关键点的偏移值向量图。

上述每个公式都代表了其中一个分支为了回归一种关键点所进行的操作。可以看出,这些分支结构相同,但是被相互独立地训练。

图2展示了鼻子、左肩、左膝、左脚踝这些关键点对应分支学到的人的中心点处自适应卷积激活的像素位置。可以观察到通过多分支的结构,每个分支都可以用其自己的自适应卷积集中激活相应关键点位置附近的像素。

通过多分支结构,研究员们显式地将特征解构分别预测了不同的关键点,这让优化变得更加容易,进而让模型可以准确地预测出关键点的位置。

图2:鼻子、左肩、左膝、左脚踝这几个关键点对应分支学到的人的中心点处自适应卷积激活的像素位置。

在损失函数方面,关键点偏移值向量图的损失函数是用人的大小来正则化的光滑 L1 损失函数。公式如下:

此外,在关键点和中心点热度图的损失函数设计中,研究员们还用一个独立的热度图估计分支估计了 K 张关键点热度图和一张中心点热度图,中心点热度图显示了像素是人的中心点的置信度。热度图用来给回归出的人体姿态进行打分并且排序,热度图的损失函数为加权的 L2 损失函数。

结合 L1 和 L2 损失函数就可生成总体的损失函数。具体而言就是由关键点回归的损失函数与关键点和中心点热度图的损失函数加权而成。

在上式中,λ 是一个权重系数,研究员们设置为0.03。

实验结果:COCO和CrowdPose的双重验证

在 COCO 数据集中,研究员们首先将模型在 COCO train2017 上进行了训练,训练时使用了随机旋转、随机缩放、随机平移、随机水平翻转的增广方式,然后对于 HRNet-w32 骨干网络,将图片裁剪到512×512;对于 HRNet-w48,将图片裁剪到640×640,并用 Adam 优化器训练网络,一共训练了140回,初始学习率为 1e-3,分别在第90回和第120回降为 1e-4 和 1e-5。

随后,研究员们又在 COCO val2017 和 COCO test-dev2017 上进行了测试。在测试时,保持了图片长宽比不同,把图片的短边缩放到512/640。此外,还采用了翻转测试,将原始的热度图、关键点位置图和翻转后的热度图、关键点位置图分别做了平均。同时研究员们也尝试了多尺度测试,平均了各个尺度的热度图,并且收集了三个尺度的回归结果。

在 COCO val2017 测试集上的结果如表1所示,表中的“AE”指的是 Associative Embedding。可以看到 DEKR 在 COCO val2017 达到了很好的结果。

表1:在 COCO val2017 中的测试结果

在 COCO test-dev2017 上的结果如表2所示,DEKR 方法是已知第一个在 COCO test-dev2017 上仅用单尺度测试就达到了 70AP 的方法。

表2:在 COCO test-dev2017 中的测试结果

在 CrowdPose 数据集中,研究员们在 CrowdPose 训练集和验证集上训练了网络,训练的方法除了回合数,其余的都与 COCO 数据集完全一致。模型在 CrowdPose 数据集一共训练了300回合,初始学习率为1e-3,分别在第200回和第260回降到 1e-4 和 1e-5。

在 CrowdPose 测试集上的结果如表3所示。

表3:在 CrowdPose 测试集中的测试结果

在消融实验中,自适应卷积在基准方法的基础上将 AP 提高了3.5,然后多分支结构进一步将 AP 提高了2.6,两者结合将基准的 AP 提高了6.1。

表4:消融实验结果

此外,通过错误分析工具可以看到 Jitter 和 Miss 两种错误显著减少,分别减少了4.6和1.5。这也证明了 DEKR 方法确实提高了关键点回归的位置准确度。

图3展示出了模型在回归关键点时注意到的区域,左栏为基准方法,右栏为 DEKR。为了展示得更加清楚,研究员们只用了鼻子和两个脚踝这三个关键点作为例子。从图中可以看到 DEKR 的自适应卷积和多分支结构确实让特征更加集中注意到关键点周围的区域。

图3:模型在回归关键点时注意到的区域,左栏为基准方法,右栏为 DEKR

研究员们将回归出的关键点匹配到了距其最近的从热度图检测出的关键点,这种匹配的做法对单尺度测试(ss)结果影响不大,但是提高了多尺度测试(ms)的结果。其在三个测试数据集不同的骨干网络下的结果如表5所示。

表5:不同的骨干网络下的结果,“D-32”表示使用了 HRNet-W32 骨干网络,“D-48”表示使用了 HRNet-W48 骨干网络。

综上,DEKR 显著地提高了关键点回归的质量,并且达到了现阶段自底向上姿态检测的最好结果。DEKR 将用于回归的特征解构,这样每个特征都可以集中注意到相应关键点区域,进而更准确地回归对应关键点。

CVPR 2021 | 微软提出“解构式关键点回归“, 刷新COCO自底向上多人姿态检测记录!相关推荐

  1. CVPR 2021 | 微软提出解构式关键点回归, 刷新COCO自底向上多人姿态检测记录!...

    本文转载自微软研究院AI头条. 编者按:在拥挤的人群的场景下,由于人群过于密集,重合程度太高,所以每个人的位置难以用人体检测框表示,而传统的一些自下而上的人体姿态估计算法也很难检测到人物的关键点.因此 ...

  2. DEKR 解构式关键点回归(一):算法思想与原理

    前言 CW前阵子玩了下人体姿态估计,用上了微软新鲜出炉的算法--DEKR: Bottom-Up Human Pose Estimation Via Disentangled Keypoint Regr ...

  3. DEKR 解构式人体关键点回归(二):标签分配(Label Assignment)

    前言 上一期 DEKR 解构式人体关键点回归(一):算法思想与原理 解析了DEKR的算法与工作原理,这期本文将聚焦于标签分配.当然,首先得了解标签是什么,明确模型的学习目标,然后再进一步看看如何制作与 ...

  4. CVPR 2021 Oral | GLEAN: 基于隐式生成库的高倍率图像超分辨率

    摘要 · 看点 在 CVPR 2021 上, 南洋理工大学 S-Lab 和商汤科技等提出的隐式生成库(Generative Latent Bank), 针对高倍率图像超分辨中的质量和保真度问题提出了一 ...

  5. CVPR 2021 | Facebook提出FP-NAS:搜索速度更快、分类精度更高、性能更好

    作者|严志程 来源|机器之心 来自 Facebook AI 的严志程团队发表一种新的神经架构的快速搜索算法.该算法采用自适应架构概率分布熵的架构采样,能够减少采样样本达 60%,加速搜索快 1.8 倍 ...

  6. 展开运算符解构赋值_解构式展开式搜索栏

    展开运算符解构赋值 View demo 查看演示Download Source 下载源 Maybe you have noticed the little adjustments that we di ...

  7. CVPR 2021 论文解读Vol.6 I 动态区域感知卷积,进一步提升分类/检测/分割性能

    论文单位:旷视研究院 论文链接:https://arxiv.org/abs/2003.12243 作者:Jin Chen, Xijun Wang, Zichao Guo, Xiangyu Zhang, ...

  8. DEKR 解构式人体关键点回归(三):损失函数

    前言 损失函数是一项工作里很重要的部分,它意在每个训练阶段告诉模型有多"犯傻".离"正确答案"还有多远,然后基于损失反向传播回去使得各模型参数获得相应的梯度,于 ...

  9. CVPR 2023 | 微软提出RODIN:首个3D扩散模型高质量生成效果,换装改形象一句话搞定!...

    点击下方卡片,关注"CVer"公众号 AI/CV重磅干货,第一时间送达 点击进入->[扩散模型]微信技术交流群 转载自:微软亚洲研究院 编者按:近日,由微软亚洲研究院提出的 ...

最新文章

  1. ac自动机模板(hdu2222)
  2. 帮小猴子准备的高数知识点
  3. java h2 derby_嵌入式H2数据库的Spring配置以进行测试
  4. android 自定义控件viewgroup,Android自定义控件ViewGroup
  5. js获取一个月份最大天数和获取月的最后一天
  6. VMmware安装VMware Tools问题解决
  7. 金蝶kis仓库管理系统演示_金蝶KIS专业版生产管理的系统亮点功能
  8. c语言printf输出中文报错,printf输出中文后还带有数字是怎么回事?
  9. LeetCode(62):不同路径
  10. 面向对象实现ATM功能
  11. 高数 吉米多维奇 785
  12. DotNetBar 14.1.X 安装+源码=不错选择
  13. 结构化随机森林 代码说明
  14. editplus配置python_Editplus配置Python的开发环境
  15. Colab 使用 PyTorch-TPU
  16. python怎么画圆并改变线条颜色_python – 更改plot_surface中的线条颜色
  17. 第39级台阶 蓝桥杯
  18. struts原理与实践(七)
  19. 小白兔和小灰兔【爱情故事系列暖暖的很贴心】
  20. 二狗子的志愿者故事20210121

热门文章

  1. JavaScript使用ACTIVEX控件引起崩溃问题的解决
  2. Java 原子变量类
  3. php自定义扩展函数,Laravel框架中扩展函数、扩展自定义类的方法
  4. shell脚本中使用seq生成连续整数
  5. html绘制圆形和弧形的代码,通过HTML5 Canvas API绘制弧线和圆形的教程
  6. c语言判断文件是否建立成功,C语言编程之怎样判断某一文件是否存在
  7. bootstrap图片叠加_图片 | Images
  8. python一行实现循环_python开发如何将嵌套 for 循环写成单行?
  9. html键值对与名称值对的区别,使用网络存储存储键值对的数据-HTML5教程
  10. java app上传图片接口_接口app 接口中上传 图片