使用SGHMC(随机梯度哈密顿-蒙特卡罗方法)做姿态估计
这是401所信息中心我组最新工作。人体姿态估计是人工智能中场景认知和人体行为意图预测的重要基础。当前多采用CNN对视觉信息全局评估的方法。在本项研究中,我们尝试使用SGHMC方法,给出一个Energy全局函数 H ( θ , r ) H(\theta,r) H(θ,r)来引导heatmap的生成,取得了不错的效果。
人体姿态估计的研究意义
人体姿态估计是一个热点研究问题,也是诸多更高层次人工智能研究的基础。大致有如下意义:
- 机器视觉的人体识别和理解,可用于人机交互;
- 机器视觉的人体识别和理解,可用于异常行为识别,如暴力行为,危险行为检测;
- 机器视觉的人体识别和理解,可用于类人智能,如模仿/学习;
机器视觉的多人姿态识别(Multi-Person Pose Estimation)
多人姿态估计的两种研究方法:
- 自顶向下(top-down):先检测出多个人,再对每一个人进行姿态估计,可以将detection的方法加上单人姿态估计来实现;
- 自底向上(bottom-up):先检测出关节点,再判断每一个关节点属于哪一个人。
我们的方法
我们的神经网络采用paper Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields的网络架构,我们输出的Part Affinity Fields(PAFs)是一个2D向量集合 X ^ ∈ R d × d \hat{X} \in \mathbb{R}^{d \times d} X^∈Rd×d,每一个2D向量集合都会编码一个limb的位置和方向。这些fields和关节的置信图一起经过CNN进行联合学习和预测.;以上是基础方法的背景,我们方法的核心是从训练集学习神经网络的参数 θ \theta θ(而不是只有传统的神经网络梯度下降),我们将问题抽象为如下问题:
P
(
θ
∣
D
)
∝
exp
(
−
U
(
θ
)
)
\mathbb{P}(\theta | \mathcal{D}) \propto \exp(- U(\theta) )
P(θ∣D)∝exp(−U(θ))
U
(
θ
)
=
−
∑
x
∈
D
log
(
P
(
x
∣
θ
)
)
−
log
(
P
(
θ
)
)
U(\theta) = - \sum_{x \in D} \log(\mathbb{P}(x|\theta) ) - \log(\mathbb{P}(\theta) )
U(θ)=−x∈D∑log(P(x∣θ))−log(P(θ))
其中
x
x
x可以理解为训练集中的单个样本;
U
(
θ
)
U(\theta)
U(θ)是potential energy function;
目标函数如下:
π
(
θ
,
r
)
∝
exp
(
−
U
(
θ
)
−
r
T
M
−
1
r
)
=
exp
(
−
(
U
(
θ
)
+
K
(
r
)
)
)
=
exp
(
−
H
(
θ
,
r
)
)
\pi(\theta,r) \propto \exp(-U(\theta) - r^TM^{-1}r)=\exp(-(U(\theta)+K(r)))=\exp(-H(\theta,r))
π(θ,r)∝exp(−U(θ)−rTM−1r)=exp(−(U(θ)+K(r)))=exp(−H(θ,r))
可见训练的目标参数是 θ \theta θ,而 r r r是辅助训练的参数,HMC通过Hamiltonian动态过程来采样,每一步的迭代更新梯度的计算方式如下,而"随机"来自每一次采样的随机更新拒绝:
d
θ
=
M
−
1
r
d
t
d \theta = M^{-1}rdt
dθ=M−1rdt
d
r
=
−
∇
U
(
θ
)
d
t
dr = -\nabla U(\theta)dt
dr=−∇U(θ)dt
学习方法采用paper Stochastic Gradient Hamiltonian Monte Carlo的SGHMC方法:
实验结果
训练模型采样MPII数据集,以下是测试数据表现: