6D连续旋转表示(On the Continuity of Rotation Representations in Neural Networks)
出自论文:On the Continuity of Rotation Representations in Neural Networks
毕业设计用到机械臂,复现的论文提到采用6D旋转表示更适合神经网络学习。此前一直没弄清楚所谓的6D旋转表示是什么,为什么不直接用旋转矩阵或者四元数。今天查了些资料(其实是问了AI)简单总结一下,但其背后还涉及到更深层次的数学知识(例如群论)还远超出我的知识范围,希望在未来的一天弄明白。
文章提出6D旋转表示的关键点
- 研究表明,旋转表示的连续性对神经网络学习至关重要
- 传统四元数和欧拉角在4维或更低维空间中可能不连续,影响学习效果
- 论文提出5D和6D的连续表示,适合神经网络学习,实验显示效果更好
论文提出的连续表示
论文提出5D和6D的连续表示:
- 5D表示通过立体投影(stereographic projection)实现
- 6D表示通过类似Gram-Schmidt过程实现
这些表示保留了SO(3)的拓扑结构,实验证明在自动编码器、点云姿态估计和人体逆运动学任务中表现优异。
连续表示的定义与背景
论文中提出了连续表示的正式定义,旨在确保神经网络在训练和推理时,旋转空间中的小变化能够对应到表示空间中的小变化。具体定义如下:
- 设
原始空间,例如3D旋转空间SO(3),它是一个紧致的拓扑空间。 是表示空间,是实向量空间的子集,带有欧几里得拓扑。 - 存在两个映射:
,将原始空间映射到表示空间。 ,将表示空间映射回原始空间,且 是 的左逆,即对于每个 ,有 .
- 如果
是连续的,则表示 被称为连续表示。
在神经网络的上下文中:
- 网络输出的是表示空间
中的一个点。 - 通过
将其映射回原始空间 。 的连续性确保 中连通的集合在 中保持连通,这为神经网络提供了连续的训练信号,利于学习。
此外,如果
传统表示的不连续性:四元数和欧拉角
论文指出,对于3D旋转(即SO(3)),在4维或更低维的实欧几里得空间中,所有表示都是不连续的。这是因为3D旋转空间SO(3)的拓扑结构(与实射影空间
- 四元数:四元数是一个4维表示,但由于SO(3)的拓扑结构(它与实射影空间
同胚)无法在4维欧几里得空间中连续表示。 - 欧拉角:欧拉角是一个3维表示,更低维,更加不连续
具体来说,四元数的不连续性体现在某些旋转(如180度旋转)附近:
- 当旋转轨迹的迹(trace)为-1(对应180度旋转)时,四元数表示会出现跳变。例如,接近180度旋转的不同方向极限可能给出不同的四元数值。
- 这是因为SO(3)不能再4维或更低维的欧几里得空间中连续嵌入,拓扑学中的一个标准结果支持这一结论:SO(3)同胚于RP3,而RP3只能在5维或更高维的欧几里得空间中连续嵌入。
欧拉角同样存在不连续性,尤其在“万向节锁”问题中,当两个旋转轴对齐时,欧拉角表示会出现奇异点,导致学习困难。这种不连续性使得神经网络在学习和泛化时遇到困难,尤其是在需要跨震哥哥旋转空间进行平滑插值的任务中。四元数和欧拉角的低维性导致不连续性,实验显示它们在任务中误差较高,例如四元数最大误差可达179.93°
论文提出的连续表示
为了解决上述问题,论文提出了3D旋转的连续表示,这些表示位于更高维空间中:
- 5D表示:通过立体投影(stereographic projection)从SO(3)到5维空间中实现。这种方法利用了拓扑学的投影技术,确保映射是连续的。
- 6D表示:通过类似Gram-Schmidt过程从SO(3)到6维空间实现。这种方法是通过正交化过程构造连续的表示,保留了旋转的拓扑结构。
这些表示是连续的,因为它们满足论文定义的连续性条件,即
6D连续旋转表示的实现方式
关键点:
通过一个6维向量(由两个三维向量组成)来表示旋转矩阵的前两列,然后通过正交化过程生成完整的旋转矩阵。
这里假设旋转矩阵形式为:
6D旋转表示为:
从6D连续旋转表示到旋转矩阵
整个过程类似施密特正交化,基本逻辑是:
- 第一列:从
开始,标准化得到 ,确定第一个基向量。 - 第三列:使用
生成 ,确保与 正交(叉积保证垂直)。 - 第二列:通过
计算 ,确保三列形成右手正交基。
详细步骤:
将6D向量分为两个三维向量
和标准化
得到第一列 :通过
和 的叉积,标准化得到第三列 :通过
和 的叉积得到第二列 :最终形成旋转矩阵
,保证其属于SO(3):
最终形成的矩阵
- 正交性:
- 行列式:
从旋转矩阵到6D连续旋转表示
直接提取旋转矩阵的前两列,组成一个6维向量::