论文笔记——YOLO-POSE

​​​​论文笔记——YOLO-POSE_第1张图片

摘要

这篇文章介绍了YoLoPose,一种新颖的无热力图的方法,基于流行的YOLO目标检测框架,用于单张图片中的关节检测与2D多人姿态估计。当前,基于热力图的方法是两个阶段,这个方法并不是最优的,因为他们不是端到端训练的,并且训练依赖于一种L1损失,即目标关键点相似度(object keypoint similarity,OKS),这不是等同于最大化评估指标的。该文章框架是一种端到端地训练模型,并优化OKS指标本身。所提出的模型在单向前向传播中联合检测人体框以及对应的二维姿态,因此对于自上而下或自下而上的方法中是最好的。该方法不需要自下而上方法的后处理过程,即将检测到的关键点分组到一个骨架中,因为每个检测框都有一个相关的姿态,从而导致了关节点的固有分组。也不像自上而下的方法,多个前向传播被取消,因为所有人与他们的姿态在一个单向推理中一起被定位。YOLOPose在COCO val上取得了领先的结果,在AP50上取得了90.5%以及test-dev上取得了90.3% 的AP50,超过了当前所有,在单次的前向传播中,不使用翻转、多尺度或其他数据增强方式的基于自下而上的方法。

一、前言

多人2D姿态估计,是理解图像中人体的一种任务。输入一张图片,其目标是检测每一个人和定位到他们对应的关节点。推测图片中多人的姿态是有挑战的,由于图像中存在人体数量的变化,尺度变化,身体部位遮挡,人体非刚性等因素。

当前对于姿态估计的方法主要分为两大类:自下而上,和自上而下的。自上而下或者双阶段的方法是目前最领先的方案(之前学习过的I^2R-Net就属于双阶段的也是基于自上而下的,它的第一阶段人内关系模块其实就是采集人体信息)。他们首先采用一个强大的人体检测器,然后针对每个人体做单人的姿态估计。自上而下的方法的复杂度随着图像中人体数量而线性增加。多数实时应用需要限制运行时间,不倾向于采用自上而下的方法,由于其复杂度较高。

相反的,自下而上的方法提供了恒定的运行时间,因为他们在单次检测中依赖热力图检测所有关键点,然后进行复杂的后处理将他们分组成个体。后处理可能涉及到如像素级别的NMS,线积分,细化,分组等步骤。坐标调整和细化减少了下采样热力图的量化误差,其中NMS用于寻找热力图中的局部最大值。即使经过后处理,热力图也许不够清晰,去区分同一类型的两个靠得很近的关键点。同样,自下而上的方法也不能端到端训练,因为后处理步骤是不可微的,并且发生在卷积网络之外。他们在方法上存在很大差异,从线性规划到各种启发式算法。很难用CNN加速器去加速他们,因此速度也很慢。有单次推理的方法,虽然避免了分组任务,但不能与自下而上的方法相提并论。他们依赖额外的后处理来提升性能。

**这篇文章的动机,是解决姿态估计不使用热力图的问题,与目标检测保持一致,因为目标检测中的挑战与姿态估计类似,例如尺度多样性,遮挡,人体非刚性等。**因此,如果一个人体检测网络能够处理这些问题,它也能处理姿态估计。例如,最近的目标检测框架尝试解决尺度变化的问题,通过在多个尺度上做预测。这里,我们采用相同的策略去针对每个检测去预测多尺度的人体姿态。相似地,目标检测领域的所有主要进展都可以无缝地传递到姿态估计问题上。本文提出的姿态估计技术可以很容易地集成到运行目标检测的任何计算机视觉系统中,几乎零增加的计算。

YOLOPose,基于当前流行的YOLOv5框架。这是首次提出解决2D姿态估计不使用热图的方法,并且摆脱当前常用的很多非标准化的后处理操作。该方法使用目标检测中相同的后处理,在COCO上取得了领先性能。在该方法中,一个anchor点,与真实的标准框匹配,存储着其完整的2D姿态以及边界框位置。来自不同人体的两个相似关节点在空间上可以互相靠近。使用热图很难区分这种情况。但是,如果这两个人通过不同的anchor匹配,这将很容易区分空间上靠近的相似关节点。

YOLOPose在密集人群上的姿态估计效果图


与YOLOPose对比,HigherHRNet-w32(自上而向方法)处理密集人群效果不佳

