Crd233's Notebook
Home
Courses
Languages
Math
CG
CV
AI
Reading
其它
1
World-Grounded Human Motion Recovery via Gravity-View
Coordinates
●
时间:
2024.9.10
●
这篇文章是周晓巍老师组的学长,也是我们
CV
导论课的助教的工作,发表在
SIGGRAPH Asia
上。
SIGGRAPH
和
SIGGRAPH Asia
是计算机图形学领域的两大顶级会议,由
ACM
(
美国计算机协会)主办。中了
ACM
的论文需要以它的格式写
CCS Concepts
和
ACM Reference Format
●
网上找到的笔记
World-Grounded Human Motion Recovery via Gravity-View Coordinates
1.1
摘要
●
这篇文章着眼于从
monocular video
恢复出
world-grounded
人体运动,其主要挑战在于
world coordinate system
的不确定性(时序
上)。以前的方法如何解决这一问题呢?它们通过
autoregressive
的方式预测相对运动,但有误差累计的风险。所以本文就提出一种全
新的
Gravity-View (GV) coordinate system
,
它是通过
world gravity
(
因此天然跟重力方向对齐)和每帧的
camera view direction
来
定义的,大大减少了
image-pose mapping
学习中的不确定性。同时,通过相机旋转方向可以把该坐标系下估计出的位姿转换回
world
坐标系下,形成全局运动序列。本文的方法无论在
camera space
还是
world-grounded space
下,无论在准确度还是速度下,都取得
了
SOTA
,
而且是完全开源的
1.2
引言
●
引言第一段介绍了
HMR
是什么,尤其是
world-grounded
的限制。它要求从视频中恢复出
人体连续的动作序列
,并且是要在
world
coordinate system
下,这个世界坐标系还得是
gravity-aware
的。相比起传统的每个
camera frame
对应的运动估计,它天然地就更适
合用作基础数据,供给生成式模型、物理模型使用(比如
text-to-motion
生成、人形机器人模仿学习这些应用需要高质量且一致的数
据)
●
第二段讲了现存方法的思路以及主要对比对象
WHAM
的不足之处。为了恢复出全局运动,一个直接的做法就是利用相机位姿来把相机
坐标系下的运动转换到世界坐标系下,但这往往并不保证
gravity-aligned
且会导致误差累计。一篇
23.12
的工作
WHAM
试图用
RNN
来自回归地预测全局的相对运动,作出了巨大的改进。但它的问题在于,首先是需要好的初始化,其次是误差累计导致无法维持重力
方向的一致性。本文认为,其内在的挑战源于世界坐标系定义的不确定性。给定世界坐标系下的坐标轴,任何绕着重力轴
(
y-axis)
的
旋转实际上都定义了合法的
gravity-aware world coordinate system
●
第三段就是介绍本文的工作。本文估计视频每帧
gravity-aware human poses
,
然后将它们基于
gravity constraints
组合起来以避免
gravity
方向的累计误差。这个设计背后的
insights
在于:给定一张图像,
gravity-aware human pose
对我们人类而言是很容易推断出
来的(朝着重力向下的方向);并且,当我们把
y-axis
限制为重力方向后,相机旋转这么一个原本是
3
自由度的问题就变成绕着
y-axis
这么一个单自由度问题,从而给定两帧之间的相机变换从直觉上就更容易。于是提出这么一个由重力方向和相机朝向所决定的
Gravity-View (GV) coordinate system
就变得顺理成章。基于此,本文提出一个网络来预测
gravity-aware human orientation
;
也提出
了一个算法来预测
GV systems
之间的相对旋转。这样就把所有帧都对齐到一个一致的
gravity-aware world coordinate system
下了
●
第四段更细化地介绍了本文的做法。
GV coordinate
的特性允许每帧的
human rotations
并行处理,在经典的
Transformer
架构上加入
Rotary Positional Embedding (RoPE)
,
相比传统的
absolute PE
能更好地捕捉视频帧之间的相对关系。在
inference
时,利用
mask
来限制每帧的感受野,从而避免了复杂而耗时的
sliding window
,
并且支持任意长度的并行推理。另外,还预测了手部和腿部的
stationary labels
,
用于
refine
腿部的滑动和全局轨迹
●
第五段就是常规总结贡献环节
1.
提出了
GV coordinates
和相应的恢复全局旋转的方法,避免了重力方向的累计误差
2.
提出了
RoPE
增强的
Transformer
架构,帮助泛化到长序列并改进了运动估计的质量
3.
做了详尽的实验证明这一方法不论在
in-camera
还是
world-grounded space
下达到了
SOTA
1.3
相关工作
●
Camera-Space Human Motion Recovery
●
World-Grounded Human Motion Recovery
1.4
方法
●
首先给几个形式化定义
1.
输入是单目视频
{
𝐼
𝑡
}
𝑇
𝑡
=
0
2.
局部(
SMPL
坐标系下的)
body poses
和
shape coefficents
(
帧共享)
{
𝜃
𝑡
∈
ℝ
2
1
×
3
}
𝑇
𝑡
=
0
,
𝛽
∈
ℝ
1
0
3.
从
SMPL space
到
camera space
的人物轨迹,包括旋转
(
orientation)
和平移
(
translation)
{
Γ
𝑡
𝑐
∈
ℝ
3
}
𝑇
𝑡
=
0
,
{
𝜏
𝑡
𝑐
∈
ℝ
3
}
𝑇
𝑡
=
0
4.
从
SMPL space
到
gravity-aware
world space
𝑊
的人物轨迹
{
Γ
𝑡
𝑤
∈
ℝ
3
}
𝑇
𝑡
=
0
,
{
𝜏
𝑡
𝑤
∈
ℝ
3
}
𝑇
𝑡
=
0
○
我们的目标就是上述每一帧的
𝜃
,
𝛽
,以及对应的分别在
in-camera
和
world-grounded space
下的描述
Γ
𝑐
,
𝜏
𝑐
,
Γ
𝑤
,
𝜏
𝑤
5.
但是本文提出了一个作为中间步骤的
GV coordinate system
○
定义每一帧从
SMPL space
到
GV space
的人物轨迹
{
Γ
𝑡
GV
∈
ℝ
3
}
𝑇
𝑡
=
0
■
仅旋转,不考虑平移因为跟相机坐标系共顶点,可以理解为跟
{
𝜏
𝑡
𝑤
∈
ℝ
3
}
𝑇
𝑡
=
0
一样
■
或者说,仅预测每一帧人物相对
GV system
的朝向
○
以及
GV coordinates
之间的相对旋转(后面详细解释)
{
𝑅
𝑡
Δ
GV
}
𝑇
𝑡
=
1
1.4.1
Global Trajectory Representation
●
一般的
human motion recovery
只需要
{
Γ
𝑡
𝑐
,
𝜏
𝑡
𝑐
}
𝑇
𝑡
=
0
就可以了;但对
world-grounded setting
而言还需要
{
Γ
𝑡
𝑤
,
𝜏
𝑡
𝑤
}
𝑇
𝑡
=
0
○
这个
world space
𝑊
要求四平八稳、重力朝下(即
𝑦
轴朝下),可以注意到这并非良定义的,因为绕着重力轴的任意朝向都是合法
的。本文把
𝑊
定义为
GV
0
,即第零帧的
GV coordinate system
●
对于
Global human trajectory
,
本文提出首先恢复出每帧的
gravity-aware human pose
(
相对
GV
坐标系),然后再把它们转化到一致
的全局轨迹下
○
这个方法的灵感正如
introduction
所述,我们人类可以很轻易地推断出一张图片中人物的朝向和重力的方向(即使这张图片是歪着
拍的);而且估计
“
人物绕着重力轴的朝向旋转
”
这一任务从直觉上来说就更容易且更鲁棒
●
具体来说,
GV
坐标系是用重力方向和每一帧的相机朝向(即成像平面的法向量)来定义的
○
当相机运动,则
GV
坐标系产生变化。我们可以用
DPVO (Visual Odometry)
或
GT gyro (ground truth by IMU in some datasets)
估
计每帧之间的相对相机位姿
𝑅
𝑡
Δ
,进而把所有的
GV
坐标系都转化到一个一致的
gravity-aware global space
下
○
对于位移,像
HuMoR
和
WHAM
一样,预测出
SMPL
坐标系下
𝑡
到
𝑡
+
1
的人物位移,然后推导出相对
world reference frame
的
位移
●
Gravity-View Coordinate System
,从重力方向和相机朝向定义
GV
坐标系步骤如下
1.
𝑦
轴与重力方向对齐,即
⃗
𝑦
=
⃗
𝑔
2.
通过
⃗
⃗
⃗
⃗
⃗
⃗
⃗
⃗
⃗
⃗
⃗
⃗
⃗
⃗
⃗
⃗
view
=
[
0
,
0
,
1
]
𝑇
和
𝑦
得到
⃗
𝑥
=
⃗
𝑦
×
⃗
⃗
⃗
⃗
⃗
⃗
⃗
⃗
⃗
⃗
⃗
⃗
⃗
⃗
⃗
⃗
view
3.
通过
⃗
𝑥
,
⃗
𝑦
得到
⃗
𝑧
=
⃗
𝑥
×
⃗
𝑦
○
这样我们就可以计算出人物在
GV
坐标系里的朝向
(
SMPL to GV)
Γ
GV
=
𝑅
c2GV
⋅
Γ
𝑐
=
[
⃗
𝑥
,
⃗
𝑦
,
⃗
𝑧
]
𝑇
⋅
Γ
𝑐
●
进一步,我们需要
Recovering Global Trajectory
,我们以
GV
0
作为
world reference system
𝑊
○
世界坐标系下人物中心的轨迹
■
使用
orientations
{
Γ
𝑡
𝑤
}
把预测出的
local velocities
𝑣
𝑡
root
转化到
world coordinate system
下,然后累加起来
𝜏
𝑡
𝑤
=
{
[
0
,
0
,
0
]
𝑇
,
𝑡
=
0
∑
𝑡
−
1
𝑖
=
0
Γ
𝑖
𝑤
𝑣
𝑖
root
,
𝑡
>
0
𝑣
root
是什么?
○
世界坐标系下人物朝向的轨迹
Γ
𝑡
𝑤
=
{
Γ
0
GV
,
𝑡
=
0
(
∏
𝑡
𝑖
=
1
𝑅
𝑖
Δ
GV
)
⋅
Γ
𝑡
GV
𝑡
>
0
TODO:
这里的推导我有些似懂非懂,先不写出来误人子弟了
●
这样的
GV
坐标系有什么益处呢?
1.
GV
坐标系下的人物朝向对神经网络是一个
well-suited
任务(因为
GV
坐标系是根据输入图像各自确定的),同时这种方式使得最
后的
global orientation
天然就是
gravity-aware
的
2.
作者还通过消融实验发现这种方式对预测
local pose
和
shape
也有益处
3.
并且,通过
GV
坐标系在
y-axis
上的一致性,消除了系统层面的累计误差
4.
同时,也减轻了相机位姿估计的潜在误差
(
GT Gyro / DPVO)
○
与
WHAM
相比,本文方法抛弃了
autoregressive
的方式,从而允许并行推断,也不需要初始化
○
用我自己的话来说(不保证正确)
,大概就是两点:第一,利用
GV
坐标系的定义降低网络学习任务的难度,降低了相机位姿和人
体位姿之间的多义性(比如,预测出的相机偏一点、人也偏一点,这是合法的,但可能性太多了;预测相对
GV
坐标系的人体位姿
则大大降低了不确定性的自由度),这样理解的话,不管是相机位姿的预测还是人体位姿的预测都更鲁棒了;第二,通过
GV
坐标系
消除了
y
轴方向的累计误差
1.4.2
Network Design
●
Input and preprocessing
○
跟
WHAM
一样,首先经过预处理模块,用
off-the-shelf
工具得到四种特征
1.
bounding box, from
CLIFF
2.
2D keypoint, from
ViTPose
3.
image features, from
4D-Humans
(一个把
Transformer
用在
HMR
的工作)
4.
relative camera rotations, from
DPVO
○
然后用
individual MLPs
把它们映射到同一个维度并相加,得到
per-frame tokens
{
𝑓
𝑡
token
∈
ℝ
5
1
2
}
○
多说一句,这个部分代码里全是
Conditions
,
denoiser3d
啥的,感觉像是从
Diffusion
那边的工作继承来的代码,没怎么整理就放出
来了;而且输入输出跟论文里略有不一致
(
bounding box & 2D keypoint)
,
或者是我没看懂
……
●
Rotary positional embedding
○
Transformer
利用绝对位置编码引入时序信息的操作相信早已司空见惯,但是这隐含地降低了模型泛化到训练长度以外的能力(人
体运动的绝对位置不确定,比如运动序列的起始点可以任意),因此这里引入了旋转位置编码
RoPE
○
RoPE
可以看
原作者的博客
和
一篇
CSDN
博客
或者
这篇知乎博客
,可能需要回顾一下传统位置编码与注意力机制(
我的
笔记
)
■
总之,
RoPE
是一个基于复数知识自然推导出的位置编码,通过相乘而非相加的方式加入,加入后就自然引入了相对信息,详情
见上述链接
○
以
GVHMR
的
notation
,
Transformer
原版
PE
可以表示如下
𝑜
𝑖
=
∑
𝑖
∈
𝑇
softmax
(
𝑎
𝑡
𝑠
)
𝑊
𝑣
𝑓
𝑖
token
𝑎
𝑡
𝑠
=
1
√
𝑑
𝑘
[
𝑊
𝑞
(
𝑓
𝑡
token
+
𝑝
𝑡
)
]
𝑇
[
𝑊
𝑘
(
𝑓
𝑠
token
+
𝑝
𝑠
)
]
○
而
RoPE
则是
𝑜
𝑖
=
∑
𝑖
∈
𝑇
softmax
(
𝑎
𝑡
𝑠
)
𝑊
𝑣
𝑓
𝑖
token
𝑎
𝑡
𝑠
=
(
𝑊
𝑞
𝑓
𝑡
token
)
𝑇
𝑅
(
𝑝
𝑠
−
𝑝
𝑡
)
∼
(
𝑊
𝑘
𝑓
𝑠
token
)
𝑅
(
𝑝
)
=
[
[
[
[
̂
𝑅
(
𝛼
𝑇
1
𝑝
)
0
⋱
0
̂
𝑅
(
𝛼
𝑇
𝑑
2
𝑝
)
]
]
]
]
̂
𝑅
(
𝜃
)
=
[
cos
(
𝜃
)
sin
(
𝜃
)
−
sin
(
𝜃
)
cos
(
𝜃
)
]
■
其中
𝑑
为注意力编码的维度(对自注意力则
QKV
都相等,这里是
5
1
2
);
𝛼
𝑖
为预定义的频率参数;
̂
𝑅
(
𝜃
)
显而易见为旋转矩阵;
𝑝
𝑡
代表第
𝑡
个
token
的时序索引
●
Receptive-field-limited attention mask
○
对上述自注意力的
softmax
处添加
mask
𝑜
𝑖
=
∑
𝑖
∈
𝑇
softmax
(
𝑎
𝑡
𝑠
+
𝑚
𝑡
𝑠
)
𝑊
𝑣
𝑓
𝑖
token
𝑚
𝑡
𝑠
=
{
0
,
if
−
𝐿
<
𝑡
−
𝑠
<
𝐿
−
∞
,
otherwise
○
于是
token
𝑡
只会对相对
𝐿
步内的位置有影响,赋予模型泛化到任意长序列的能力(而不需要自回归预测如
sliding window
的方式)
●
Network outputs
○
经过
relative transformer
后,再用
multimask MLP
得到各个预测目标,包括
1.
弱透视相机参数
𝑐
𝑤
2.
相机空间下人体朝向
Γ
𝑐
3.
SMPL
空间下
(
local)
人体位姿
𝜃
4.
全局轨迹表示
Γ
GV
and
𝑣
root
○
对于
camera-frame
下的人体运动,这里提到利用
CLIFF
的方法把
weak-perspective
相机转化为
full-perspective
;
对于
world-
grounded
下的人体运动,就是
小节
1.4.1
的那一套方法
●
Post-processing
○
这里就是说,受
WHAM
的启发,额外预测关节的
stationary probabilities
,
来更进一步
refine
全局运动
○
具体而言就是预测
hands, toes, and heels
的静止概率,然后逐帧更新
global translation
来确保静止的关节确实静止
■
总感觉这种方法不太优雅(不太符合直觉),大家都是预测出来的,不见得
stationary probabilities
就比算出来的
global
translation
更高贵(更准确)吧?只能说明算法还有待改进
○
新的改进过后的关节位置利用逆向运动学
(
inverse kinematics)
来重新计算出人体
local pose
■
这里用了一个现成的
CCD-based IK solver
(
19
年的工作)
●
总体感觉是,论文里写得虽然难懂但至少还算清晰,代码里则是充斥着继承来而未做整理的感觉
……
1.5
实验
●
Datasets and Metrics
○
似乎说是跟
WHAM
一样公平比较,略
●
Comparison on Global / Camera Space Motion Recovery
○
camera-space
的
SOTA
方法是
HMR2.0 (
Humans in 4D: Reconstructing and Tracking Humans with Transformers
)
■
给它加持上
DPVO
以及一个
straightforward baseline
方法从而能够也在
world-grounded
下进行比较
○
world-grounded
的
SOTA
方法是
WHAM: Reconstructing World-grounded Humans with Accurate 3D Motion
○
总之就是各种指标都好云云
●
Understanding GVHMR
○
各种消融实验,结论是都很有益
○
Running Time
,
速度上
GVHMR
也有改进