【论文阅读笔记】VNect: Real-time 3D human Pose Estimation with a Single RGB

论文总结:

  文中方法比较简单,通过全卷积CNN预测一个heatmap及location map。location map实际上就是X, Y, Z三个方向的坐标图,找到关键点的过程为heatmap 中寻找照最大值(x, y),则在对应的X, Y, Z找到对应位置的点,组成相对根节点的3D坐标。

  由于这种3D pose估计是通过单帧进行的,无法考虑前后信息,无法在视频时间上保持动作的一致性,所以需要一系列的后处理。

论文介绍:

  论文提到,如果将3D pose 视为2D pose的隐藏变量,则会产生空间的歧义性问题。因为2D 位置稀疏序列失去了空间的前后性,如四肢的前后方向(手往前和往后在2D序列中表现的位置是一样的),这样在模糊前提下的估计会导致错误的估计。所以,为了解决这种问题,作者提出从图像特征中直接学习3D pose隐含特征的判别方法。其实,就是在图像中联合训练2D和3D pose(3D 是相对于root的3D 关节点位置,root应该是骨盆位置).

  本文的目标是在30hz以上达到高质量的姿态估计。在预测开始的时候,由于没有对象的尺度信息,所以前几帧的检测效果是不太好的,这也是方法为了适应对象的身体比例的小副作用。

  VNect的输入是连续的单目RGB图像(实际上应该每次输入是一张RGB图像),第t帧的输出为全局3D骨骼位置 P t G P^G_t PtG。CNN联合训练2D关节点位置 K t K_t Kt和相对 root 的3D关节点位置 P t L P_t^L PtL。最后将2D和3D关节点预测位置结合起来,估计出一个平滑的、时间连续的姿态 P t G ( θ , d ) P^G_t(\theta, d) PtG(θ,d),其中 d d dcamera space的全局位置, θ \theta θ是运动学骨架的关节点角度。 J J J表示关节点的数量。

CNN姿态回归

  CNN模型如上图所示。骨干网络为ResNet50,从res5a开始修改结构,最终目标是预测2D heatmap和3个location map, X, Y, Z。通过使用额外的3个location map将2D heatmap扩展成3D,方式为:找到关节点 j j j的heatmap最大值位置,依据最大值位置在 X , Y , Z X, Y, Z X,Y,Z中找到对应的 x j , y j , z j x_j, y_j, z_j xj,yj,zj存为 P L = x , y , z P^L={x, y, z} PL=x,y,z,其中 x ∈ R 1 ∗ J x\in R^{1*J} xR1J。训练损失如下公式所示,是因为作者只想让 x j , y j , z j x_j, y_j, z_j xj,yj,zj得到训练,想到的强相关加权公式。 L o s s ( x j ) = ∥ H j G T ⊙ ( X j − X j G T ) ∥ Loss(x_j)=\| H^{GT}_j \odot (X_j - X_j^{GT}) \| Loss(xj)=HjGT(XjXjGT)其中 G T GT GT表示ground truth, ⊙ \odot 表示阿达玛乘积(Hadamard procuct),实际操作为元素对应乘积,2D的ground truth heatmap H j G T H^{GT}_j HjGT

  除输入和输出外,VNect的中间还加入了和root-relative location map X j , Y j , Z j X_j, Y_j, Z_j Xj,Yj,Zj相似的 kinematic parent-relative location-maps Δ X j , Δ Y j , Δ Z j \Delta X_j, \Delta Y_j, \Delta Z_j ΔXj,ΔYj,ΔZj,然后用于计算 bone length-maps : B L j = Δ X j ⊙ Δ X j + Δ Y j ⊙ Δ Y j + Δ Z j ⊙ Δ Z j BL_j=\sqrt {\Delta X_j \odot \Delta X_j + \Delta Y_j \odot \Delta Y_j + \Delta Z_j \odot \Delta Z_j} BLj=ΔXjΔXj+ΔYjΔYj+ΔZjΔZj

  在训练的时候,加入中间监督。随着迭代的加深,逐步减少中间损失的权重。中间监督从 res4d res5a 预测 2D heatmaps 3D location maps

  作者想通过结合中间预测和中间特征,给网络一个骨干长度的明确概念,以自适应特征对象躯干。

  2D pose使用MPII和LSP进行预训练,3D pose使用MPI-INF-3DHP和Human3.6m。huamn3.6数据集,除了S9和S11都用于训练,MPI-INF-3DHP使用全部。

  图片在输入之前,也是要将对象置中的,即进行crop。VNect的方案是通过上一帧的2D pose来确定Bounding box,高度扩展0.2x,宽度扩展0.4,bounding box被水平移动到2D预测的质心,以稳定预测。最后将crop出来的图像resize到368*368,以使比例正常。

Kinematic Skeleton Fitting

  在视频中,逐帧pose估计不能充分利用运动的时间一致性,小的pose误差会导致时间上的抖动,所以作者选择做时域滤波和平滑的后处理。

  做平滑的时候,同时利用上2D pose和3D pose,最后得到的坐标由最小化下图公式的能量所得,对于骨骼关节角度 θ \theta θ和root关节点的在camera space d d d的坐标。

E I K E_{IK} EIK是3D逆运动像,与3D CNN的输出 P t L P_t^L PtL的相关性来决定整体的pose; E p r o j E_{proj} Eproj决定全局姿态 d d d,通过2D检测结果来校正3D pose;至于时间稳定度,是 E s m o o t h E_{smooth} Esmooth的功劳;若摄像机标定位置,则假定垂直视角54度。为抵消单目重建中的不确定性,对深度的大变化进行补偿 E d e p t h E_{depth} Edepth。最后使用 1 E u r o f i l t e r 1 Euro filter 1Eurofilter进行filter。

  各项的权重为 w I K = 1 , w p r o j = 44 , w s m o o t h = 0.07 , w d e p t h = 0.11 w_{IK}=1, w_{proj}=44, w_{smooth}=0.07, w_{depth}=0.11 wIK=1,wproj=44,wsmooth=0.07,wdepth=0.11。而1 Euro filter的也有相关的权重,不了解,不列了。

论文实验

  在6核Xeon CPU, 3.8GHZ和单一的Titan X GPU上运行,CNN运算时间约等于18ms,骨骼fitting约在7~10ms,前处理和filtering 5ms。
  与微软的基于RGB-D的商业软件Kinect的对比:

  和其他方法的定量对比:作者认为Res50比Res100好的原因在于使用了更大的mini-batch.

猜你喜欢

转载自blog.csdn.net/qq_19784349/article/details/108349608
今日推荐