再次强调,与锚点关联的关键点已经分组。在自下而上的方法中,一个人的关节点很容易被另一个人弄混淆,如上图所示,然而YOLOpose能够本质上解决这个问题,也就是遮挡问题不同于自上而下的方法,YOLO-Pose的复杂度与图像中人体数量是无关的。因此,YOLOPose具有了自上而下,自下而上的方法中最好的:恒定的运行时间,简单的后处理。贡献总结如下:

  • 我们将多人姿态估计与目标检测任务保持一致,因为相似的挑战如多尺度、遮挡等都存在。因此,迈出了统一这两个领域的第一步。该方法直接从目标检测领域的任何进步中收益。
  • 该方法基于无热图,使用标准的目标检测后处理步骤,替代了自下而上的复杂预处理步骤,以端到端方式训练而不采用独立的后处理。
  • 将目标框检测的IoU损失扩展到关键点估计上。OKS不仅用于评估,也用于训练的误差。OKS损失是尺度不变的,固定地为不同关节点提供了不同的权重。
  • 与领先的DEKR算法相比,在少4倍运算量情况下,获得了89.8%的AP50,还高了0.4%。
  • 将检测与姿态估计联合的框架,在目标检测框架上几乎不额外增加运算实现了姿态估计。
  • 提出了低复杂度的模型,明显超过了EfficientHRNet等关注实时的模型。

二、相关工作

2.1 自上而下

自上而下的方法或两阶段方法首先使用像快速RCNN 这样的重型人体检测器进行人体检测,然后估计每个被检测到的人的二维姿态。因此,计算复杂度随人数呈线性增加。现有的自上而下的方法主要侧重于网络架构的设计。

  • Mask-RCNN 检测关键点作为分割掩码。
  • Simple Baseline提出了一个简单的架构,具有较深的主干和几个反卷积层,以扩大输出特性的分辨率。

这些方法是尺度不变的,因为它们在相同的尺度上处理所有的主题,在流行的基准测试上实现了最先进的性能(最新的I^2RNet就是借鉴了HRNet的多分辨率并行优化了多尺度的问题)。然而,它们在处理遮挡方面很差。YOLOPose在一定程度上克服了遮挡的挑战,如图3所示。

论文笔记——YOLO-POSE_第2张图片

2.2 自下而上

自底向上的方法是在一次扫描中找出一个图像中所有的人的无身份关键点,然后将他们分组到个人实例中。自底向上的方法用于一种称为热图的概率映射,它估计包含特定关键点的每个像素的概率。关键点的确切位置是通过NMS找到的热图的局部极大值。自底向上的方法通常的复杂性较低,并且具有恒定运行时间的优势。然而,与自上而下的方法相比,准确性有了大幅下降。还有各种其他的调整和细化步骤,以从热图中提取更好的关键点。

不同方法不同的部分是用于对图像中检测到的身体部位进行分组的策略

  • OpenPose 构建了一个模型,其中包含两个分支来预测关键点热图和部分亲和场,它们是建模关节之间关联的二维向量。在分组过程中使用了零件亲和关系场。
  • 在关联嵌入中,Newell等人训练网络来预测每个关节的关键点热图和标签值。损失函数被定义为预测属于同一个人的关节的相似标签值,以及属于不同人的关节的不同标签值。
  • Chen等人提出了更高的HRNet ,它利用更高的输出分辨率来大幅度提高预测精度。
  • Geng等人最近提出了解开关键点表示(DEKR),提出了一种使用偏移映射的直接回归方法。提出了一种利用自适应卷积来回归相应关键点的偏移量的k个分支结构。这种方法需要关键点热图和后处理中的各种NMS操作的中心热图。即使后处理没有任何分组,但它并不像我们的那样简单。

三、YOLO-Pose

论文笔记——YOLO-POSE_第3张图片
基于YOLOv5的YOLO-Pose架构。输入图像经过darknet主干网络,产生不同尺度的特征图(P3,P4,P5,P6,相比于YOLOv5目标检测多了一个尺寸的特征图)。PANet被采用来融合不同尺度的特征图。PANet的输出作为检测头的输入。最后,每个检测头分支到检测框头和关键点头中。

3.1 框架概述

为了展示该方法的潜力,作者考虑去选择检测人体效果好的框架。YOLOv5是当前领先的检测器,在考虑精度和运算量方面。因此YOLOv5被选择作为地基去构建。YOLOv5主要关注COCO目标检测上的80个类别,在每个anchor上采用框头预测85种元素。对于80种类别,他们对应边界框,目标分数,置信度分数。针对每个格子位置有不同形状的三种anchor。

问:YOLOv5的box head输出为什么有85个元素?
其中,80个元素对应类别,边界框对应4个元素,1个目标分数

对于人体姿态估计,它就检测一种类别即人体,每个人体有17个关节点,并且每个关节点被位置和置信度{ x , y , c o n f } 所确定。因此,与一个关联anchor,有17个关节点的51个元素。因此,对于每个anchor,关键点头预测51个元素,框头预测6个元素。对于n个关节点的anchor,所有需要的元素可以表达成一个向量,即:

