介绍一下这篇论文的主要内容给诸位读者。
论文地址:https://arxiv.org/abs/2204.06806
1. 介绍
多人2D姿态估计是理解图像中人类的任务。给定一个输入图像,目标是检测每个人并定位他们的身体关节。推断图像中多人的姿态即可具有挑战性是因为图像中的人数可变,尺度变化,身体部位的遮挡,人体的非刚性,以及各种其他原因。
图1所示。在拥挤的COCO val2017样本图像上的定性结果。上图:yolov5m6-pose的输出显示了我们方法的鲁棒性。一个人的关键点永远不会因为固有的分组而与另一个人发生错误。下图:HigherHRNetW32的输出,显示即使关键点位置基本正确,分组算法也很容易失败。自底向上的方法在拥挤的场景中容易出现这样的分组错误。
现有的姿态估计解决方案分为自上而下和自下而上。自上而下的[30]、[8]、[12]、[13]、[19]或两阶段方法是目前最先进的方法。他们首先采用重型人体检测器并执行对每个检测进行单人姿态估计。自顶向下方法的复杂度随着图像中人数的增加而线性增加。大多数需要恒定运行时间的实时应用程序不喜欢自上而下的方法,因为高复杂度和可变的运行时间。相比之下,自下而上的[4],[5],[14],[23],[25]方法提供恒定的运行时间,因为它们依赖于热图在单次拍摄中检测所有关键点,然后进行复杂的后处理,将它们分组为个人。自下而上的方法中的后处理可以涉及像像素级NMS,线积分,细化,分组等步骤。坐标调整和细化减少了下采样热图的量化误差,而NMS用于在热图中找到局部最大值。即使经过后处理,热图也可能不够尖锐,无法区分同一类型的两个非常紧密的关节。同样,自下而上的方法无法进行端到端的训练,因为后处理步骤是不可微的,并且发生在卷积网络之外。它们在不同的方法中有很大的不同,从线性规划[29]到各种启发式[4]。很难使用CNN加速器对它们进行加速,因此速度相当慢。One-shot方法[34,35]虽然避免了分组任务,但与自下而上的方法表现不一样。它们进一步依赖于额外的后处理来提高性能。
本文工作的动机是解决在没有热图的情况下进行姿态估计并符合目标检测的问题,因为目标检测中的挑战与姿态估计类似,例如尺度变化、遮挡、人体的非刚性等。因此,如果一个人体检测器网络可以解决这些挑战,那么它也可以处理姿态估计。例如,最新的目标检测框架试图通过在多个尺度上进行预测来缓解尺度变化的问题。在这里,我们采用相同的策略,在每个检测对应的多个尺度上预测人体姿态。同样,目标检测领域的所有重大进展都无缝地传递到姿态估计的问题上。我们提出的姿态估计技术可以很容易地集成到任何运行目标检测的计算机视觉系统中,而计算量几乎为零增长。
我们将我们的方法称为YOLO-Pose,基于流行YOLOv5[1]框架。这是第一次专注于解决没有热图的2D姿态估计问题的尝试,并强调摆脱目前使用的各种非标准化的后处理。我们的方法使用了与目标检测中相同的后处理。我们在具有挑战性的COCO关键点数据集[7]上验证了我们的模型,并在AP方面展示了有竞争力的准确性,在AP50方面比具有类似复杂性的模型有显著的改进。
在我们的方法中,与地面真实框匹配的锚框或锚点存储其完整的2d姿态以及边界框位置。来自不同人的两个相似关节可以在空间上彼此接近。使用热图,很难区分来自不同人的两个空间上接近的相似关节。然而,如果将这两个人与不同的锚点进行匹配,则很容易区分空间上接近和相似的关键点。同样,与锚点相关的关键点已经被分组了。因此,不需要进一步分组。
在自下而上的方法中,一个人的关键点很容易被误认为另一个人,如图1所示,而我们的工作本身就解决了这个问题。与自上而下的方法不同,YOLO-Pose的复杂性与图像中的人数无关。因此,我们拥有自上而下和自下而上两种方法的优点:恒定的运行时间以及简单的后处理。
总的来说,我们做出了以下贡献:
- 建议解决与目标检测相一致的多人姿态估计,因为尺度变化和遮挡等重大挑战对两者都是共同的。因此,迈出了统一这两个领域的第一步。我们的方法将直接受益于目标检测领域的任何进步。
- 无热图方法使用标准的OD后处理,而不是涉及像素级NMS、调整、细化、线积分和各种分组算法的复杂后处理。该方法是鲁棒的,因为没有独立的后处理的端到端训练。
- 将IoU loss的思想从框检测扩展到关键点。对象关键点相似度(ok)不仅用于评估,还作为训练的损失。OKS损失是尺度不变的,本质上给不同的关键点不同的权重。
- 以约4倍的计算量实现了SOTA AP50。例如,在coco test-dev2017 上 ,Yolov5m6-pose 在 66.3 GMACS下实现了89.8的AP50,而SOTA DEKR[30]在283.0 GMACS下实现了89.4的AP50。
- 提出了一种联合检测和姿态估计框架。通过OD网络,姿态估计几乎是免费的。
- 提出了模型的低复杂度变体,其性能明显优于像EfficientHRNet[15]这样的实时聚焦模型。
2. 相关工作
多人2D姿态估计可分为自上而下和自下而上两种方法。
2.1. 自上而下的方法
Top-down[8],[12],[13],[19],[20],[21]或两阶段方法首先使用较重的人体检测器(如Faster RCNN[21])进行人体检测,然后为每个检测到的人估计2d姿势。
因此,计算复杂度随人数线性增加。现有的自上而下的方法大多集中在设计网络架构上。mask – rcnn[20]检测关键点作为分割掩码。Simple Baseline[8]提出了一个简单的架构,具有一个深度骨干和几个反卷积层,以扩大输出特征的分辨率。这些方法具有尺度不变性,因为它们以相同的尺度处理所有受试者,在流行的基准上实现了最先进的性能。然而,它们在处理遮挡方面表现不佳。我们的方法在一定程度上克服了遮挡的挑战,如图3所示。
2.2. 自底向上的方法
Bottom-up方法[4],[5],[14],[23],[25]在一个镜头中找出图像中所有人物的无关关键点,然后将它们分组为单个人物实例。自下而上的方法工作在一个被称为热图的概率图上,它估计每个像素包含特定关键点的概率。关键点的确切位置是通过NMS找到的热图的局部最大值。自底向上的方法通常复杂度低,具有恒定运行时间的优点。然而,与自上而下的方法相比,准确性有很大的下降。还有各种其他的调整和细化步骤,以从热图中提取更好的关键点。各种方法不同的部分是用于对图像中检测到的身体部位进行分组的策略。OpenPose[4]构建了一个包含两个分支的模型,用于预测关键点热图和部分亲和场,后者是建模关节之间关联的2D向量。在分组过程中使用部分亲和场。在联想嵌入[5]中,Newell等人训练网络来预测每个关节的关键点热图和标签值。定义损失函数,预测属于同一个人的关节的相似标签值,以及属于不同人的关节的不同标签值。Chen等人提出了更高的HRNet[9],它使用更高的输出分辨率来大幅提高预测的精度。耿等人[30]最近提出了DEKR,提出了使用偏移图的直接回归方法。它提出了一种k分支结构,使用自适应卷积来回归相应关键点的偏移量。这种方法需要关键点热图和一个中心热图,用于后处理中的各种NMS操作。即使后处理没有任何分组,也不像我们的那样直截了当。
3. YOLO-Pose
和其他自下而上的方法一样,YOLO-pose是一种单镜头方法。然而,它不使用热图。相反,它将一个人的所有关键点与锚相关联。它基于YOLOv5[1]目标检测框架,也可以扩展到其他框架。我们也在YOLOX[2]上进行了有限程度的验证。图2说明了用于姿态估计的关键点头的整体架构。
3.1. 概述
为了展示我们解决方案的全部潜力,我们必须选择一个擅长检测人类的架构。OLOv5在准确性和复杂性方面都是领先的检测器。因此,我们选择它作为我们的基础,并在其基础上进行构建。YOLOv5主要专注于80级COCO[7]目标检测,盒头预测每个锚点85个元素。它们分别对应80类的边界框、对象得分和置信度得分。对应于每个网格位置,有三个不同形状的锚点。
对于人体姿态估计,它归结为一个单类人检测问题,每个人有17个相关的关键点,每个关键点再次用位置和置信度标识:{,,}。因此,与锚点相关的17个关键点总共有51个元素。因此,对于每个锚点,关键点头预测51个元素,盒子头预测6个元素。对于具有n个关键点的锚点,整体预测向量定义为:
关键点置信度是基于该关键点的可见性标志进行训练的。如果一个关键点是可见的或被遮挡的,那么ground truth置信度被设置为1否则如果它在视野之外,置信度被设置为0。在推理过程中,我们保留置信度大于0.5的关键点。所有其他预测的关键点都被拒绝。预测关键点置信度不用于评估。然而,由于网络预测了每个检测的所有17个关键点,我们需要过滤掉视野之外的关键点。否则,就会出现悬空的关键点,导致骨骼变形。现有的基于热图的自底向上方法不需要这一点,因为视野之外的关键点一开始就没有被检测到。YOLO-Pose 使 用 CSP-darknet53[27] 作 为 骨 干 ,PANet[6]用于融合来自骨干的各种尺度的特征。接下来是4个不同尺度的检测头。最后,有两个解耦的头用于预测框和关键点。
在这项工作中,我们将复杂度限制在150 gmac,在此范围内,我们能够取得有竞争力的结果。随着复杂性的进一步增加,有可能用自上而下的方法进一步弥合差距。然而,我们并不追求这条道路,因为我们的重点是实时模型。
图2。基于YOLOv5的YOLO-pose架构。输入图像通过darknetcsp骨干传递,该骨干生成各种尺度的特征图{P3, P4, P5, P6}。PAnet用于跨多个尺度融合这些特征图。PANet的输出被馈送给检测头。最后每个检测头分支成盒子头和关键点头。
3.2. 基于锚的多人姿态生成
对于给定的图像,与人匹配的锚点将其整个2D姿态连同边界框一起存储。框坐标根据锚点中心进行转换,而框尺寸根据锚点的高度和宽度进行归一化。类似地,关键点位置被转换为锚点中心。然而,关键点并没有按照锚点的高度和宽度进行归一化。关键点和框都被预测到锚点的中心。由于我们的增强与锚点宽度和高度无关,它可以很容易地扩展到无锚点的目标检测方法,如YOLOX [2], FCOS[28]。
3.3. 基于IoU的Bounding-box损失函数
大多数现代目标检测器优化IoU损失的高级变体,如GIoU [36], DIoU或CIoU[37]损失,而不是基于距离的框检测损失,因为这些损失是尺度不变的,并直接优化评估指标本身。我们使用CIoU损失进行边界框监督。对于与位置(,)和尺度s的锚点匹配的地面真值边界框,损失定义为
是位置(,)
和尺度s
的锚点预测框。在我们的例子中,每个位置有三个锚点,预测发生在四个尺度上。
3.4. 人体姿态损失函数公式
传统上,基于热图的自底向上方法使用L1损失来检测关键点。然而,L1损失不一定适合获得最优的ok。同样,L1损耗是朴素的,没有考虑到对象的尺度或关键点的类型。由于热图是概率图,在纯基于热图的方法中不可能使用ok作为损失。只有当我们回归关键点位置时,OKS才能用作损失函数。耿等人[30]使用尺度归一化的L1损失用于关键点回归,这是走向ok损失的一步。因为,我们直接根据锚点中心对关键点进行回归,所以我们可以优化评估指标本身,而不是代理损失函数。
我们将IOU损失的思想从box扩展到关键点。在关键点的情况下,对象关键点相似度(ok)被视为IOU。OKS损失具有固有的尺度不变性,并赋予某些关键点比其他关键点更多的重要性。例如,一个人头部(眼睛,鼻子,耳朵)上的关键点比一个人身体上的关键点(肩膀,膝盖,臀部等)上的关键点更容易受到像素级错误的惩罚。这些权重因子是COCO的作者从冗余中经验地选择的标注的验证图像。与vanilla IoU损失不同,它遭受非重叠情况下的梯度消失,OKS损失从未平稳。因此,OKS损失更类似于dIoU[37]损失。
对应于每个边界框,我们存储整个姿态信息。因此,如果一个地面真值边界框与位置(,)上的锚点匹配,并缩放s,我们就预测关于锚点中心的关键点。分别计算每个关键点的OKS,然后求和,以给出最终的OKS损失或关键点IOU损失。
对应于每个关键点,我们学习一个置信度参数,它显示了这个人是否存在一个关键点。这里,关键点的可见性标志被用作ground truth。
如果地面真值边界框与锚点匹配,位置(,)的损失对尺度s的锚点有效。最后,对所有尺度、锚点和位置的总损失进行求和:
= 0.5, = 0.05, = 0.1和_ = 0.5是为了平衡不同尺度的损失而选择的超参数。
3.5. 测试时间增广
所有用于姿态估计的SOTA方法都依赖于测试时间增强(TTA)来提高性能。翻转测试和多尺度测试是两种常用的技术。翻转测试的复杂度增加了2倍,而多尺度测试在3个尺度{0.5X, 1X, 2X}上进行推理,复杂度增加了(0.25X + 1X+4X) = 5.25X。当flip test和multiscale test同时开启时,复杂度增加了5.25*2x=10.5X。在我们的对比表中,我们相应地调整了复杂度。
除了增加计算复杂度之外,准备增强后的数据本身就很昂贵。例如,在翻转测试中,我们需要翻转图像,这会增加系统的延迟。同样,多尺度测试需要对每个尺度进行调整大小操作。这些操作可能非常昂贵,因为它们可能不像CNN操作那样被加速。融合各种前向传球的输出会带来额外的成本。对于一个嵌入式系统来说,如果我们可以在没有任何TTA的情况下获得有竞争力的结果,这是最符合我们利益的。我们所有的结果都是没有任何TTA的。
3.6. 关键点外边框
自上而下的方法在遮挡下表现不佳。相对于自上而下的方法,YOLO-Pose的优势之一是没有约束关键点必须在预测的边界框内。因此,如果关键点因为遮挡而位于边界框之外,它们仍然可以被正确识别。然而,在自上而下的方法中,如果行人检测不正确,姿态估计也会失败。在我们的方法中,遮挡和不正确的框检测的这些挑战都在一定程度上得到了缓解,如图3所示。
图3。应对自上而下方法的挑战。上图:YOLO-pose正确预测了位于边界框外的被遮挡关键点。下:对于中间的人来说,框检测并不精确。然而,这并没有限制右脚踝出错的关键点。它的预测是跳出框框的。自上而下的方法会完全错过右脚踝的关键点。
表1:与SOTA自下而上的方法在COCO2017 val集上的对比。翻转测试和多尺度测试结果的复杂度分别调整了2倍和5.25倍。
3.7. ONNX导出方便部署
ONNX [32] (Open Neural Network Exchange)用于神经网络的框架无关表示。将深度学习模型转换为ONNX,使其能够有效地跨各种HW平台部署。现有的自底向上方法中的后处理不是标准化的,并且使用的操作不是标准深度学习库的一部分。例如,基于关联嵌入的自下而上方法使用Kuhn-Munkres算法[29]进行分组,这是不可微的,不属于任何深度学习库的一部分。
我们模型中使用的所有操作符都是标准深度学习库的一部分,并且与ONNX兼容。因此,整个模型可以导出到ONNX,使其易于跨平台部署。这个独立的ONNX模型可以使用ONNX Runtime[33]执行,将图像作为输入,并推断图像中每个人的边界框和姿势。没有其他自底向上的方法可以端到端导出到中间的ONNX表示。
4. 实验
4.1. COCO关键点检测
数据集。 我们在COCO数据集[7]上评估了我们的模型。它由超过20万张图像、25万个person实例和17个关键点组成。train2017集包括57K张图像,而val2017和testdev2017集分别由5K和20K张图像组成。我们在train2017集上训练模型,并在val2017和test-dev2017集上报告结果。
评价指标。 我们遵循标准的评估指标,并使用基于oks的指标进行COCO姿势估计。我们报告了不同阈值和不同对象大小的平均准确率和平均召回率得分:AP, AP50, AP75, APL, AR。
训练。 我们采用类似YOLOv5[1]的增强、锚点选择和损失加权策略。我们使用随机尺度[0.5,1.5])的数据增强,随机平移[-10,10],概率为0.5的随机翻转,概率为1的马赛克增强,以及各种颜色增强。
我们使用带有余弦调度器的SGD优化器。基础学习率设置为1e-2。我们对模型进行300个epoch的训练。选择损失权重来平衡3.4节中讨论的各种损失。测试。我们首先在保持长宽比的情况下,将输入图像的大边调整为所需的尺寸。图像的下半部分进行填充,生成方形图像。这保证了所有输入图像都有相同的大小。
4.2. COCO val2017上的结果
表1将我们的方法与其他基于Higher HRNet和EfficientHRNet的SOTA方法进行了比较。我们所有的模型在AP方面都与现有的类似计算方法相竞争。我们的成就在AP50中最为显著,如图5所示。例如,YOLOv5m6-pose取得了比SOTA DEKR[30]模型更好的AP50,其复杂度、高出4倍。YOLOv5l6-Pose比任何其他自下而上的方法取得了更好的AP50。APL也是如此。例如,YOLOv5l6-Pose实现了比SOTA DEKR[30]模型更好的APL,其复杂度比SOTA DEKR[30]模型高2倍。COCO数据集上的这些结果表明,YOLO-Pose是现有的基于更高HRNet的最先进的自下而上方法的有力替代。
表2:在COCO2017 test-dev set上与自下而上方法的对比。翻转测试和多尺度测试结果的复杂度分别调整了2倍和5.25倍。
4.3. 消融研究:ok损失vs L1损失
ok损失是我们工作的主要贡献之一。由于这种损失与L1损失不同是受约束的,因此训练动态要稳定得多。在使用L1损失进行训练时,我们必须稍微调整损失权重。通过在YOLv5-s6_960上的测试,ok损失的性能明显优于L1损失。我们使用[30]中的尺度归一化L1损失来训练我们的模型,以检查尺度不变性对我们损失公式的影响。
表3:各种损失函数的比较。在损失函数中加入尺度信息可以提高精度。然而,OKS损失是获得最优OKS度量的最合适选择。
4.4. 消融研究:跨分辨率
我们已经在各种分辨率下训练了我们的模型。我们选择960作为基础分辨率,因为我们能够在此分辨率下获得有竞争力的性能。除此之外,性能增益在很大程度上达到饱和,如下图YOLOv5-s6模型:
表4:与SOTA低复杂度(少于30 gmac)模型在COCO2017 val数据集上的对比
在较低分辨率下,YOLOv5s6-pose在COCO val2017上的表现明显优于现有的最先进的低复杂度模型,如EfficientHRNet[15]。
图4。COCO val2017上低复杂度模型的mAP vs GMACS(少于30GMACS)。
4.5. 消融研究:量化
YOLOv5模型基于sigmoid-weighted linear unit (SiLU)[39]激活。正如Renjie Liu等人观察到的[38],像SiLU或硬swish[40]这样的无界激活函数对量化不友好,而具有ReLUX激活的模型对量化是鲁棒的,因为它们的有界性质。因此,我们用ReLU激活重新训练了我们的模型。我们观察到从SiLU到ReLU的激活变化下降了约1-2%。我们将这些模型称为YOLOv5_relu。我们对这些模型进行了量化,以进一步将它们定位为嵌入式友好型。这些模型可以以可以忽略不计的精度下降(~1.2%)进行量化,如下表所示,以YOLOv5-s6_960_relu为例。
表5:我们的模型在各种量化方案下的精度。
在16位量化的情况下,AP有0.1%可以忽略不计的下降,AP50没有下降。8位量化时,精度有明显下降。然而,使用混合精度,其中只有选定的少数卷积层在16位,其余层在8位,我们能够从float到1.2%的下降相当大的桥梁。在我们的混合精度设置中,我们必须将所有层的~30%设置为16位。由于大多数CNN加速器都针对整数运算进行了优化,因此用8位量化或混合精度实现良好的精度对于在嵌入式系统中部署任何模型都至关重要。量化模型导致更低的延迟和更少的功耗。
以上结果是使用后训练量化(PTQ)而不是量化感知训练(QAT)。
4.6. COCO test-dev2017上的结果
test-dev数据集的结果如表2所示。与类似计算的SOTA自下而上的方法相比,我们的模型在mAP指标上具有竞争力。YOLO-Pose对AP50显示了强大的结果,超过了图6所示的所有自下而上的方法。这可以归因于端到端的训练,其中我们的方法具有固有的分组,这比图1所示的其他自底向上方法中的独立分组更鲁棒。YOLO-Pose具有联合学习的好处。由于我们的模型可以正确定位每个人的实例,它能够以相当好的精度预测相关的关键点,从而显著提高AP50。例如,YOLOv5m6-Pose达到了89.8的AP50。而采用HRNetW48骨干网络的DEKR则达到了89.4的AP50。在计算方面,YOLOv5m6-Pose在AP50方面的复杂性超过了模型的4倍。图5和图6为AP50提供了一个简单的对比。
5. 结论
我们提出了一个端到端的基于YOLOv5的联合检测和多人姿态估计框架。我们已经表明,我们的模型在显著降低复杂度的情况下优于现有的自底向上方法。我们的工作是朝着统一目标检测和人体姿态估计领域迈出的第一步。到目前为止,姿态估计的大多数进展都是作为一个不同的问题独立发生的。我们相信,我们的SOTA结果将进一步鼓励研究界探索联合解决这两项任务的潜力。我们工作背后的主要动机是将目标检测的所有好处传递给人体姿态估计,因为我们正在见证目标检测领域的快速进步。我们已经对扩展YOLOX目标检测框架的这种方法进行了初步实验,并取得了有希望的结果。我们也将把这个想法扩展到其他物体检测框架,进一步推动高效人体姿态估计的极限。
本文参与了SegmentFault 思否写作活动,欢迎正在阅读的你也加入。
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net