InterHand2.6M
摘要
目前,关于手势的研究大多为单手情况,为了更好的理解人的行为,文章提出了一个双手交互的手势预测数据集InterHand2.6M和一个基线网络InterNet。
介绍
- 过去3D手势估计大多是单手情况,现实中大多为双手交互和手-物体交互。
- 构造第一个大范围真实的基于RGB的3D手势数据集,该数据集包含了单手序列和双手交互序列。
- InterNet同时从单RGB图像中预测3D单手和双手手势。InterNet预测手是否存在、2.5D左右手手势和右手相对左手深度。2.5D手势包含2D手势和相对根节点(手腕)的深度。使用右手相对左手深度代替根节点绝对深度,将2.5D姿势提升到3D姿势。
- 交互手数据对准确的3D交互手势估计来说是重要的。
相关工作
基于深度图单手手势估计
- 拟合预定义手模型-minimizing hand-crafted cost function、particle swarm optimization和iterative closest point。
- 深度神经网络-估计每个手部关节的3D热点图(有的为多视觉2D热点图,通过算法转换为3D)或者回归每个手部关节点的3D坐标。
基于RGB的单手手势估计
- 深度神经网络-学习网络隐式3D关节或者发现手部潜在空间。
- 重构深度图-使用基于深度图的方法估计。
3D交互手势估计
- 从RGBD序列中使用粒子群优化预测3D手势。
- 从多视觉的RGB序列预测3D手势和手网(mesh)。
- 从单深度图中估计对应图和手分割图。
- 由于上述方法需要多视觉RGB和深度图,因而提出基于单RGB的3D交互手势识别。
3D手势估计数据集
- 由于从RGB图像中标记准确的3D手势困难,现有基于RGB的3D手势数据集的手和帧的数量很少。
- RHP是非现实的数据集,同时缺少双手的交互。Tzionas数据集仅标记了2D的手部关节点坐标。Mueller数据集是非现实的深度图数据集,同样没有3D的手部关节点坐标标记。Simon数据集不是大型的,手部区域很小。
source为数据集格式,包含真实深度图类型、真实RGBD类型、真实RGB类型、综合(模拟)RGBD和综合(模拟)深度图。
resolution为分辨率、annotation为标记方式、sub为不同手个数,fr为数据集帧数,int.hand为是否有双手交互。
- InterHand2.6M数据集由大范围的真实获取的RGB图像组成,同时强大的半自动化标注工具保证了3D手部坐标的准确性。
InterHand2.6M数据集
数据获取
- 多相机系统:80-140个摄像头、350-450个定向LED点光源和3D校准。图像分辨率:4096×2668。捕获速率:30-90fps。像素平均方差:0.42-0.48。
- 数据集组成(subjects):19男+7女
- 数据集组成(手序列类型):peak pose(40个左右手预定义姿势+13交互手手势)+ROM(15左右手手语手势+17交互手手语手势)
标注
- 每只手都有21个坐标标记。
- 多视觉获取,同一时刻获取6个不同视角的图像,并使用traingulation将2D坐标变成3D坐标。
- 两阶段标记。第一阶段依赖人工标记,标记者手动标记94914张2D图像。将这些2D标记使用traingulation转换成9036个3D坐标,之后在把3D坐标投影到大约80个视图中,得到698922张图像的2D坐标。第二阶段基于第一阶段标记的2D图像训练SOTA二维关键点检测器。使用该检测器检测未标注的图像,使用RANSAC将2D转3D。
数据集发布
- 以5fps将图像缩小尺寸到512×334分辨率。
- 以30fps将图像缩小尺寸到512×334分辨率。
InterNet网络
I
\mathbf I
I:单帧RGB图像。
F
\mathbf F
F:使用ResNet提取的RGB图像特征。
Handedness estimation
给定图像特征 F F F使用看两个全连接层预测手存在的概率 h \mathbf h h, h = ( h R , h L ) ∈ R 2 \mathbf h=(h^\mathbf R,h^ \mathbf L)\in\mathbb{R}^2 h=(hR,hL)∈R2。每个全连接层(除最后一层)后面都紧跟ReLU激活函数,最后使用sigmoid激活函数得到概率。
2.5D左右手手势估计
P
2.5
D
R
∈
R
J
×
3
,
\mathbf P_{2.5\mathbf D}^\mathbf R\in\mathbb{R}^{J×3},
P2.5DR∈RJ×3,
P
2.5
D
L
∈
R
J
×
3
,
\mathbf P_{2.5\mathbf D}^\mathbf L\in\mathbb{R}^{J×3},
P2.5DL∈RJ×3,其中
R
\mathbf R
R代表右手,
L
\mathbf L
L代表左手,
J
J
J代表单手关节点个数。
为每只手构造两个上采样器,每个上采样器包含3个反卷积层和一个卷积层,每个反卷积层后都接着批量标准化层和ReLU激活函数,上采样器对输入特征图上采样了
2
3
2^3
23次。上采样器接收特征
F
F
F为输入,并输出每只手的3D高斯热点图。
H
2.5
D
R
∈
R
J
×
D
×
H
×
W
\mathbf H_{2.5\mathbf D}^{\mathbf R}\in\mathbb{R}^{J×D×H×W}
H2.5DR∈RJ×D×H×W,其中
D
D
D,
H
H
H和
W
W
W分别为热点图的深度离散大小,高度和宽度。
右手相对左手深度估计
构造两个全连接层,除最后一层外都紧跟ReLU激活函数。它接收 F \mathbf{F} F为输入,并输出1D热点图 d R → L ∈ R 64 \mathbf d^{\mathbf R \to\mathbf L}\in\mathbb R^{64} dR→L∈R64,使用soft-argmax输出相对深度值 z R → L z^{\mathbf R \to \mathbf L} zR→L。
最终3D交互手势
P
3
D
R
=
∏
(
T
−
1
P
2.5
D
R
+
Z
R
)
\mathbf{P}_{3\mathbf{D}}^\mathbf{R}=\prod(\mathbf{T}^{-1}\mathbf{P}_{2.5\mathbf{D}}^\mathbf{R}+\mathbf{Z}^\mathbf{R})
P3DR=∏(T−1P2.5DR+ZR),
P
3
D
L
=
∏
(
T
−
1
P
2.5
D
L
+
Z
L
)
\mathbf{P}_{3\mathbf{D}}^\mathbf{L}=\prod(\mathbf{T}^{-1}\mathbf{P}_{2.5\mathbf{D}}^\mathbf{L}+\mathbf{Z}^\mathbf{L})
P3DL=∏(T−1P2.5DL+ZL),其中
∏
\prod
∏和
T
−
1
\mathbf{T}^{-1}
T−1分别为相机背投和仿射逆变换。
Z
R
=
[
(
0
)
,
(
0
)
,
(
z
R
)
]
\mathbf{Z}^\mathbf{R}=[(0), (0), (z^{\mathbf{R}})]
ZR=[(0),(0),(zR)],
Z
L
=
{
[
(
0
)
,
(
0
)
,
(
z
L
)
]
,
i
f
h
R
<
0.5
[
(
0
)
,
(
0
)
,
(
z
R
+
z
R
→
L
)
]
,
o
t
h
e
r
w
i
s
e
,
\mathbf{Z}^\mathbf{L}= \begin{cases} [(0),(0),(z^\mathbf{L})], & \mathbf{if}\ h^{\mathbf{R}}<0.5\\ [(0),(0),(z^{\mathbf{R}}+z^{\mathbf R \to \mathbf L})], &\mathbf{otherwise}, \end{cases}
ZL={[(0),(0),(zL)],[(0),(0),(zR+zR→L)],if hR<0.5otherwise,
其中
z
R
z^\mathbf R
zR 和z
L
^\mathbf L
L分别为右手、左手根节点的绝对深度。使用RootNet获取左右手手腕的绝对深度。
损失函数
Handedness loss.
使用二元交叉熵损失函数: L h = − 1 2 ∑ Q ∈ ( R , L ) ( δ Q l o g h Q + ( 1 − δ Q ) l o g ( 1 − h Q ) ) L_{h}=-\frac{1}{2}\sum_{\mathcal Q \in(\mathbf R, \mathbf L)}(\delta ^{\mathcal Q}logh^{\mathcal Q}+(1-\delta ^{\mathcal Q})log(1-h^{\mathcal Q})) Lh=−21∑Q∈(R,L)(δQloghQ+(1−δQ)log(1−hQ)),其中 δ Q \delta ^{\mathcal Q} δQ表示 Q \mathcal Q Q手是否存在,存在为1,不存在为0。
2.5D hand pose loss.
使用
L
2
L2
L2损失函数:
L
p
o
s
e
=
∑
Q
∈
(
R
,
L
)
∥
H
2.5
D
Q
−
H
2.5
D
Q
∗
∥
2
L_\mathbf{pose}=\sum_{\mathcal Q\in\mathbf{(R,L)}}\begin{Vmatrix} \mathbf{H}_\mathbf{2.5D}^\mathcal Q-\mathbf{H}_\mathbf{2.5D}^\mathcal{Q*} \end{Vmatrix}_2
Lpose=∑Q∈(R,L)∥∥H2.5DQ−H2.5DQ∗∥∥2,其中
∗
*
∗表示真实标记。如果输入图像中没有手的出现,则将该手的损失设置为0。
真实3D高斯热点图:
H
2.5
D
Q
∗
(
j
,
z
,
x
,
y
)
=
e
x
p
(
−
(
x
−
x
j
Q
)
2
+
(
y
−
y
j
Q
)
2
+
(
z
−
z
j
Q
)
2
2
σ
2
)
\mathbf H_\mathbf{2.5D}^\mathcal{Q*}(j,z,x,y)=\mathbf{exp}\left(- \frac{(x-x_j^\mathcal{Q})^2+(y-y_j^\mathcal{Q})^2+(z-z_j^\mathcal Q)^2}{2\sigma^2} \right)
H2.5DQ∗(j,z,x,y)=exp(−2σ2(x−xjQ)2+(y−yjQ)2+(z−zjQ)2),其中
x
j
Q
x_j^\mathcal Q
xjQ,
y
j
Q
y_j^\mathcal Q
yjQ,
z
j
Q
z_j^\mathcal Q
zjQ表示
P
2.5
D
Q
\mathbf{P}_{\mathbf{2.5D}}^\mathcal{Q}
P2.5DQ中
Q
\mathcal Q
Q手第
j
j
j个的关节点的坐标。
Right hand-relative left hand depth loss.
使用
L
1
L1
L1损失函数:
L
r
e
l
=
∣
z
R
→
L
−
z
R
→
L
∗
∣
,
L_\mathbf{rel}=\begin{vmatrix} z^{\mathbf{R \to L}}-z^{\mathbf{R \to L*}} \end{vmatrix},
Lrel=∣∣zR→L−zR→L∗∣∣,其中
∗
*
∗表示真实标记。如果输入图像只包含一只手,则该损失函数为0。
L
=
L
h
+
L
p
o
s
e
+
L
r
e
l
L=L_\mathbf h+L_\mathbf{pose}+L_\mathbf{rel}
L=Lh+Lpose+Lrel
实现细节
使用PyTorch框架实现。网络的主干部分使用再ImageNet上预训练的ResNet-50参数初始化,其余参数初始化 σ = 0.001 \sigma=0.001 σ=0.001的高斯分布。以64的小批量使用Adam更新参数,并使用真实的边框裁剪输入图像手的区域。裁剪的图像被改变尺寸为256×256,空间热点图大小为64×64。使用数据增强策略,包括平移 ( ± 15 % ) (\pm15\%) (±15%),缩放 ( ± 25 % ) (\pm25\%) (±25%),翻转 ( ± 9 0 ∘ ) (\pm90^\circ) (±90∘),水平剪切,色彩抖动 ( ± 20 % ) (\pm20\%) (±20%)。初始化学习速率为 1 0 − 4 10^{-4} 10−4并在第15个epoch和第17个epoch衰减10倍。该模型在4个NVIDIA TitanV GPUs一共训练20个epoch,总耗时48小时。InterNet速度为53fps.
实验
数据集和评估指标
STB
STB包含来自同一个人的6对不同背景的立体姿势序列。该数据集使用EPE(end point error),定义为根节点对其后预测点和真实点的平均欧几里得距离。
RHP
20个不同个体的3D人体模型模拟39种动作。评估指标同样为EPE。
InterHand2.6M
InterHand2.6M数据集的划分:
其中H为人类标注,M为机器标注。
三个评估指标
- A P h \mathbf{AP_h} APh(average precision of handedness estimation):评估手预测的准确率。
- M P J P E \mathbf{MPJPE} MPJPE:同EPE。
- M R R P E \mathbf{MRRPE} MRRPE(mean relativa-root position error):预测和真实的右手相对左手深度的欧几里得距离。
消融研究
交互手数据的好处
在相同RootNet训练下,基于交互手数据集的MPJPE小于基于单手数据集的MPJPE,结合单手和交互的数据集表现更好。
机器标注的准确率
在人类标注训练集中训练机器标注模型,并在人类标注测试集中测试,测试结果如下图:
随着视图的增加,误差和标准偏差也在不断的减小,当视图个数为90时,误差为2.78mm。
机器生成标注的好处
对比模型在人工标注和机器标注以及两者同时训练时在不同验证集的误差:
在人工标注数据集下训练的模型比在机器标注数据集下训练的模型效果好。在两者训练下的模型表现更加,虽然人工标注比机器标注准确,相对地,训练出来的模型也好,不过人工标注非常耗时。
SOTA对比
对比了之前的算法,InterNet学习容易并取得了SOTA的性能。
在InterHand2.6M评估
- 与单手相比,双手交互的情况复杂,更难分析,学习更难。
- InterNet误差相对较大,基于RGB图像进行3D交互手姿势估计远未解决。
普通图片3D交互手势估计
将Tzionas数据集随机划分
9
:
1
9:1
9:1为训练集和测试集,在训练时,同时对InterHand2.6M和Tzionas数据集3D和2D监督。在识别的3D热点图上是使用soft-argmax提取3D坐标,然后修改
L
p
o
s
e
L_\mathbf{pose}
Lpose为预测的3D坐标和真实坐标的
L
1
L1
L1距离。当输入图像来自Tzionas时,将z坐标轴的损失设置为0。下图展示了成功预测3D坐标的例子。
结论
提出一个基准-InterNet和一个数据集-InterHand2.6M。