问:YOLOPose,在YOLOv5基础上增加了什么?
答:YOLOPose,除了YOLOv5原有的boxhead,还增加了keypoint head。box head只检测人体类别,输出6个元素;keypoint
head检测关键点,输出x和y位置、置信度共三个元素。一种17个关键点,输出51个元素。

**关键点置信度是基于其是否可见来训练的。如果一个关键点是可见的或者遮挡了,那么人工标注置信度设置1;如果它在视野范围之外,则设置为0。**在推理阶段,我们保留置信度大于0.5的关键点。其他预测的关键点被丢弃。预测的关键点置信度不用于评估。但是,由于网络针对每一个检测都输出17个关键点,我们需要过滤掉视野范围外的关键点。否则,会有悬空的关键点导致骨架变形。当前的自下而上的方法基于热力图需要这个操作,因为视野外的关键点在第一阶段就不会被检测到。

YOLOPose采用CSP-darknet53作为骨架,PANet融合多尺度特征。遵从四个检测头在不同尺度的做法。最后,有两个耦合的头用于预测边界框与关键点。

本架构限制其运算量在150 GMACS(乘法累加运算量,约等1~1.2倍GFLOPs浮点数运算)内,也能达到有竞争力的结果。在进一步增加运算量的情况下,能够缩小与自上而下方法的差距。但是,我们不追求那个,因为我们关注的是实时模型。

3.2 基于Anchor的多人姿态公式

对于一个给定的图像,与一个人匹配的锚框会存储其整个二维姿态和边界框。边界框坐标相对于锚中心进行转换,而边界框尺寸根据锚框的高度和宽度标准化。同样,关键点位置也相对于锚框中心进行转换。然而,关键点并没有根据锚框的高度和宽度进行标准化。关键点和边界框都相对于锚的中心进行预测。由于我们的增强独立于锚框的宽度和高度,它可以很容易地扩展到Anchor-free的目标检测方法,如YOLOX ,FCOS 。

3.3 基于IoU边界框的损失函数

多数现代的目标检测器优化IoU,出现了其高级变体例如GIoU,DIoU和CIoU等损失,替代了基于距离的用于边界框预测的损失,因为这些损失是尺度不变的,并能够直接优化评估策略本身。YOLOPose使用CIoU损失用于边界框的监督,对于一个标定的真实边界框,匹配第k个anchor,位置( i , j ),尺度为s,损失可以定义为:
在这里插入图片描述
在本模型中,每个位置有三个anchors,预测有四个尺度。

3.4 人体姿态损失函数公式

OKS是评估关键点的最流行的策略。传统上讲,基于热图的自下而上的方法采用L1损失去检测关键点。但是,L1损失可能不合适去获取优化的OKS。因为L1损失是最朴素的,并不考虑一个物体的尺度或者关键点的类型由于热图是概率图,不可能去使用OKS作为纯热图方法的损失函数。OKS能当做损失函数仅当我们回归关键点位置的情况下。有人提出尺度归一化的L1损失用于关键点回归,这是迈向OKS损失的一步。

因此,我们直接相对于锚框中心回归关键点,所以我们可以优化评估度量本身,而不是一种代理的损失函数我们将IOU损失的概念从边界框扩展到关键点。在关键点中,OKS被当做IoU。因此OKS损失本质上是尺度不变的,针对特定的关键点倾斜重要性。也就说,一个人头部的关键点如耳朵、鼻子和眼睛等,会比身体如肩膀,膝盖和臀部等在像素级别上受到更多的错误惩罚。这个权重因子是COCO作者从冗余的标注验证集中根据经验选择的。不像原始的IoU损失,会在非重叠情况下出现梯度消失,OKS损失不会停滞。因此,OKS损失更像dIoU损失。

对应于每个边界框,我们存储整个姿态信息。针对每一个单独的关键点计算OKS,并累加到最终的OKS损失或者关键点IoU,即:
论文笔记——YOLO-POSE_第4张图片

针对每一个关键点,作者学习了一个置信度参数,它能够表示该关键点对于那个人是否存在。因此,关键点是是否存在的标志,作为真实标注。可得:
论文笔记——YOLO-POSE_第5张图片
如果真实边界框与第K个度为 s 的anchor匹配了,那么在位置( i , j ) 那个损失将会有效。最后,对所有尺度、锚点和位置的损失进行累加得到总损失:
论文笔记——YOLO-POSE_第6张图片

3.5 测试时间增强策略

图像翻转与多尺度测试是两个常用的方法。翻转,将会增加2倍运算量,而多尺度通常在三个尺度上如( 0.5 × , 1 × , 2 × ) 等,对应增加运算量为( 0.25 + 1 + 4 ) 即为原始运算量的5.25倍。本方法不使用任何的数据增强策略。

