斯坦福新成果:用「4D时空坐标系」重构机器人视觉认知,攻克跨视角一致性难题!

深蓝具身智能 2025-07-10 10:56

时间连贯性跨视角几何一致性」兼顾

在机器人操作任务中,生成具有时空一致性的视频对机器人理解环境动态至关重要。现有模型要么生成的视频画面闪烁、物体形变,要么不同视角下的空间位置错乱,严重制约了机器人在复杂场景中的规划与交互能力。

为此,斯坦福大学&丰田研究院团队提出的几何感知4D视频生成模型,通过融合时间连贯性与3D几何一致性,实现了跨视图的精准视频预测。

该方法的核心在于利用跨视图点图对齐的几何监督机制,结合预训练的视频扩散模型,使生成的视频既能保持时间序列上的平滑过渡,又能在不同相机视角下维持物体的几何结构一致性。

我们开设此账号,想要向各位对【具身智能】感兴趣的人传递最前沿最权威的知识讯息外,也想和大家一起见证它到底是泡沫还是又一场热浪?
欢迎关注【深蓝具身智能】👇

流程说明

基于扩散的视频生成框架

目标:从短暂的历史视频帧中预测未来短暂的视频帧,从而得到连贯的视频预测生成能力。

该方案采用的方法是利用视频扩散框架模型——Stable Video Diffusion(SVD)框架通过变分自编码器(VAE)将历史RGB视频帧投影到潜在空间,再利用 U-Net网络的扩散能力来预测未来潜在图像序列的特征表示,最终将这些特征表示解码为RGB序列帧。

基于扩散的视频生成框架微调过程就是通过最小化扩散损失函数,使模型能够从含噪输入中恢复干净的潜在表示,从而实现时间序列上的连贯预测。

几何一致性监督

如图所示,该方案的使用2个不同视角的 RGB-D相机 来实现几何一致性监督。

4D视频生成并用于机械臂操作的流程©️【深蓝具身智能】编译

  • 先对参考视角的历史点图用点图 VAE 进行编码,经潜扩散和Decoder 后生成未来点图;

  • 同时,将第二视角的未来点图投影到 坐标系下,生成投影点图序列,这些投影点图序列将被点图 VAE 编码成与 对齐的潜在表示。

在训练时,对 视角和投影视角的点图进行扩散,以求得最小化含噪的潜在表示和预测结果的差异。

该模型采用两个独立解码器,通过交叉注意力机制让的解码器通过提供的的几何线索来实现跨视角一致性,并且保障在推理过程中,无需输入相机位姿便可以从新视角预测出参考视角坐标系下的点图。

联合优化策略

预训练的视频扩散模型为预测动态场景提供了时间先验,而3D点图监督则强制跨视角图像之间保持几何一致性。

因此,利用预训练的视频模型,结合基于RGB的视频扩散损失和基于点图的3D一致性损失进行联合优化,便可以达到时空一致性的视频预测效果,其整体的损失函数可以表示

核心代码

接下来,让我们看看该方案的核心代码。

变分自编码器VAE的核心代码在sgm/models/autoencoder.py中的AutoencodingEngine。

编码器对应于sgm/modules/diffusionmodules/model.py 的Encoder。

编码器推理执行代码片段如下:

class Encoder(nn.Module):    def forward(self, x):            # timestep embedding            temb = None            # downsampling            if len(x.shape) == 5:                x = rearrange(x, "b t c h w -> (b t) c h w")            hs = [self.conv_in(x)]            for i_level in range(self.num_resolutions):                for i_block in range(self.num_res_blocks):                    h = self.down[i_level].block[i_block](hs[-1], temb)                    if len(self.down[i_level].attn) > 0:                        h = self.down[i_level].attn[i_block](h)                    hs.append(h)                if i_level != self.num_resolutions - 1:                    hs.append(self.down[i_level].downsample(hs[-1]))            # middle            h = hs[-1]            h = self.mid.block_1(h, temb)            h = self.mid.attn_1(h)            h = self.mid.block_2(h, temb)            # end            h = self.norm_out(h)            h = nonlinearity(h)            h = self.conv_out(h)            return h

解码器对应于sgm/modules/autoencoding/temporal_ae.py的VideoDecoder。

解码器推理执行代码片段如下:

class Decoder(nn.Module):    def forward(self, z, **kwargs):            # assert z.shape[1:] == self.z_shape[1:]            self.last_z_shape = z.shape
            # timestep embedding            temb = None
            # z to block_in            h = self.conv_in(z)
            # middle            h = self.mid.block_1(h, temb, **kwargs)            h = self.mid.attn_1(h, **kwargs)            h = self.mid.block_2(h, temb, **kwargs)
            # upsampling            for i_level in reversed(range(self.num_resolutions)):                for i_block in range(self.num_res_blocks + 1):                    h = self.up[i_level].block[i_block](h, temb, **kwargs)                    if len(self.up[i_level].attn) > 0:                        h = self.up[i_level].attn[i_block](h, **kwargs)                if i_level != 0:                    h = self.up[i_level].upsample(h)
            # end            if self.give_pre_end:                return h
            h = self.norm_out(h)            h = nonlinearity(h)            h = self.conv_out(h, **kwargs)            if self.tanh_out:                h = torch.tanh(h)            return h

4D生成模型的核心代码在sgm/models/diffusion.py中的DiffusionEngine。

其中backbone采用U-Net模型,其核心代码在sgm\modules\diffusionmodules\video_model.py中的VideoUNet;

损失函数核心代码在sgm\modules\diffusionmodules\loss.py中的StandardDiffusionLoss

训练过程中重要的函数调用过程如下:

相关核心代码如下:

class DiffusionEngine(pl.LightningModule):    def get_mv_input(self, batch):            # get images from different views            return torch.cat([batch[input_key] for input_key in self.input_mv_keys], dim=0)
    def encode_first_stage(self, x):            if len(x.shape) == 5:                x = rearrange(x, "b t c h w -> (b t) c h w")
            n_samples = default(self.en_and_decode_n_samples_a_time, x.shape[0])            n_rounds = math.ceil(x.shape[0] / n_samples)            all_out = []            with torch.autocast("cuda", enabled=not self.disable_first_stage_autocast):                for n in range(n_rounds):                    out_1 = self.first_stage_pointmap_model.encode(                        x[n * n_samples: (n + 1) * n_samples, :3]                    )                    out_2 = self.first_stage_color_model.encode(                        x[n * n_samples: (n + 1) * n_samples, 3:]                    )                    out = torch.cat([out_1, out_2], dim=1)                    all_out.append(out)            z = torch.cat(all_out, dim=0)            z = self.scale_factor * z            return z
    def forward(self, x, batch):            with torch.autocast("cuda", enabled=not self.disable_loss_fn_autocast):                loss = self.loss_fn(self.model, self.denoiser, self.conditioner, x, batch)
            loss_mean = loss.mean()            loss_dict = {"loss": loss_mean}            return loss_mean, loss_dict
    def shared_step(self, batch: Dict) -> Any:            x = self.get_mv_input(batch)            x = self.encode_first_stage(x)            batch["global_step"] = self.global_step            loss, loss_dict = self(x, batch)            return loss, loss_dict
    def training_step(self, batch, batch_idx):            batch['num_video_frames'] = batch['num_video_frames'][0]            loss, loss_dict = self.shared_step(batch)            loss_dict['loss'] = loss            ...            return loss_dict

4D视频用于机械臂操作任务

1. 利用FoundationPose等现成的位姿跟踪模型,从预测的4D视频中提取机器人末端执行器的6自由度位姿。

2. 通过分割机械臂手指点云并计算质心距离,判断gripper的开合状态,从而实现对下游操作任务的支持

实验

实验任务设置

1. 模拟任务:

任务1-StoreCerealBoxUnderShelf机械臂将麦片盒插入货架,涉及遮挡与精准定位。

任务2-PutSpatulaOnTable抓取锅铲并放置在桌面,考验对细长物体的操作能力。

任务3-PlaceAppleFromBowlIntoBin双臂协作将苹果从碗中转移至bins,测试长时程多物体交互预测。

仿真中的机械臂操作任务©️【深蓝具身智能】编译

2. 真实任务:

复刻模拟中的PutSpatulaOnTable任务,使用两台FRAMOS D415e相机采集 RGB-D数据。

