从MDM、RobotMDM到UCSD的Exbody——人体运动扩散模型:赋能机器人的训练

前言

在上一篇文章《OmniH2O——通用灵巧且可全身远程操作并学习的人形机器人(其前身H2O是HumanPlus的重要参考)》中的“2.3节趣味工作:语音指令控制机器人干活与GPT4o加持”时,我们提到

通过将与预训练的文本到人体动作生成扩散模型MDM[57-Human motion diffusion model]连接,实现了通过语音指令控制人形机器人

如下图所示

人类可以描述所需的动作,例如“举起你的右手”,然后MDM生成相应的动作目标,由OmniH2O跟踪「with humans describing desired motions, such as “raise your right hand”. MDM generatesthe corresponding motion goals that are tracked by the OmniH2O」


我个人感觉到很amazing,毕竟确实挺酷的,直接口头让机器人干活

  1. 语音模型根据人类语音转换成文本
  2. 然后类似MDM、Momask这样的模型再根据文本生成3D骨骼动画,作为机器人的动作目标
  3. 然后用训练好的策略 去驱动人形机器人达到该动作目标

我真的好想复现这个工作了..

故,本文来了

第一部分 Human Motion Diffusion Model

1.1 动态扩散模型

22年9月,来自TAU的研究者们通过此篇论文《Human Motion Diffusion Model》提出了运动扩散模型MDM,在该文中,作者通过在无分类器的方式下对CLIP进行条件化来实现文本到动作的转换,类似于文本到图像

如下图所示「运动扩散模型(MDM)通过在给定文本提示的情况下生成多样化的动作,反映了文本到动作映射的多对多特性,其中,较深的颜色表示序列中的较晚帧,即最后生成的帧

1.1.1 MDM的整体框架与几何损失

MDM的目标是在给定任意条件c的情况下合成长度为N的人体动作x1:N。这个条件可以是任何将决定合成的现实世界信号,例如音频(Li等,2021;Aristidou等,2022)、自然语言(文本到动作)(Tevet等,2022;Guo等,2022a)或离散类别(动作到动作)(Guo等,2020;Petrovich等,2021)

此外,也可以进行无条件的动作生成,此时将其表示为空条件c=\emptyset,生成的动作x^{1: N}=\left\{x^{i}\right\}_{i=1}^{N}是由关节旋转或位置x^{i} \in \mathbb{R}^{J \times D}表示的人体姿势序列,其中J为关节的个数,D为关节表示的维数(总之,MDM 可以接受由位置、旋转或两者共同表示的运动,下文还会详述此点)

首先,在整体框架上

扩散建模为马尔可夫噪声过程,\left\{x_{t}^{1: N}\right\}_{t=0}^{T},其中x_{0}^{1: N}取自数据分布,且有

q\left(x_{t}^{1: N} \mid x_{t-1}^{1: N}\right)=\mathcal{N}\left(\sqrt{\alpha_{t}} x_{t-1}^{1: N},\left(1-\alpha_{t}\right) I\right)

其中,t \in(0,1)是常数超参数,当\alpha_{t}足够小时,可以得到如此近似x_{T}^{1: N} \sim \mathcal{N}(0, I)。从这里开始,用x_t表示在噪声步骤t的完整序列

在该语境中,条件运动合成将分布p\left(x_{0} \mid c\right)建模为逐步清理x_T的反向扩散过程。且不再像 Ho 等人所提出的那样预测\epsilon_t,而是遵循 Ramesh 等人(2022)的方法,直接预测信号本身,即\hat{x}_0=G(x_t, t, c),其目标是(Ho 等人,2020)

\mathcal{L}_{\text {simple }}=E_{x_{0} \sim q\left(x_{0} \mid c\right), t \sim[1, T]}\left[\left\|x_{0}-G\left(x_{t}, t, c\right)\right\|_{2}^{2}\right]

其次,在几何损失上

在运动领域,生成网络通常使用几何损失进行正则化(Petrovich等,2021;Shi 等,2020)。这些损失用于强化物理属性并防止伪影,促进自然和连贯的运动

在这项工作中,作者尝试了三种常见的几何损失来调节(1)位置(在我们预测旋转的情况下),(2)脚部接触,以及(3)速度

