
# 基于退火粒子滤波的关节身体运动捕捉

乔纳森·多伊彻

牛津大学

工程科学系

牛津，OX13PJ

英国

<mailto:jdeutsch@robots.ox.ac.uk>

安德鲁·布莱克

微软研究院

吉尔德霍尔街1号

剑桥，CB2 3NH

英国

<mailto:ablake@microsoft.com>

伊恩·里德

牛津大学

工程科学系

牛津，OX13PJ

英国

<mailto:ian@robots.ox.ac.uk>

## 摘要

关节身体运动跟踪的主要挑战在于需要恢复的自由度数量庞大（约30个）。若不加约束地搜索此类空间，无论是确定性还是随机性搜索算法都会面临指数级的计算复杂度问题。一种解决思路是引入约束条件——比如通过标记或颜色编码进行标识、对运动轨迹做先验假设，或是限制观测视角。另一种思路则是放宽关节带来的约束，将肢体运动视为相互独立的个体来跟踪。与之相反，本文旨在实现无需对受试者做特殊准备、也无需限制性假设的通用跟踪方法。

本文的核心贡献是开发了一种用于高维配置空间搜索的改进型粒子滤波器。该滤波器基于退火原理采用延续原则，逐步引入适应度函数中狭窄峰值的影响。这种被称为退火粒子滤波的新算法被证明能够高效恢复完整的关节身体运动。

### 1. 引言

### 1. 引言

基于标记的人体动作捕捉技术已经商业化应用多年，广泛应用于特效制作和生物识别领域[^19]。不过，使用标记的方式具有侵入性，需要借助昂贵的专用硬件，而且只能用于专门为此拍摄的影像资料。无标记的人体动作捕捉系统则可以利用普通摄像头运行，无需特殊服装或其他设备。结合如今性能强大的商用电脑，成本低且能实时处理的无标记人体动作捕捉技术终于成为了可能。这类系统的应用场景比基于标记的传统系统更为广泛，涵盖智能监控、角色动画以及计算机交互等多个领域。正因如此，人体动作捕捉领域近期迎来了一次复兴。

迄今为止，人体动作捕捉领域的研究尚未能开发出通用性足够强、可应对现实世界实际应用的全身追踪器，这恰恰反映出该问题的难度之大。相关研究主要集中于基于关节模型的方法。这种方法之所以受欢迎，是因为它能为每一帧生成模型配置这一高质量输出结果，而这种输出结果很容易被上层程序用来完成角色动画等任务。

使用多关节模型的问题在于其配置空间维度很高，从而导致计算成本呈指数级增长。一个现实的人体多关节模型（见图4）通常至少有25个自由度。例如，本文所使用的模型有29个自由度，而用于商业角色动画的模型往往超过40个自由度。

目前已经提出了多种有效的二维系统[^7] [^10]。这些系统适用于监控等应用场景，但它们无法提供三维角色动画所需的三维模型配置输出。

降低配置空间维度的策略有几种。首先，可以限制被追踪对象的运动范围。Hogg[^8]、Rohr[^17]和Niyogi[^15]都采用了这种方法，他们三人都假设被追踪对象处于行走状态。Rohr甚至将问题的维度进一步简化为行走周期的相位。Goncalves[^6]和Deutscher[^3]假设对被追踪对象的视角是固定的，Bregler[^2]和Rehg[^16]也是如此。这种方法极大地限制了所生成追踪器的通用性。

另一种约束配置空间的方法是进行分层搜索。如果多关节模型的某一部分能够独立定位，那么它就可以作为约束条件来缩小其余部分的搜索范围。Gavrila[^4]正是采用了他所称的搜索空间分解法来实现这一点。他能够利用颜色线索定位躯干，并利用这些信息来约束对四肢的搜索。然而，在没有颜色线索（或其他标记线索）辅助的情况下，在现实场景中很难独立定位特定的身体部位。这主要是由于自遮挡问题导致的，也因此排除了使用分层搜索的可能。

---

排除使用分层搜索的可能性。

要开发出实用的全身追踪器，就不能依赖于关于运动、视角或标记线索可用性的假设。本文的主要贡献是开发了一种用于搜索高维配置空间的改进型粒子滤波器，该滤波器不依赖此类假设。它基于退火原理运用延续性原则，逐步引入适应度函数中窄峰的影响。这种被称为退火粒子滤波的新算法被证明能够高效恢复完整的多关节人体运动。

### 2. 粒子滤波器

粒子滤波（也称为Condensation算法[^9]）为人体运动捕捉提供了稳健的贝叶斯框架。Condensation算法是为在杂乱环境中追踪物体而开发的，在此场景下后验密度$p(\mathbf{X}|\mathbf{Z}_k)$和观测过程$p(\mathbf{Z}_k|\mathbf{X})$往往是非高斯甚至多模态的（X表示模型的配置向量，$\mathbf{Z}_k = \{\mathbf{Z}_1, \ldots, \mathbf{Z}_k\}$表示时间$t_k$时的观测历史）。正如Deutscher[^3]所指出的，人体运动捕捉过程中复杂的观测过程会导致后验密度呈现非高斯且多模态的特性。众所周知，卡尔曼滤波器在这种情况下会失效。Deutscher等人证明，使用粒子滤波器能够提升追踪性能。

后验密度 $p(\mathbf{X}|\mathbf{Z}_{\mathbf{k}})$ 由一组加权粒子 $\{\left(\mathbf{s}_{k}^{(0)},\pi_{k}^{(0)}\right)\ldots\left(\mathbf{s}_{k}^{(N)},\pi_{k}^{(N)}\right)\}$ 来表示，其中权重 $\pi_{k}^{(n)}\propto p(\mathbf{Z}_{\mathbf{k}}|\mathbf{X}=\mathbf{s}_{k}^{(n)})$ 经过归一化处理，以满足 $\sum_{N}\pi_{k}^{(n)}=1$。每个时间步长 $\mathcal{X}_{k}$ 的状态 $t_{k}$ 可以通过以下方式估计：

 $$ \mathcal{X}_{k}=\mathcal{E}_{k}[\mathbf{X}]=\sum_{n=1}^{N}\pi_{k}^{(n)}\mathbf{s}_{k}^{(n)} $$

或者通过后验密度的众数来估计

 $$ \mathcal{X}_{k}=\mathcal{M}_{k}[\mathbf{X}]=\mathbf{s}_{k}^{(j)},\pi_{k}^{(j)}=\max(\pi_{k}^{(n)}) $$

后验密度 $p(\mathbf{X}|\mathbf{Z}_{\mathbf{k}})$ 的众数。

粒子滤波之所以效果良好，是因为它能够建模不确定性。不太可能的模型配置不会被立即丢弃，而是有机会在后续证明自身价值，从而实现更稳健的跟踪。不过，要获得这些特性，就要付出计算成本方面的代价。标准Condensation算法中最耗时的操作是计算似然函数 $p(\mathbf{Z}_k|\mathbf{X} = s_k^{(n)})$，而且每个时间步长都需针对每个粒子执行这一操作。为了能公平地表征 $p(\mathbf{X}|\mathbf{Z}_k)$，需要一定数量的粒子，而这一数量会随着模型配置空间的大小增加而增多。事实上，MacCormick和Blake [^14] 已经证明：

 $$ N\geq\frac{\mathcal{D}_{m i n}}{\alpha^{d}} $$

其中N表示所需的粒子数，d表示维度数量。生存诊断量 $\mathcal{D}_{min}$ 和粒子存活率 $\alpha$ 均为常数，且满足 $\alpha << 1$。关于这两个常数的解释可参见第5节。显然，当d较大时，常规的粒子滤波就变得不可行了。

MacCormick和Blake [^13] 开发了分区采样技术，作为Condensation算法的一种变体，旨在减少跟踪多个物体所需的粒子数量。MacCormick [^14] 如今也将该技术应用于关节物体的跟踪。采用分区采样可减少所需粒子数量，

 $$ N>=\frac{\mathcal{D}_{m i n}}{\alpha}. $$

从而使问题变得可解。不过，这一方法的前提是能够将配置空间切分，以便为模型配置向量 $p(\mathbf{Z}_k|x_k^i)$ 的每个维度 $x_k^i$ 构建观测密度 $\mathbf{X} = \{x_k^0 \ldots x_k^d\}$。这种假设——即能够独立定位关节模型的各个部分——与Gavrila为实现分层搜索所做出的假设类似。此前已有研究指出，若不借助标签线索，就无法采用这种方法。

Sullivan等人 [^18] 开发了另一种用于减少有效表征后验密度所需粒子数量的常规粒子滤波变体。该技术被称为分层采样，其核心思想是重要性重采样。不过实验结果表明，该技术不足以解决d > 30时的跟踪问题；在Condensation框架的预期行为失效之前，它最多只能将所需粒子数量减少5到10倍。

贝叶斯粒子滤波可能不适合全身人体动作捕捉的第二个原因是，构建作为归一化概率密度分布的有效观测模型 $p(\mathbf{Z}_k|\mathbf{X}_k)$ 存在困难。另一个因素是计算 $p(\mathbf{Z}_k|\mathbf{X} = \mathbf{s}_k^{(n)})$ 的成本。通常可以构造一种直观的加权函数 $w(\mathbf{Z}_k, \mathbf{X})$ 来近似概率似然 $p(\mathbf{Z}_k|\mathbf{X}_k)$，但评估该函数的计算量要小得多。概率观测模型还往往只利用那些能被很好建模的信息，而忽略其他可用信息。

考虑到这些因素，我们决定将问题从利用 $p(\mathbf{X}|\mathbf{Z}_k)$ 传播条件密度 $p(\mathbf{Z}|\mathbf{X})$ 简化为：在给定 $\mathcal{X}_k$ 的条件下，找到配置 $w(\mathbf{Z}_k, \mathbf{X})$，使得在每个时间点 $t_k$ 时，简单的高效加权函数 $\mathcal{X}_{k-1}$ 能返回最大值。这样做能在两方面取得成效：由于无需再完整表示函数 $p(\mathbf{X}|\mathbf{Z}_k)$，因此有望减少似然（或加权函数）评估的次数；同时也能简化加权函数的评估过程。

---

与观测模型 $w(\mathbf{Z}_k, \mathbf{X})$ 的评估相比，函数 $p(\mathbf{Z}_k|\mathbf{X})$ 所需的计算量应该极小。其主要缺点是无法在稳健的贝叶斯框架内运作。

我们决定继续使用基于粒子的随机框架，因为它能够处理多峰似然情况；对于加权函数而言，也就是那些具有多个局部极值的情况。问题是：针对具有多个局部极值的加权函数，如何高效地执行基于粒子的随机搜索以找到其全局最大值？最终我们决定采用一种类似于模拟退火的方法。

### 3. 模拟退火

基于马尔可夫链的模拟退火方法由Kirkpatrick等人 [^11] 提出，用于解决优化问题中的多模态情况。该方法采用一系列概率密度为 $p_0(x)$ 到 $p_M(x)$ 的分布，其中每个 $p_m(x)$ 仅与 $p_{m+1}(x)$ 略有不同。实际上样本需从分布 $p_0(x)$ 中抽取。分布 $p_M$ 的设计目的是让用于从中抽样的马尔可夫链能够在状态/搜索空间的所有区域间移动。通常的做法是设定 $p_m(x) \propto p_0(x)^{\beta_m}$，其中 $1 = \beta_0 > \beta_1 > \cdots > \beta_M$。

退火过程从某个初始状态开始，首先模拟旨在收敛于 $p_{M}$ 的马尔可夫链。接着从上一次模拟的最终状态出发，模拟旨在收敛于 $p_{M-1}$ 的马尔可夫链，迭代若干次。这一过程持续进行，用 $p_{m}$ 模拟的最终状态作为 $p_{m-1}$ 模拟的初始状态，直至最终模拟旨在收敛于 $p_{0}$ 的马尔可夫链。

需要注意的是，如果 $p_0$ 包含孤立的模态，那么从任意点开始模拟旨在收敛于 $p_0$ 的马尔可夫链可能会得到很差的结果，因为它可能会困在离起点最近的模态中，即便该模态所占的总概率质量很小。退火过程是一种避免这种情况的启发式方法，它利用了在其他分布下更自由的移动性。这正是随机搜索所需要的行为：以匹配函数的整体趋势为指引，朝着加权函数 $w(\mathbf{Z}_k, \mathbf{X})$ 的全局最大值移动，同时不被图1中出现的局部极值所误导。

现在，优化的退火思想被应用到基于退火粒子滤波器的框架中，以执行基于粒子的随机搜索。

### 4. 退火粒子滤波器

这里采用了一系列加权函数$w_0(\mathbf{Z}, \mathbf{X})$到$w_M(\mathbf{Z}, \mathbf{X})$，其中每个$w_m$仅与$w_{m-1}$存在细微差别（见图2，其中涉及$M = 3$）。函数$w_M$被设计成覆盖范围很广的形式，用以表征搜索空间的整体趋势；而$w_0$则应具有非常尖锐的峰值，以突出局部特征。这一效果是通过如下设置实现的：

 $$ w_{m}(\mathbf{Z},\mathbf{X})=w(\mathbf{Z},\mathbf{X})^{\beta_{m}}, $$

对于$\beta_0 > \beta_1 > \ldots > \beta_M$而言，其中$w(\mathbf{Z}, \mathbf{X})$即为原始的加权函数。由于我们的目标并非从$w(\mathbf{Z}, \mathbf{X})$中采样，而仅仅是找到其最大值，因此无需满足$\beta_0 = 1$的条件。

在每一个时间步$t_{k}$，都会利用图像观测数据$Z_{k}$执行一次退火运算。退火运算中每一层m结束后的追踪器状态，由一组包含N个加权粒子的集合来表示。

 $$ \begin{array}{r}{\mathcal{S}_{k,m}^{\pi}=\{(\mathbf{s}_{k,m}^{(0)},\pi_{k,m}^{(0)})\ldots(\mathbf{s}_{k,m}^{(N)},\pi_{k,m}^{(N)})\}.}\end{array} $$

未加权的粒子集合将被表示为：

 $$ \mathcal{S}_{k,m}=\{\left(\mathbf{s}_{k,m}^{(0)}\right)\ldots(\mathbf{s}_{k,m}^{(N)})\}. $$

集合$\mathcal{S}_{k,m}^{\pi}$中的每个粒子都被视为一个$(s_{k,m}^{(i)},\pi_{k,m}^{(i)})$对：其中$s_{k,m}^{(i)}$是多变量模型配置X的一个实例，而$\pi_{k,m}^{(i)}$则是对应的粒子权重。每次退火运算可按照如下步骤进行（该过程如图2所示）。

1. 在每个时间步$t_{k}$，从层M开始启动退火运算，此时m = M。

2. 退火运算的每一层都由一组未加权的粒子$S_{k,m}$初始化。

3. 随后为这些粒子中的每一个分配一个权重。

   $$ \pi_{k,m}^{(i)}\propto w_{m}(\mathbf{Z}_{k},\mathbf{s}_{k,m}^{(i)}) $$

这些权重会被归一化处理，以满足$\sum_{N}\pi_{k,m}^{(i)}=1$的条件。至此，加权粒子集合$\mathcal{S}_{k,m}^{\pi}$便形成了。

4. 从$\mathcal{S}_{k,m}^{\pi}$中随机抽取N个粒子，允许重复抽取，且抽取概率与其权重$\pi_{k,m}^{(i)}$相等。当被选中的$n^{th}$粒子为$\mathbf{s}_{k,m}^{(n)}$时，便会利用它来生成粒子$\mathbf{s}_{k,m-1}^{(n)}$，具体公式如下：

   $$ \mathbf{s}_{k,m-1}^{(n)}=\mathbf{s}_{k,m}^{(n)}+\mathbf{B}_{m} $$

其中$\mathbf{B}_m$是一个均值为0、方差为$\mathbf{P}_m$的多变量高斯随机变量。

5. 现在已生成集合$S_{k,m-1}$，可用于初始化层$m-1$。这一过程会不断重复，直至得到集合$S_{k,0}^{\pi}$。

$S_{k,0}^{\pi}$会被用来通过以下公式估算最优模型配置$\chi_{k}$：

 $$ \mathcal{X}_{k}=\sum_{i=1}^{N}\mathbf{s}_{k,0}^{(i)}\pi_{k,0}^{(i)}. $$

---

7. 随后利用$S_{k+1,M}$生成集合$S_{k,0}^{\pi}$，具体公式如下：

   $$ \mathbf{s}_{k+1,M}^{(n)}=\mathbf{s}_{k,0}^{(n)}+\mathbf{B}_{0}. $$

该集合会被用来在$t_{k+1}$时刻初始化下一次退火运算中的第M层。

![Image](images/039124974ccc839b1c7ee1fcb8e01f95df91546c44516b74424ac3523a7c7ed0.jpg)

<div style="text-align: center;">Figure 1: Illustration of the annealed particle filter with M = 1. Even though a large number of particles are used (so that an equivalent number of weighting function evaluations are made as in figure 2), the search is misdirected by local maxima. From the resulting weighted set it is very hard to tell where the global maximum of  $w_0$ lies.</div>

### 5. 设置追踪参数

如前所述，退火过程中每一层所使用的函数$w_m(\mathbf{Z}_k, \mathbf{X})$是由以下公式确定的：

 $$ w_{m}(\mathbf{Z},\mathbf{X})=w(\mathbf{Z},\mathbf{X})^{\beta_{m}} $$

其中$\beta_0 > \beta_1 > \ldots > \beta_M$。$\beta_m$的值决定了每一层的退火速率。较大的$\beta_m$会产生峰值更尖锐的加权函数$w_m$，进而导致较高的退火速率；反之，较小的$\beta_m$则会产生相反的效果。

如果退火速率过高，局部极大值的影响会扭曲对$\mathcal{X}_k$的估计结果，如图1所示。如果退火速率过低，则无法以足够的分辨率确定$\mathcal{X}_k$（除非增加层数，但这会浪费计算资源）。

用于衡量将被传播到下一层的有效粒子数的一个良好指标是存活诊断值 $\mathcal{D}$（取自 [^14]），其中

 $$ \mathcal{D}=\left(\sum_{n=1}^{N}(\pi^{(n)})^{2}\right)^{-1} $$

据此可以推导出退火速率的良好衡量标准，即粒子存活率 $\alpha$ [^5] [^12]

 $$ \alpha=\frac{\mathcal{D}}{N}. $$

既然已经得出了退火速率的衡量标准，就可以在每个时间步设置 $\beta_0^k, \ldots, \beta_M^k$ 的值 $t_k$。在退火过程的第 m 层，利用来自 $\beta_m^{k-1}$ 的 $t_{k-1}$ 来计算 $\mathcal{S}_{k,m}^n$ 的一组初步粒子权重。根据这组权重，就能得出初始退火速率 $\alpha_{init}$

![Image](images/b7aa080af4babf9bdeb1be33e06c8c23e610eef1b5e2ffd6c83523a7e86aeb4c.jpg)

<div style="text-align: center;">Figure 2: Illustration of the annealed particle filter with M = 3. With a multi-layered search the sparse particle set is able to gradually migrate towards the global maximum without being distracted by local maxima. The final set  $S_{k,0}^{\pi}$ provides a good indication of the weighting function's global maximum.</div>

可通过公式 13 和 14 来计算该初始退火速率。可以证明 $\mathcal{D}(\beta)$ 随 $\beta$ 单调递减，因此给定 $\alpha$ 后，该方程

 $$ \mathcal{D}(\beta)=N\alpha $$

存在关于 $\beta$ 的唯一解。有了这一认知，我们就能最小化期望退火速率 $\Delta_{\alpha}$ 与初始退火速率 $\alpha_{m}$ 之间的误差函数 $\alpha_{init}$

 $$ \Delta_{\alpha}(\beta)=(\alpha_{m}-\alpha_{i n i t}(\beta)), $$

通过梯度下降法来求得所需的 $\beta_m^k$。需要注意的是，这并不意味着每次在梯度下降过程中调整 $\beta_m^k$ 时都必须重新评估所有权重。由于 $w_m(\mathbf{Z}, \mathbf{X}) = w(\mathbf{Z}, \mathbf{X})^{\beta_m}$，各集合 $w(\mathbf{Z}, \mathbf{X} = \mathbf{s}_{k,m}^{(i)})$ 对应的数值 $i : 1 \ldots N$、$\mathcal{S}^{k,m}$ 可以被存储起来，再根据具体情况将 $\beta_m^k$ 应用于每个单独的权重，从而得到 $\mathcal{S}_{k,m}^{\pi}$。

那么，$\alpha_{0}$ … $\alpha_{M}$ 的合适值是如何确定的呢？此外还有许多其他跟踪参数

---

![Image](images/d7f02628bd21b8beec7c421a006aab0799d9706da1cc2fec47b8de6943fc4901.jpg)

![Image](images/de077b27690d58803a00f9f68ff7d6501cfb6180b6f819b44142d26e377dcc8d.jpg)

![Image](images/014969881b5ab6f3ffed350f0cec1a430b4fb1ff9024b14dc1d2c639a4f44d2d.jpg)

![Image](images/fa8f14d1eaaf695e34533bb42ea2a91227422c3e56c6e2ff55ab5850bcb7a247.jpg)

![Image](images/2506a9a3e111e5cb6b2274c8e8e19de06390b8e7429d6e0fd56903f19f04ece1.jpg)

![Image](images/8a0222509061fffd68786e7a1a9534e28ad703167dad86c7708c415442248b44.jpg)

![Image](images/a8f90a67df7d8d6206a8d763527a8dfac569a3c5af24cb70127c9e6dae45c9be.jpg)

![Image](images/20905261db08592ed5bdc5c58abd9f772328a9f5ddc2d0615a5cd8c5a541605d.jpg)

<div style="text-align: center;">Figure 3: Annealed particle filter in progress. The sets  $\mathcal{S}_{k,m}$ are plotted here, taken while tracking the walking person as seen in figure 9. Only the horizontal translation components  $x_0$ and  $x_1$ of the model configuration vector  $\mathbf{X}$ are shown. Starting with  $\mathcal{S}_{k-1,0}$ from the previous time step the particles are diffused to form  $\mathcal{S}_{k,9}$ which easily covers the expected range of translational movement of the subject. The particles and are then slowly annealed over 10 layers (the sets  $\mathcal{S}_{k,6}$ to  $\mathcal{S}_{k,4}$ are omitted for brevity) to produce  $\mathcal{S}_{k,0}$ which is clustered around the maximum of the weighting function.</div>

在开始跟踪之前需要设定这些参数，包括粒子数 N、退火层数 M 以及扩散方差向量 $\mathbf{P}_0 \ldots \mathbf{P}_M$。虽然已经初步制定了一个为这些参数赋值的框架，但人们也承认在这一领域还需进一步研究。

1. 第一步是确定所需的退火层数。研究发现，退火层数翻倍后，实现成功跟踪所需的粒子数会减少一半以上。不过这种方法只能在一定程度上奏效，因为无论使用多少层，跟踪所需的粒子数似乎都存在最小值 $(N)$。使用 30 个自由度的模型时，发现设置 $M = 10$ 且 $N \geq 200$ 能取得不错的效果。

2. 向量 $\mathbf{P}_0$ 中的每个元素都被赋予一个值，该值等于对应模型配置参数在一个时间步内的最大预期移动量的一半。这样一来，集合 $\mathcal{S}_{k+1,M}$ 就能覆盖目标物体在时间 $t_k$ 到 $t_{k+1}$ 之间的所有可能移动情况。添加到每一后续退火层的扩散量应随着集合 $\mathcal{S}_{k,m}$ 分辨率的提高而相应减少。研究发现，设置

   $$ \mathbf{P}_{m}=\mathbf{P}_{0}\big(\alpha_{M}\alpha_{M-1}\ldots\alpha_{m}\big) $$

能产生良好的结果。

3. 合适的退火速率 $\alpha_0 \ldots \alpha_M$ 会受到所用退火层数的影响。退火层数越多，所需的退火速率就越低，就能获得期望的分辨率。研究发现，使用 10 层退火时，设置 $\alpha_0 = \alpha_1 = \ldots = \alpha_M = 0.5$ 就能为 $\chi_k$ 提供足够高的分辨率。

### 6. 模型

本文中使用的人体关节模型是基于运动链框架构建的，如图4所示。每个肢体都通过具有椭圆截面的圆锥曲线来建模。人们认为这种模型具有诸多优势，包括计算简单、输出结果易于解读以及表示紧凑。

![Image](images/bd7a840a744d79c89f0baea5dd9cb8410981e22c8daf72abfdbf6072fa506191.jpg)

<div style="text-align: center;">(a)</div>

![Image](images/c48738b9f8825965952607f93ab14173b4eba9743a21f5e5fef903fc7c2c56da.jpg)

<div style="text-align: center;">(b)</div>

<div style="text-align: center;">Figure 4: The model is based on a kinematic chain consisting of 17 segments (a). Six degrees of freedom are given to base translation and rotation. The shoulder and hip joints are treated as sockets with 3 degrees of freedom, the clavicle joints are given 2 degrees of freedom (they are not allowed to rotate about their own axis) and the remaining joints are modelled as hinges requiring only one. This results in a model with 29 degrees of freedom and a configuration vector  $\mathbf{X} = \{x_1, \ldots, x_{29}\}$. The model is fleshed out by conical sections (b).</div>

### 7. 权重函数

在确定用于构建权重函数的图像特征时，必须考虑多个因素。

- 通用性。所使用的图像特征应在各种条件下都具有不变性，这样才能确保同一跟踪框架在多种场景下都能良好运行。

---

- 简洁性。为了使跟踪器尽可能高效，所选取的特征必须易于提取。

我们选择了两种图像特征来构建权重函数：边缘和前景轮廓。人体在图像中产生的连续性强边缘通常能很好地勾勒出可见手臂和腿部的轮廓，且这些边缘对颜色、衣物纹理、光照和姿势大多具有不变性。在极其杂乱的环境中，或者当被摄者穿着非常宽松的衣服时，边缘的实用性可能会有所下降，但在大多数情况下它们仍为构建权重函数提供了良好的基础。我们使用基于梯度的边缘检测掩码来识别边缘。随后对结果进行阈值处理以消除虚假边缘，再用高斯掩码对其进行平滑处理，最后将其重新映射到0到1之间。这样便生成了一个像素图（图5(b)），其中每个像素的值都与其距离边缘的远近相关。

接着利用以下公式计算平方差和（SSD）函数 $\Sigma^e(\mathbf{X}, \mathbf{Z})$：

 $$ \Sigma^{e}(\mathbf{X},\mathbf{Z})=\frac{1}{N}\sum_{i=1}^{N}\left(1-p_{i}^{e}(\mathbf{X},\mathbf{Z})\right)^{2} $$

其中 $\mathbf{X}$ 是模型的配置向量，$\mathbf{Z}$ 是生成该像素图所对应的图像。$p_i(\mathbf{X},\mathbf{Z})$ 则是如图6(a)所示，沿模型轮廓选取的N个采样点上边缘像素图的值。

对图像进行的第二种特征提取是前景-背景分割。此处采用阈值化背景减除法来将被摄者与背景分离，典型结果可见图5(c)。在一些背景动态变化较大的环境中，这种方法可能并不适用，此时可能需要采用更复杂的方法。大多数前景分割技术对衣物、光照、姿势、运动和环境等因素具有很大的不变性，因此能为通用人体动作捕捉系统提供极佳的图像特征。同样，我们会构建一个像素图，这次将前景像素设为1，背景像素设为0（图5(b)），随后计算SSD值。

 $$ \Sigma^{r}(\mathbf{X},\mathbf{Z})=\frac{1}{N}\sum_{i=1}^{N}\left(1-p_{i}^{r}(\mathbf{X},\mathbf{Z})\right)^{2} $$

其中 $p_i(\mathbf{X}, \mathbf{Z})$ 是如图6(b)所示，从圆锥截面内部选取的N个采样点上前景像素图的值。

为了结合边缘测量和区域测量结果，我们将两个SSD值相加后再取指数，从而得到：

 $$ w(\mathbf{X},\mathbf{Z})=\exp-\left(\Sigma^{e}(\mathbf{X},\mathbf{Z})+\Sigma^{r}(\mathbf{X},\mathbf{Z})\right). $$

当使用多台摄像机时，测量结果的合并方式类似，公式为：

 $$ w(\mathbf{X},\mathbf{Z})=\exp-\left(\sum_{i=1}^{C}\left(\Sigma_{i}^{e}(\mathbf{X},\mathbf{Z})+\Sigma_{i}^{r}(\mathbf{X},\mathbf{Z})\right)\right) $$

![Image](images/ffd1730de01654ede5c577511bf646002c4f0fb72ca5e6f65ec8c9e7314d32da.jpg)

<div style="text-align: center;">(a)</div>

![Image](images/c7d284525a540447ba65fe35c7dc7e7383e8ba05130a5c345fb1b682f1b9e245.jpg)

<div style="text-align: center;">(b)</div>

![Image](images/71b0587b58aa5ea1c13b9e6a16c7a3d98c1e420e50e9f67347320402d3651e08.jpg)

<div style="text-align: center;">(c)</div>

<div style="text-align: center;">Figure 5: Feature extraction. A gradient based edge detection mask is used to find edges. The result is thresholded to eliminate spurious edges and smoothed using a Gaussian mask to produce a pixel map (b) in which the value of each pixel is related to its proximity to an edge. The foreground is segmented using thresholded background subtraction to produce the pixel map (c) used in the weighting function.</div>

![Image](images/cff1d35c7843404921391beb83fae888a48ba3b3a6a9ec25e548465f3d127798.jpg)

<div style="text-align: center;">(a)</div>

<div style="text-align: center;">(b)</div>

<div style="text-align: center;">Figure 6: Configurations of the pixel map sampling points  $p_i(\mathbf{X}, \mathbf{Z})$ for the edge based measurements (a) and the foreground segmentation measurements (b). The sampling points for the edge measurements are located along the occluding contours of the model's conical sections that have been projected into the image. The sampling points for the foreground segmentation measurements are taken from a grid within these occluding contours.</div>

其中C表示摄像机的数量，$\sum_{i}^{*}(\mathbf{X})$ 来自第i台摄像机。该权重函数的输出示例如图7所示。

### 8. 实验结果

人体动作捕捉系统被用于追踪受试者进行的两种不同活动。第一种是如图9所示的圆圈行走；第二种则是受试者跨过箱子、转身后再跨过箱子，如图10所示。

该系统使用了三台摄像机来捕捉动作，对应的视图均可在相应图中看到。所有三个序列均采用相同的追踪参数，这证明了该追踪器能够应对各种复杂的人体运动。图8对比了退火粒子滤波器和传统的Condensation算法，结果显示前者具有更优的追踪性能。

---

![Image](images/0e5b0e3b2033912eb111b8fae4365f2e03da9181483136c46854af2db5195792.jpg)

![Image](images/bd202ebc3eaae5666e6ed437635041d0d12a0ef0be5badf8a603b25906ebd86d.jpg)

<div style="text-align: center;">Figure 7: Example output of the weighting function obtained by varying only component  $x_{15}$ of X (the right knee angle) using the image and model configuration seen in (a). The function is highly peaked around the correct angle of -0.7 radians (b).</div>

相当于相同的计算资源。

该追踪器在配备单颗175 MHz R10000 CPU的SGI Octane上运行。使用10个退火层、200个粒子时，系统处理5秒视频片段大约需要1小时。不过该追踪器仍处于原型阶段，我们希望未来能实现接近实时的性能。

## 9. 结论

实用化人体动作捕捉的主要障碍在于全身关节模型所涉及的维度数量庞大。无论是确定性算法还是随机算法，若不加约束地在这样的空间中搜索，都会面临计算复杂度呈指数级增长的问题。解决这一问题的一种方法是引入约束——比如通过标记或颜色编码进行标识、对运动轨迹的先验假设，或是视角限制。但使用这些约束会限制所开发追踪器的通用性。在研发无约束的全身追踪器时，我们必须解决高维配置空间中的追踪难题。

尽管Condensation算法已被证明是一种稳健且强大的随机滤波器，但它无法应用于高维配置空间。因此，我们开发了改良后的粒子滤波器。该滤波器基于退火原理，利用延续性准则逐步引入适应度函数中狭窄峰值的影响。这种被称为退火粒子滤波的新算法，能够高效还原全身关节的运动轨迹。从实际结果可以看出，即便面对复杂难度的运动序列，新方法也能实现非常稳健的追踪效果。由于成功追踪所需的粒子数量减少了十倍以上，这标志着向实时追踪迈出了重要一步。

致谢：本研究得到了Oxford Metrics公司和EPSRC项目（编号GR/M15262，参与者：JD、IR）的支持。IR感谢EPSRC高级研究奖学金的支持。

![Image](images/a2ea504ef862842f0c175f1bb9bebb7a77838f4225dfcd41a8db8742f6c997f6.jpg)

<div style="text-align: center;">t = 0 sec    t = 0.4 sec    t = 0.8 sec    t = 1.2 sec</div>

<div style="text-align: center;">Figure 8: A comparison of Condensation with the annealed particle filter. At top the results of tracking with 4000 particles using standard Condensation can be seen. An observation model based on a fusion of edge information (as in [^1]) and SSD template correlation was used. Tracking gradually deteriorates until terminal failure after 1.2 seconds. Experiments with 40000 particles were carried out taking over 30 hours to process just 4 seconds of video, still with negative results. An annealed search using 4000 particles with one layer fairy little better (middle), also suffering terminal failure after 1.2 seconds. The main difference between normal Condensation and single layer annealed sampling is that instead of a complicated observation model, a simple weighting function is used as described in section 7. This results in a 4 fold speed increase. An annealed search using 400 particles and 10 layers (i.e., 4000 weighting function evaluations per frame) tracks very well. It was found in practice that good results could be achieved with as little as 100 particles.</div>

