基于深度图的位姿估计(至今)

时间:2024-04-04 21:01:55

1. 简介

2. A2J回归网络

  • 论文:A2J: Anchor-to-Joint Regression Network for 3D Articulated Pose Estimation from a Single Depth Image (2019)
  • 核心思想
    • 本着整体学习以增强泛化能力的精神,通过聚合多个anchor点的估计结果预测3D关节位置
  • 代码https://github.com/zhangboshen/A2J
  • 主要特点
    • 基于anchor的回归网络,具有end-to-end的学习能力
    • 提出了一个“内容丰富的锚点(anchor)”方案,同时考虑了关节位置预测误差锚点空间布局
    • 为确保运行效率,采用了2D CNN,且没有反卷积层

2.1 历史总结

2.1.1 先进的非深度学习方案

  • 代表作
    • Real-time human pose recognition in parts from single depth images (2011,Jamie Shotton)
    • Depth-images-based pose estimation using regression forests and graphical models (2015, Li He)
  • 步骤
    • 第一步:提取人工设计的特征
    • 第二步:执行分类或回归
  • 不足
    • 人工设计特征表达能力不足

2.1.2 2D深度学习方案

  • 代表作
    • Deeppose: Human pose estimation via deep neural networks (2014, Alexander Toshev)
  • 特色
    • 深度学习对视觉模式特征具有很强的学习能力
    • 2D CNN在2D位姿估计中获得了巨大的成功
  • 步骤
    • 第一步:获得所有关节的热图(heatmap)集
    • 第二步:回归关节2D位姿
  • 不足
    • 热图设置无法适应不同的关节
    • 返卷积操作非常耗时
    • 部分基于encoder-decoder的方法无法进行end-to-end训练

2.1.3 3D深度学习方案

  • 核心思想
    • 为了充分利用深度图中的3D信息以提高性能,近来的研究倾向于3D深度学习
    • 此思路又分为两个研究方向:
      • 基于3D CNN
      • 基于point-set

2.1.3.1 基于3D-CNN

  • 代表作
    • 3D convolutional neural networks for efficient and robust hand pose estimation from single depth images (2017, Liuhao Ge)
    • Hand3d: Hand pose estimation using 3d neural network (2017, Xiaoming Deng)
    • V2v-posenet: Voxel-to-voxel prediction network for accurate 3d hand and human pose estimation from a single depth map (2018, Gyeongsik Moon)
  • 步骤
    • 将深度图像体素化为体积表示(例如,占用网格模型:[Voxnet: A 3d convolutional neural network for real-time object recognition (2017)])
    • 执行3D卷积或反卷积操作以提取3D视觉特征
  • 不足
    • 由于卷积参数众多,3D CNN训练较慢
    • 3D体素化操作需要较大的计算力和内存空间

2.1.3.2 基于point-set

  • 代表作
    • Pointnet: Deep learning on point sets for 3d classification and segmentation (2017, R Qi Charles)
    • Pointnet++: Deep hierarchical feature learning on point sets in a metric space (2017, Charles Ruizhongtai Qi)
  • 步骤
    • 把深度图转换成点云
    • 点云采样和KNN搜索
  • 不足
    • 运行效率低

2.1.4 A2J (2D深度学习)

  • 分组
    • A2J属于2D深度学习
  • 优点
    • 密集的锚点以整体方式捕获全局-局部空间上下文信息,而无需使用计算量大的反卷积层
    • 2D CNN用作骨干网络以提高运行效率

2.2 锚点到关节点(A2J)回归网络

2.2.1 A2J网络

基于深度图的位姿估计(2018至今)

  • 2D主干网络:
    • ResNet-50
  • 三个功能分支:
    • 平面内偏移量估计:预测 O j ( a ) O_j(a) Oj(a)
    • 深度估计:预测 D j ( a ) D_j(a) Dj(a)
    • 锚点提案:寻找信息量丰富的锚点, 预测 P j ( a ) P_j(a) Pj(a)

2.2.2 锚点选取方案

  • 锚点选取方案
    • 在输入深度图像中密集地选取锚点,其stride 为4个像素( S t = 4 S_t=4 St=4),以同时提取全局-局部空间信息,如下图所示
      基于深度图的位姿估计(2018至今)

2.2.3 计算关节位置

  • 需要计算关节以下两个位置:
    • 关节 j j j的平面内位置
    • 关节 j j j的深度值
  • 锚点用途
    • 每一个锚点都作为局部回归器,通过平原内偏移预测分支和深度估计分支来预测所有关节的3D位置
    • 对于特定的关节,每个锚点的贡献是不同的,通过锚点提案分支获得对应的权重 P j ( a ) P_j(a) Pj(a)
  • 计算关节 j j j在平面内的位置和深度值
    { S ^ j = ∑ a ∈ A P ^ j ( a ) ( S ( a ) + O j ( a ) ) D ^ j = ∑ a ∈ A P ^ j ( a ) D j ( a ) ( 1 ) \begin{cases} \hat{S}_j = \sum_{a \in A} \hat{P}_j(a)( S(a) + O_j(a) ) \\ \hat{D}_j= \sum_{a \in A} \hat{P}_j(a) D_j(a) \end{cases} \quad \quad (1) {S^j=aAP^j(a)(S(a)+Oj(a))D^j=aAP^j(a)Dj(a)(1)
    • S ^ j \hat{S}_j S^j:关节 j j j在平面内的估计值
    • D ^ j \hat{D}_j D^j:关节 j j j的深度估计值
    • P ^ j ( a ) \hat{P}_j(a) P^j(a):是锚点 a a a相对于关节 j j j的归一化权重,使用softmax进行计算而得
      P ^ j ( a ) = e P j ( a ) ∑ a ∈ A e P j ( a ) ( 2 ) \hat{P}_j(a) = \frac{e^{P_j(a)}}{\sum_{a \in A} e^{P_j(a)}} \quad \quad (2) P^j(a)=aAePj(a)ePj(a)(2)
      • P ^ j ( a ) > 0.02 \hat{P}_j(a) > 0.02 P^j(a)>0.02:则认为此锚点 a a a对关节 j j j来说,是一个信息丰富的锚点(informative anchor point)

2.2.4 计算锚点在平面内相对于关节的偏移量