\begin{array}{c} \mathcal{L}_{\mathrm{pos}}=\frac{1}{N} \sum_{i=1}^{N}\left\|F K\left(x_{0}^{i}\right)-F K\left(\hat{x}_{0}^{i}\right)\right\|_{2}^{2} \\ \mathcal{L}_{\text {foot }}=\frac{1}{N-1} \sum_{i=1}^{N-1}\left\|\left(F K\left(\hat{x}_{0}^{i+1}\right)-F K\left(\hat{x}_{0}^{i}\right)\right) \cdot f_{i}\right\|_{2}^{2} \\ \mathcal{L}_{\text {vel }}=\frac{1}{N-1} \sum_{i=1}^{N-1}\left\|\left(x_{0}^{i+1}-x_{0}^{i}\right)-\left(\hat{x}_{0}^{i+1}-\hat{x}_{0}^{i}\right)\right\|_{2}^{2} \end{array}

如果预测关节旋转,FK(·)表示将关节旋转转换为关节位置的正向运动学函数(否则,它表示恒等函数)。f_{i} \in\{0,1\}^{J}是每一帧i的二进制足部接触掩码。仅与足部相关,它指示它们是否接触地面,并根据二进制真实数据设置(Shi等,2020)。本质上,它通过在接触地面时将速度归零来减轻足部滑动效应

总体而言,训练损失是

\mathcal{L}=\mathcal{L}_{\text {simple }}+\lambda_{\text {pos }} \mathcal{L}_{\text {pos }}+\lambda_{\text {vel }} \mathcal{L}_{\text {vel }}+\lambda_{\text {foot }} \mathcal{L}_{\text {foot }}

1.1.2 MDM的模型架构图

如下图所示

  • 在左侧中可以看到该模型的输入总共有两个:一个运动序列x_{1:N}^t——一个噪声步骤中长度为N的序列,和一个条件编码c
    但这个条件编码c需要先做一定处理,即它一开始是一个基于CLIP(Radford等,2021)的文本嵌入,首先被随机屏蔽以进行无分类器学习「通过使用CLIP(Radford等人,2021)文本编码器将文本提示编码为c来实现文本到运动的转换,并通过每个类别的学习嵌入实现动作到运动的转换,然后与t一起投影到输入tokenz_{t k}中——相当于噪声时间步t和条件编码c分别通过独立的前馈网络投影到与transformer相同的维度,然后相加以生成token z_{t k}
    The model is fed a motion sequencex1:Nt of length N in a noising step t, as well as t itself and a conditioning code c. c, a CLIP (Radfordet al., 2021) based textual embedding in this case, is first randomly masked for classifier-free learningand then projected together with t into the input token ztk.

    且噪声输入xt的每一帧也被线性投影到与transformer相同的维度,并与标准位置嵌入相加。z_{t k}和投影帧随后被输入到编码器。除去第一个输出token(对应于z_{t k}),编码器的结果被投影回原始运动维度,并作为预测\hat{x}_{0}——即在在每个采样步骤中,transformer编码器预测最终的干净运动\hat{x}_{0}^{1: N}
  • 在右侧则是采样MDM

    给定一个条件c,然后在期望运动的维度上采样随机噪声x_T,然后从T迭代到1。在每个步骤t,MDM预测干净样本\hat{x}_{0},并将其扩散回x_{t-1}

    具体而言,根据Ho等人(2020)的说法,从p\left(x_{0} \mid c\right)进行采样是以迭代的方式完成的
    在每个时间步t,预测出干净样本\hat{x}_{0}=G\left(x_{t}, t, c\right),然后将其重新加噪至x_{t-1}

    这一过程从t=T开始重复,直到获得x_0
        \rightarrow  且使用无分类器引导法训练我们的模型G(Ho & Salimans,2022),在实际操作中,G通过随机设置c=\emptyset来学习有条件和无条件的分布,这占样本的10%,使得G\left(x_{t}, t, \emptyset\right)可以近似p\left(x_{0}\right)
        \rightarrow  然后,在对G进行采样时,可以通过插值甚至外推这两种变体来在多样性和保真度之间进行权衡——使用s
    G_{s}\left(x_{t}, t, c\right)=G\left(x_{t}, t, \emptyset\right)+s \cdot\left(G\left(x_{t}, t, c\right)-G\left(x_{t}, t, \emptyset\right)\right)

// 待更

猜你喜欢

转载自blog.csdn.net/v_JULY_v/article/details/142854390