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
d是camera 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}
x∈R1∗J。训练损失如下公式所示,是因为作者只想让
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⊙(Xj−XjGT)∥其中
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。
做平滑的时候,同时利用上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的对比: