论文地址:https://openaccess.thecvf.com/content_CVPR_2019/papers/Du_CrossInfoNet_Multi-Task_Information_Sharing_Based_Hand_Pose_Estimation_CVPR_2019_paper.pdf 论文代码:https://github.com/dumyy/handpose 论文出处:2019CVPR
本文提出一种CrossInfoNet,将hand pose estimation任务分成两部分:palm pose estimation和finger pose estimation,并对两个分支采用cross-connection方式进行信息共享(受多任务信息共享机制的启发)。
并提出一种热图引导的特征提取结构(heat-map guided feature extraction structure)以获得更好的特征图,可以从热图中通过end-to-end的方式进行训练,得到关节坐标。
实验部分在ICVL Dataset,NYU Dataset,MSRA Dataset,HANDS 2017 Challenge Frame-based Dataset四个公共数据集上进行自比较(消融实验)和与一些SOAT方法的比较。
3D人手姿态估计的难点:(1)关节高度灵活性;(2)局部自相似性;(3)严重的遮挡。 人手姿态估计从数据上发展为:RGB图像–双目图像–深度图像–RGB图像(做3D估计); 姿态估计算法分为:基于生成模型的方法(generative model-based )和基于学习的方法(learning-based),目前基于学习的方法发展SOAT。
对于深度图的处理,可以将深度图视为2D图像,然后回归到3D关节坐标。 本文采用的是2D输入图像,使用2D CNN网络。
采用多任务学习能够提高网络的泛化能力。 全局的人手姿态主要取决于palm的关节状态;局部人手姿态受到finger的关节状态影响最大。 本文根据多任务设计了一种分层模型(hierarchical model)。它包含2个branch,对应手掌关节回归sub-task和手指关节回归sub-task。
输出有热图和3D关节坐标两种方式。 热图能提供更多的关节相关信息,优于3D坐标。 一般采用maximum operation从热图获得关节坐标,但这不是端到端的方法。 本文提出了一种热图导引的特征图提取网络结构,能将热图到3D关节坐标实现训练端到端。
姿态可以由关节坐标和关节热图两种方法表示。 关节热图首先由Tompson等人提出,它使用2D热图表示每个人手关节的姿态参数,再通过后处理(post-processing)将他们转化成3D坐标。
热图不仅能减少需要的学习能力,还能提高泛化能力。
本文采用热图限制下的3D坐标回归。该策略能使模型学习到更好的特征图,无需后处理就可以得到准确的关节坐标。
模型设计分层模型可以将手姿态估计根据手的结构分解成多个子任务。
Chen et al.对每个手指和经过手指的连接关节都分配了子任务; Madadi et al. 使用5个分支为手指建模,再使用一个分支为手掌建模; Zhou et al.使用3个分支,一个用来表示大拇指,一个表示食指,一个表示剩下三个手指。
本文两个分支上使用不同的参数设置,可以使回归任务变的简单; 此外,使用交叉连接能使每个分支focus on自己的任务。
多任务信息分享多任务学习能够使模型更好的泛化。
Xia et al.提出多任务解决人体解析和人体姿态估计任务。使用2个FCNs,估计的姿态能提供目标级的形状先验来调整部位分割,部位分割能限制姿态位置的变化。最后两个任务通过fully-connected conditional random field (FCRF)进行融合。 文献[39]是第一个将多任务学习应用到人手姿态估计上的,他们将任务分为2D热图、3D热图和单位3D方向向量场。通过基于后处理的mean shift algorithm进行融合。
本文的关节回归任务分解成手掌的关节回归子任务和手指关节回归子任务。通过交叉连接2个子任务来分享信息。
CrossInfoNet:信息共享的多任务分层模型
初始化特征提取模块:整体热图作为约束来学习更好的特征图,获得全部关节特征。特征微调(refinement)模块:分解为两个子任务,一个子任务是估计手掌关节,另一个子任务是估计手指关节。再通过将两个子任务的特征图共享以提高估计性能。关节坐标回归模块注意:这步完成之后可以获得hand的姿态热图了,已经完成了手姿态估计的任务,只是这里是一个粗略的估计结果,后面的分层网络模块只是用来做微调。
上述baseline的特征微调结构和基于网络的全局方法没有太大的区别。
然而,在手掌回归分支中,有残余的手指特征,这些特征对于手掌姿态回归来说是噪声,但对于手指的姿态回归是有用处的。
因此想到设计一种新的多任务信息共享策略。
Twotask Cross-stitch Network是一种通用的都任务网络,如图5(a)所示。
根据图5(a)设计图5(b)的结构。
以上面分支为例,通过skip line来从全局手特征中减去palm特征,得到finger特征,然后采用cross line将上面分支的finger特征和下面分支的finger特征用concat串联,得到强化的finger特征。
具体的结构如下图所示:
视finger特征F_为手指的“attention mask”,这个mask对手掌姿态回归是noise,但对手指姿态回归是有利的。图6对应的算法如下:
初始特征提取模块 热图的检测误差定义为:
特征微调模块 用于提取手掌的初始特征P0和手指的初始特征F0的误差函数:
回归模块 手掌关节回归误差、手指关节回归误差、整手的关节回归误差分别定义为:
整体的误差函数
ICVL dataset 训练集:330K(22k frame真实的数据,300k经过平面旋转的增强数据) 测试集:1.5K 标签:16 annotated joints
NYU dataset 训练集:72k (three different views, subject A) 测试集:8k(subject A,B) 标签:14 annotated joints
MSRA dataset 数据集:76.5k(9 subjects and 17 different gestures for each one) 标签:21 annotated joints
HANDS 2017 Challenge Frame-based Dataset 训练集:957k(5 subjects) 测试集:295k(10 subjects, including 5 unseen subjects) 标签:21 annotated joints
评价标准 (1)the average 3D distance error between the ground truth and the predicted 3D joint location for each joint; (2)the percentage of success frames below a threshold.
误差比较: 速度比较: 效果图
