DirectPose | 首个 检测&关键点 回归网络
DirectPose: Direct End-to-End Multi-Person Pose Estimation
论文地址:https://arxiv.org/pdf/1911.07451.pdf
1.出发点
最近,anchor-free的思想在CV的各个方向都大放异彩,尤其是目标检测领域。多数anchor-free的目标检测算法利用对图像中特征点的定位,实现目标检测。很容易看出,一个人体实例的关键点可以看作是一个具有两个以上(多个)角点的特殊的边界框,因此可以通过将更多的输出头附加到基于anchor-free的目标检测网络来解决人体关键点定位任务。基于此,产生了文章提出的端到端的人体关键点定位算法,DirectPose。该算法既不属于bottom-up系列也不属于top-down系列,作者希望这类方法能够为关键点定位任务提供一个新的视角。
2.DirectPose优势
DirectPose是一种端到端的关键点检测框架,直接将输入图像映射到对应人体实例的关键点上。该算法既不属于bottom-up类算法也不属于top-down类算法,因此DirectPose避免了上述两类关键点检测算法固有的问题,其即不像top-down类算法需要依赖先验的人体框,计算耗时也可以和输入图像中人体实例的个数解耦。也不像bottom-up类算法使用启发式方法将检测到的关键点分配到对应的人体实例上去。最后该算法更不需要使用现在人体关键点领域中常规的基于heatmap进行预测,避免了使用heatmap而带来的固有的编解码偏差。基于本算法的框架进一步说明了,我们可以使用目标检测的手段来解决关键点检测的任务,从而在同一个框架中同时实现这两个任务。
3.DirectPose框架介绍
DirectPose是在anchor-free目标检测算法FCOS的基础上,将每个像素回归的数量从4增加到2K,其中K是每个人体实例的关键点数量。换句话说,算法把关键点看作一个特殊的有K个角点的边界盒。将FCOS作上述简单的替换,就形成了DirectPose这个算法。且在保留原有的边界框分支的情况下,得到的算法可以同时进行关键点和边界框检测。
然而能量永远是守恒的,DirectPose利用直接预测关键点这种简单的方式,势必无法得到满意的检测结果。在FCOS目标检测算法中,单个特征向量可能足以承载简单的边界框检测所需的信息,但由于人体关键点数量多且要求更精准,如下图所示,这要求一个特征向量能够回归一个人体实例的所有关键点。因此,这样肯定是无法得到很精确的人体关键点位置的。本文的实验也验证了这一说法。
4.关键点对齐机制(KPAlign)
基于上述分析,本文提出了关键点对齐(KPAlign)模块,KPAlign模块尽可能将卷积特征与目标关键点(或一组关键点)对齐,然后使用对齐的特征预测目标关键点的位置。避免了单个特征向量表征性不够的问题。又因为目标关键点和其对应的卷积特征大致对齐,因此只需要对目标关键点附近的特征进行编码。且KPAlign模块连续可微,不影响模型端到端的特性。KPAlign模块整体示意图如下。
如上图所示,KPAlign模块由对齐器和预测器构成。其中对齐器由定位器和特征采样器。
(1).Aligner(对齐器)
对齐器由locator(定位器)和特征采样器组成,并输出对齐的特征向量。定位器本质上是3×3的卷积层,可以预测关键点的大致位置。接下来,特征采样器在这些位置采样特征向量。值得注意的是,这些位置坐标可以是小数,且坐标是小数时可以用双线性采样获取对应位置的特征。最后,对齐器可以大致对齐特征和预测的关键点。预测器使用这些对齐的特征向量进行最终关键点预测。
(2).Predictor(预测器)
将Aligner对齐器输出的特征向量输入到Predictor预测器进行最后的关键点定位。预测变量包括K个卷积层(即每个关键点对应一个卷积层)。举例来说,假设我们现在预测第t个关键点,φt表示第t个卷积层,最终第t个关键点的位置计算公式如下,结合了采样后的结果和原始像素输出的结果。
若要得到最终的关键点位置,需要使用相同的下采样率对坐标进行重新缩放。为简单起见,上述公式中省略了重新缩放运算符。下面将介绍三种可以提升KPAlign模块的策略。
分组KPAlign
根据上述的KPAlign模块来采样K个关键点的K个特征向量。 实际上,这是不必要的,因为某些关键点(例如,鼻子,眼睛和耳朵)总是在相同的局部区域中。 因此,作者将关键点分组,并且同一组中的关键点将使用相同的特征向量,这会将采样的特征向量的数量从K减少到G,且不会影响精度。
使用分散的特征采样
在前面描述的KPAlign中,所有关键点组都使用特征图F中所有的通道(256)作为输入。 通过实验发现,我们发现如果对G个关键点组使用不同的特征,则可以显着提高性能。 为了降低计算复杂度,将每个Ft的信道数设置为256/4=64。(这64个通道是随机的)。
特征采样器从哪里采集特征
为了方便起见,上述Aligner(对齐器)中的采样器对locator(定位器)的输入特征图上的特征进行采样,因此Predictor(预测器)和locator(定位器)采用相同的特征图作为输入。然而由于locator(定位器)是粗定位,需要大感受野的低分辨率的高层特征;而Predictor(预测器)是精定位,需要小感受野的高分辨率的浅层特征。所以上述特征输入的方式本质上存在问题。基于此,本文规定若locator(定位器)使用的是PL层的特征,则Predictor(预测器)就使用PL-1层的特征。
5.基于热度图进行辅助回归
另外,众所周知,在一张图上对坐标点进行直接回归是很困难的,模型将以难收敛。因此之前的算法都将关键点检测任务转化为基于heatmap的像素点级别的分类任务。但由于基于heatmap的框架无法实现端到端操作。因此本文使用了直接回归点的策略。作者发现回归任务可以在很大程度上受益于基于热图的学习。因此,作者建议在训练期间共同学习这两个任务,从而使得最终回归到的关键点更加精准。在测试时,基于热图的分支被禁用,因此不会 给框架带来任何开销。
热图辅助预测
由于是辅助训练,所以不使用高斯模糊制作标签,而是直接用点进行热图预测。最后由于正负样本不均匀,且难易程度不同,所以最后使用focal loss进行约束。
6.结果分析
作者对上述的几种策略做了熔断实验。实验结果如下:
下表结果Baseline表示直接用文章开头提到的端到端网络进行关键点预测的结果。而第二行表示加入KPAlign策略但是不将该策略里面的Aligner(对齐器)始能。而第三行表示本文提出的基于KPAlign策略的关键点检测结果。很显然特征对齐操作很影响性能。
如下表所示,为上述提到的分组KPAlign
,使用分散的特征采样
,特征采样器从哪里采集特征
这三种策略作用于KPAlign中,其效果依次如下所示。很显然,三种策略都是有效的。
如下表所示,为基于热度图辅助训练的结果展示。很显然,使用热图预测学习可以极大地提高性能。
如下表所示,利用该框架同时执行人体框检测在COCO mini验证集上达到55.3AP。
下图展示了本文提出的算法,与现有的bottom-up和top-down系列算法进行比对。