▲真实任务结果示例©️【深蓝具身智能】编译

评估指标 

RGB视频质量:Fréchet Video Distance(FVD),数值越低表示生成视频与真实视频的视觉差异越小。

深度预测精度:绝对相对误差(AbsRel):,衡量预测深度与真实深度的相对偏差。

阈值准确率(δ1):,反映深度预测的整体准确性。

跨视图3D一致性:平均交并比(mIoU),通过将一个视图的机械臂掩膜投影到另一个视图并计算IoU,评估几何对齐程度。

基线方法

OURS w/o MV attn:移除多视图交叉注意力的模型变体。

4D Gaussian:基于单视图RGB视频重建4D场景的方法。

SVD:原始Stable Video Diffusion模型,仅预测RGB视频。

SVD w/ MV attn:在SVD中添加多视图交叉注意力,但不使用点图监督。

▲在新型摄像机视图下生成的多视角4D视频结果©️【深蓝具身智能】编译

结果分析

几何一致性优势:OURS在所有任务中均表现出最高的mIoU值,证明几何监督有效促进了跨视图的3D结构对齐。移除交叉注意力后,mIoU显著下降,表明多视图信息交互的重要性。

视频与深度生成质量:OURS的FVD值显著低于基线,且深度预测的AbsRel更小、δ1更高,说明模型在视觉保真度和深度准确性上均有优势。

机器人策略效果:在操作任务中,OURS的平均成功率达0.64,远高于 Dreamitate(0.09)和Diffusion Policy(0.12),验证了生成视频对机器人控制的实际价值

真实场景验证

在真实世界的PutSpatulaOnTable任务中,OURS生成的RGB-D序列能够准确捕捉机械臂的抓取动作,深度预测与实际场景吻合,且跨视图一致性mIoU达0.58,证明了模型在真实环境中的泛化能力。

▲在“PutspatulaOnTable”任务上生成的真实世界4D视频结果©️【深蓝具身智能】编译

总结

本文提出的几何感知4D视频生成方法主要结合跨视图点图对齐监督和多视图交叉注意力机制,成功实现了时间连贯性与3D几何一致性的统一

在模拟和真实场景中均能生成高质量的跨视图RGB-D视频,且可直接用于机器人末端执行器的位姿估计,为机器人操作任务提供可靠的视觉预测基础。

未来工作中,进一步优化模型推理速度,并探索其在更复杂真实场景中的应用。

编译|木木伞

审编|具身君



标题:Geometry-aware 4D Video Generation for Robot Manipulation

作者:Zeyi Liu, Shuang Li, Eric Cousineau, Siyuan Feng, Benjamin Burchfiel, Shuran Song

项目地址:https://robot4dgen.github.io/

论文地址:https://arxiv.org/pdf/2507.01099


图片【深蓝具身智能读者群】-参观机器人
欢迎各位粉丝朋友,加入深蓝具身君的读者群,具体参观开放日时间将在群内陆续通知。
扫下方二维码,添加具身君;通过验证后,加入群聊:

我们开设此账号,想要向各位对【具身智能】感兴趣的人传递最前沿最权威的知识讯息外,也想和大家一起见证它到底是泡沫还是又一场热浪?‍

欢迎关注【深蓝具身智能】👇

1、首个!阿里巴巴达摩院:世界模型+动作模型,给机器人装上「预言&执行」双引擎
2、【票选】谁将率先上市?刚刚AMR仓储机器人第一股已出炉!不姓"智"、也不姓"宇"……
3、顶会突破!推荐RSS 2025 的8篇力作:聚焦VLA 革新、机器人操纵两大重点领域创新!

【深蓝具身智能】的原创内容均由作者团队倾注个人心血制作而成,希望各位遵守原创规则珍惜作者们的劳动成果,转载添加下方微信进行授权,发文时务必注明出自【深蓝具身智能】微信公众号,否则侵权必究⚠️⚠️


投稿|寻求合作|研究工作推荐:SL13126828869


点击收藏并推荐本文

声明:内容取材于网络,仅代表作者观点,如有内容违规问题,请联系处理。 
机器人
Copyright © 2025 成都科技区角科技有限公司
蜀ICP备2025143415号-1
  
川公网安备51015602001305号