Adversarial PoseNet: A Structure-aware Convolutional Network for Human Pose Estimation
Official Code: pytorch
1.背景分析
关键点遮挡和人体重叠会导致人体姿态估计的难度增大,在这种情况下,可能会产生生物学上难以置信的姿势预测。相反,人类视觉能够通过利用联合互连的人体关节间的几何约束来预测姿势。 为了通过结合关于人体结构的先验来解决该问题,本文尝试使用生成对抗网络的形式,以在训练时隐式考虑这些先验信息,因为显式学习此类约束通常具有挑战性。基于此,本文设计了一个多任务生成器用以生成精准的人体关键点,设计了姿态辨别器P使得生成器获取的人体关键点视觉友好,设计了置信度鉴别器C使得生成器获取的人体关键点置信度高。
2.隐式结构化生成对抗网络
如下图所示,我们的对抗姿态估计网络分为三部分,1用于生成姿态的生成器网络,2用于鉴别姿态的鉴别器网络,3用于鉴别置信度的鉴别器网络。其中生成器输出32个heatmap图,其中16个是关键点heatmap,另外16个是与其对应的关键点遮挡heatmap。下图中的(1)分支,展示了没有对抗操作情况下,常规人体姿态估计网络的损失计算和参数更新方法。下图中的(2)分支,展示了利用置信度鉴别器C来辅助训练生成器G,将会产生更加可信的置信值结果。下图中的(3)分支,展示了利用姿态鉴别器P和置信值鉴别器C来辅助训练生成器G,将会将先验的人体连接结构隐式的利用到网络中,并提高预测效果。
3.多任务生成器
了解是否明显遮挡了身体部位为推断人体姿势的几何信息提供了重要信息。在此,为了有效地结合姿势估计和遮挡预测,我们建议使用多任务生成网络来解决该问题。该多任务网络既用来对关键点位置进行估计,又用来对关键点是否遮挡进行判断。
多任务生成器网络的loss如下公式所示,主要对各个阶段的关键点热图(y)和遮挡判断(z)进行回归。
4.置信度鉴别器C
首先明确,置信度鉴别器C的目的是为了使得最终生成器G获得的人体姿态的置信度能够更高。
文章利用一个卷积模块作为姿态鉴别器,具体结构如下图所示。
若生成器G生成了低置信度热度图,则置信度鉴别器C将结果归类为fake。生成器会基于这个结果误差做自我优化,产生更高的置信度,直到能够使得鉴别器C认为生成器的结果为True。因此即使存在遮挡,此过程也将帮助生成器G生成高置信度热度图。
鉴别器C的损失函数如下:
由于置信度鉴别器需要进行计算两个loss,因此需要有两个标签。
当置信度鉴别器的输入为GT热度图时,对应的标签为Creal,作者将标签编码为一个16维的向量。其中有对应关键点值的特征图所对应的向量为1,没有关键点的所对应的向量为0。
当置信度鉴别器的输入为生成器生成的虚假热度图时,对应的标签未Cfake,同理Cfake也是一个16维的向量。Cfake对应的取值如下公式所示,当生成的关键点热度图和GT热度图比较接近(距离小于阈值)时,对应的向量为1,反之对应的向量为0。
5.姿态鉴别器P
首先明确,姿态鉴别器P的目的是为了使得最终生成器G获得的人体姿态能够更加准确,且符合人体关节所固有的约束(不会生成一个不像人的关节图)。
文章利用一个卷积模块作为姿态鉴别器,具体结构如下图所示。
姿态鉴别器P的输入有三个,分别为:生成器产生的人体姿态热度图,遮挡热度图,以及对应的原始RGB图像。之所以要把RGB图像也作为输入,是因为有的情况下即使人体姿态和遮挡都符合正常的人体结构,但并不符合原始的RGB图,就是说生成了其他姿态的人体关键点,所以加入这个输入就是为了提升最终网络的性能。
鉴别器P的损失函数如下:
由于姿态鉴别器需要进行计算两个loss,因此需要有两个标签。在传统的使用GAN进行图像转换的工作中,鉴别网络,将真实样本标记为1,伪样本标记为0。对于人体姿态估计问题,我们发现仅通过将0或1作为标签,很难收敛网络。
当姿态鉴别器的输入为GT热度图和GT遮挡热图时,对应的标签为Preal,文章将标签编码为一个16维的向量。其中有对应关键点值的特征图所对应的向量为1,没有关键点的所对应的向量为0。
当姿态鉴别器的输入为生成器生成的虚假热度图和虚假遮挡热度图时,对应的标签未Pfake,同理Pfake也是一个16维的向量。Pfake对应的取值如下公式所示,其中di是第i个身体部位的预测位置与GT真实位置之间的归一化距离。对于假样本,如果预测的身体部位远离GT真实位置,则此图像中的姿势显然对身体构造不可信。因此若距离比较接近则对应的向量为1,反之对应的向量为0。
6.SAGANPose网络训练流程
最终整体的优化函数如下所示,通过最大化P,C两个鉴别器,以及最小化生成器达到对抗训练的目的。需要注意的是,在实验中,为了使最终目标函数的不同分量具有相同的比例,将超参数α和β分别设置为1/220和1/180。
如下图所示,算法的训练每一个迭代过程如下:
1.将原始图片x,输入到生成器,计算双向生成器的前向结果。G(x)=(y,z),通过最小化公式1优化生成器参数。
2.将原始图片x,双向生成器生成的两个虚假热度图G(x)=(y,z),输入到姿态鉴别器,得到虚假姿态鉴别结果Pfake^,通过最大化公式2中的第二部分优化姿态鉴别器。
3.将原始图片x,两个GT热度图(y,z),输入到姿态鉴别器,得到GT姿态鉴别结果Preal^,通过最大化公式2中的第一部分优化姿态鉴别器。
4.将原始图片x,双向生成器生成的两个虚假热度图G(x)=(y,z),输入到置信度鉴别器,得到虚假置信度鉴别结果Cfake^,通过最大化公式3中的第二部分优化置信度鉴别器。
5.将原始图片x,两个GT热度图(y,z),输入到置信度鉴别器,得到GT置信度鉴别结果Creal^,通过最大化公式3中的第一部分优化置信度鉴别器。
6.利用公式4更新所有的结果。
7.结果展示
作者在LSP和MPII两个人体关键点数据集上对上述隐式结构化对抗网络进行了结果分析,从下表可以看出,利用该方法能够有效提升模型效果,且不会增加太多推理时间。
从下表的结果可以进一步看出本文提出的隐式结构化对抗网络,通过生成对抗的方式隐含了人体四肢的结构化信息,能够有效处理人体关键点遮挡情况下的姿态估计。
网友评论