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网络
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),以同时提取全局-局部空间信息,如下图所示
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=∑a∈AP^j(a)(S(a)+Oj(a))D^j=∑a∈AP^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)=∑a∈AePj(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)