除了增加计算复杂度外,准备增强的数据本身也可能很昂贵。例如,在翻转测试中,我们需要翻转图像来增加系统的延迟。同样,多尺度测试也需要为每个尺度调整大小操作。这些操作可能相当昂贵,因为它们可能不会加速,不像CNN的操作。融合各种正向传球的输出会带来额外的成本。对于一个嵌入式系统,如果我们能在没有任何TTA的情况下获得有竞争的结果,这是最有利的。我们所有的结果都没有任何TTA。

3.6 边界框外的关键点

自上而下的方法在遮挡条件下表现不佳。与自上而下的方法相比,YOLO-Pose方法的优点之一是对关键点没有限制约束必须在预测的边界框内。因此,如果关键点由于遮挡而位于边界框之外,那么它们仍然可以被正确识别然而,在自上而下的方法中,如果人的检测不正确,姿态估计也会失败。在YOLOPose中,遮挡和错误的边界框检测的这些挑战都在一定程度上得到了缓解,如图3所示。

论文笔记——YOLO-POSE_第7张图片

四、实验

4.1 COCO数据集

作者在COCO数据集上评估了模型。它包含了超过20万张图片,有25万人的实例,有17个关键点。train2017集包含57K图像,而val2017和test-dev2017集分别由5K和20K图像组成。我们在train2017上训练该模型,并报告了val2017和test-dev2017的结果。

4.2 COCO val2017结果

论文笔记——YOLO-POSE_第8张图片
YOLOpose取得了领先的性能,并且运算量比同期最领先的DEKR节省近一半的运算量。

4.3 COCO test-dev2017结果

论文笔记——YOLO-POSE_第9张图片

4.4 消融实验

4.4.1 OKS Loss vs L1 Loss

OKS的损失是本文工作的主要贡献之一。由于这种损失比L1损失更受到限制,因此训练动力学更加稳定。我们不得不在L1损失训练时调整一些损失权重。在YOLv5- s6_960上的测试中,OKS损失明显优于L1损失。我们像在[30]中一样,用尺度归一化的L1损失来训练我们的模型,以检查尺度不变性对我们的损失公式的影响。

论文笔记——YOLO-POSE_第10张图片

4.4.2 跨分辨率

我们已经通过不同的分辨率训练了我们的模型。我们选择了960作为我们的基本分辨率,因为我们能够在这个分辨率下获得具有竞争力的性能。超过这个分辨率,YOLOv5-s6模型的性能增益已经大大饱和,如下图所示:

论文笔记——YOLO-POSE_第11张图片 论文笔记——YOLO-POSE_第12张图片

在较低的分辨率下,YOLOv5s6姿态的表现明显比现有的最先进的低复杂度模型好,如COCO上的高效EfficientHRNet。

4.4.3 量化

YOLOv5模型是基于SiLU激活。正如Liu仁杰等人观察到的,像SiLU或hardSwish这样的无界激活函数不是量化友好的,而具有ReLUX激活的模型对量化是鲁棒的,因为他们有界的本性。因此,我们用ReLU激活重新训练了我们的模型。我们观察到在从SiLU改变到ReLU的激活过程中下降了1-2%。

我们称这些模型为YOLOv5_relu。我们已经将这些模型量化,以进一步将它们定位为嵌入式友好型。这些模型可以被量化,其精度下降可以忽略不计(~1.2%),如下表以YOLOv5-s6_960_relu为例所示。

论文笔记——YOLO-POSE_第13张图片

由于大多数CNN加速器都是针对整数操作进行优化的,因此通过8位量化或混合精度实现良好的精度对于在嵌入式系统中部署任何模型都是至关重要的。量化后的模型可以降低延迟和降低功耗。

五、总结

该文提出了一个端到端的基于 YOLOv5 的联合检测和多人姿态估计框架。它已经证明,YOLOPose在复杂性显着降低的情况下优于现有的自下而上方法。此工作是统一目标检测和人体姿态估计领域的第一步。到目前为止,姿态估计的大部分进展都是作为一个不同的问题独立发生的。这个SOTA 结果将进一步鼓励研究界探索共同解决这两项任务的潜力。此工作的主要动机是将对象检测的所有好处传递给人体姿势估计,因为我们正在目睹对象检测领域的快速进展。作者已经为 YOLOX 目标检测框架扩展了这种方法进行了初步实验,并取得了可喜的成果。作者也将把这个想法扩展到其他对象检测框架,并进一步推动有效人体姿态估计的极限。

你可能感兴趣的:(笔记,论文阅读,深度学习,目标检测)