JD还要感谢Ben North以及牛津视觉动力学小组在过去一年里给予的所有帮助。

## 参考文献

[^1]: Blake, A., and Isard, M. Active contours. Springer, 1998.

[^2]: Bregler, C., and Malik, J. Tracking people with twists and exponential maps. In Proc. CVPR (1998).

## [^3]: Deutscher, J., Blake, A., North, B., and Bascle, B. Tracking through singularities and discontinuities by random sampling. In Proc. 7th Int. Conf. on Computer Vision (1999), vol. 2, 1144–1149

---

![Image](images/bf1376e65c2eab3b319602144c5de1370d9d3c930c3a9ded75c3eee7fb09aa62.jpg)

t = 0秒　t = 1.2秒　t = 2.4秒　t = 3.6秒

图9：圆圈行走。利用三台摄像机（此处从上到下排列）追踪一个人4秒钟内的圆圈行走过程，追踪器全程都能保持精准锁定。该序列使用了10个退火层和200个粒子。可从<https://www.robots.ox.ac.uk/~jdeutsch/HMC/>下载相关视频。

[^4]: Gavrila, D., and Davis, L. 3d model-based tracking of humans in action: a multi-view approach. Proc. Conf. Computer Vision and Pattern Recognition (1996), 73–80.

[^5]: Geweke, J. Bayesian inference in econometric models using Monte Carlo integration. Econometrica 57 (1989), 1317–1339.

[^6]: Goncalves, L., di Bernardo, E., Ursella, E., and Perona, P. Monocular tracking of the human arm in 3D. In Proc. 5th Int. Conf. on Computer Vision (1995), 764–770.

[^7]: Haritaoglu, I., Harwood, D., and Davis, L. w $^{4}$s: A real-time system for detecting and tracking people in 2.5D. In Proc. 5th European Conf. Computer Vision (Freiburg, Germany, June 1998), vol. 1, Springer Verlag, 877–892.

[^8]: Hogg, D. Model-based vision: a program to see a walking person. J. Image and Vision Computing 1, 1 (1983), 5–20.

[^9]: Isard, M., and Blake, A. Visual tracking by stochastic propagation of conditional density. In Proc. 4th European Conf. Computer Vision (Cambridge, England, Apr 1996), 343–356.

[^10]: Ju, S., Black, M., and Yacoob, Y. Cardboard people: A parameterized model of articulated motion. In 2nd Int. Conf. on Automatic Face and Gesture Recognition, Killington, Vermont (1996), 38–44.

![Image](images/e4b260e1591e9e49467aa183f95c469331e514caf2de7ce5ebd6ba2372e83724.jpg)

[^13]: MacCormick, J., and Blake, A. A probabilistic exclusion principle for tracking multiple objects. In Proc. 7th Int. Conf. on Computer Vision (1999), vol. 1, 572–578.

[^11]: Kirkpatrick, S., Gellatt, C., and Vecchi, M. Optimisation by simulated annealing. Tech. rep., IBM Thomas J. Watson Research Centre, Yorktown Heights, NY, USA, 1982.

[^12]: MacCormick, J. Probabilistic models and stochastic algorithms for visual tracking. PhD thesis, University of Oxford, 2000.

图10：跨过盒子。利用三台摄像机（从上到下排列）对一个人进行追踪，记录其在5秒内跨过盒子、转身后再跨过盒子的过程。追踪器在整个过程中均能保持精准锁定。该序列采用了10个退火层，并使用了200个粒子。可从<https://www.robots.ox.ac.uk/~jdeutsch/HMC/>下载相关视频。

[^14]: MacCormick, J., and Blake, A. Partitioned sampling, articulated objects and interface-quality hand tracking. In Accepted to ECCV 2000 (2000).

[^15]: Niyogi, S., and Adelson, E. Analysing and recognising walking figures in xyt. In Proc. of IEEE Conference on Computer Vision and Pattern Recognition (1994), 469–474.

[^16]: Rehg, J., and Morris, D. Singularities in articulated object tracking with 2-d and 3-d models. Tech. rep., Digital Equipment Corporation, Cambridge Research Lab, 1997.

[^17]: Rohr, K. Human movement analysis based on explicit motion models. In Motion-Based Recognition. Kluwer Academic Publishers, Dordrecht Boston, 1997, ch. 8, 171–198.

[^18]: Sullivan, J., Blake, A., Isard, M., and MacCormick, J. Object localization by bayesian correlation. In Proc. 7th Int. Conf. on Computer Vision (1999), vol. 2, 1068–1075.

[^19] Vicon网络文献。网址：<http://www.metrics.co.uk>，1999年。该链接于1999年12月有效。
