李飞飞创立的 World Labs 发布了 Atlas,一个从零预训练的多模态空间智能大模型。它处理的对象不只是图片里的物体,而是物体之间的距离、遮挡、视角变化和可行走空间。
给 Atlas 几张照片,它可以生成从任意角度观看的连续视频;给它一段手机拍摄的视频,它可以重建完整的 3D 场景,并让机器人在这个虚拟环境中模拟导航。这个方向的关键变化是:视觉模型不再只回答“看到了什么”,而是开始尝试建立“这个世界是什么样、从别的角度看会怎样、在其中移动会发生什么”的空间表征。
Atlas 解决的是什么问题
传统图像模型通常围绕单张图片工作:识别一辆车、分割一面墙,或者生成一张风格化图片。但真实世界具有连续的三维结构。相机向右移动一点,墙壁仍然应该连续存在;被桌子遮挡的区域,也不能在不同视角下毫无规律地变化。
Atlas 的输入可以是多张照片,也可以是一段手机视频。模型需要从这些二维观测中推断出更稳定的空间关系,然后生成新的视角或完整场景。这里的“生成”并不只是补一张漂亮的图,而是要尽可能保持:
- 同一个物体在不同视角下的身份一致;
- 墙、地板和门等结构之间的几何关系连续;
- 相机运动过程中画面不会频繁跳变;
- 生成结果能够承载后续的导航或交互模拟。
这也是空间智能和普通视觉问答之间的分界线:前者需要对世界建立可持续使用的内部模型。
拆开看 multimodal autoregressive diffusion transformer
Atlas 的核心架构被描述为 multimodal autoregressive diffusion transformer。这个名称很长,但可以分成三个部分理解。
Multimodal 表示模型能够联合处理不同模态的信息,例如照片、视频以及与空间相关的视觉线索。不同输入不应被当成彼此独立的文件,而需要共同约束同一个场景理解。
Autoregressive 表示模型会根据已经生成或已经观察到的内容,逐步预测后续内容。对于空间任务,这种机制有助于让新视角、新的视频帧或场景组成部分延续之前的空间上下文。
Diffusion transformer 则把扩散生成过程与 Transformer 的上下文建模能力结合起来。扩散过程擅长从不完整或带噪的信息中逐步得到细节,Transformer 擅长在较大范围内关联视觉 token。两者结合后,模型可以同时处理“应该生成什么”和“它必须与整个场景保持怎样的关系”。
这并不意味着模型天然拥有精确的工程级测量能力。生成的视频看起来连续,和生成结果具备可靠的尺度、碰撞边界、定位精度,是不同层次的问题。把 Atlas 输出用于机器人训练时,仍然需要额外的几何校验、坐标系定义和真实环境测试。
一个可改造的输入流水线
来源摘要没有给出 Atlas 的公开 API 参数,下面的示例因此是一个假设性的接入模板。它展示了工程上可以怎样准备手机视频、调用一个兼容的重建服务,并保存返回的 3D 场景文件。实际使用时,需要把接口地址、认证方式和字段名替换成服务提供方的定义。
先用 FFmpeg 抽取视频帧,降低上传前的冗余:
mkdir -p frames
ffmpeg -i room.mp4 -vf "fps=2,scale=1280:-2" -q:v 2 frames/frame_%05d.jpg
然后可以用 Python requests 封装一个最小客户端。运行前安装依赖:python -m pip install requests。示例中的 ATLAS_ENDPOINT 是占位地址,并不是来源摘要确认的真实接口。
from pathlib import Path
import os
import requests
endpoint = os.environ.get("ATLAS_ENDPOINT", "https://example.invalid/v1/reconstruct")
api_key = os.environ.get("ATLAS_API_KEY", "replace-me")
image_paths = sorted(Path("frames").glob("*.jpg"))
if len(image_paths) < 3:
raise SystemExit("至少准备 3 张不同视角的图片")
files = [
("images", (path.name, path.open("rb"), "image/jpeg"))
for path in image_paths
]
try:
response = requests.post(
endpoint,
headers={"Authorization": f"Bearer {api_key}"},
files=files,
data={"output": "scene_3d", "coordinate_system": "camera_relative"},
timeout=300,
)
response.raise_for_status()
result = response.json()
finally:
for _, (_, file_object, _) in files:
file_object.close()
scene_url = result.get("scene_url")
if not scene_url:
raise RuntimeError(f"服务没有返回 scene_url: {result}")
scene = requests.get(scene_url, timeout=300)
scene.raise_for_status()
Path("reconstructed_scene.glb").write_bytes(scene.content)
print("saved reconstructed_scene.glb")
这个流水线里有几个实际决策值得保留:拍摄时要让相邻帧有足够重叠,避免只有单一视角;抽帧不能过密到上传大量近乎重复的图片;输出文件要和相机坐标系、尺度定义一起保存。若结果要进入机器人模拟器,还应在导入阶段检查地面是否连通、障碍物是否具有合理碰撞体,以及场景中是否存在模型无法观测的区域。
从生成视频到机器人导航
“可以从任意角度观看”主要说明模型能够根据已有观测生成连续视角。“让机器人在里面模拟导航”则提出了更高要求:场景不仅要视觉上连贯,还要支持路径规划、位置估计和动作反馈。
一个可行的工程链路可以是:
- 使用照片或手机视频构建场景表示;
- 将场景导出为模拟器支持的格式,例如带有网格、材质和碰撞信息的资源;
- 为地面、墙体和可移动物体补充语义标签;
- 在模拟器中运行机器人定位、规划和控制算法;
- 把模拟结果与真实场景中的传感器数据进行对照。
其中最容易被忽略的是“看起来像”与“适合训练”之间的差距。视觉生成中的小误差可能只表现为纹理变化,但在导航任务中可能变成一扇实际不存在的门、一个错误的通道宽度,或者一块没有碰撞体的障碍物。模型生成的世界适合用于快速构造候选环境和进行早期实验,但不能自动替代真实数据验证。
采用时的检查清单
Atlas 代表了一条值得关注的技术路线,但评估时不应只看生成视频是否漂亮。可以从以下问题开始:
- 多视角下的物体身份是否保持一致?
- 相机绕回原点时,场景能否回到相近状态?
- 输出是否包含可用的深度、网格、相机位姿或其他空间信息?
- 坐标系和尺度是否明确,能否被下游模拟器读取?
- 遮挡区域的内容是否被标记为推断结果,而不是观测事实?
- 机器人在模拟环境中训练后,是否经过真实场景的回放和验证?
对应用团队来说,最稳妥的切入点是先把 Atlas 当作空间数据生成与探索工具:用它快速构建场景、生成新视角、发现规划算法的问题,再逐步建立几何精度和 sim-to-real 的评测体系。真正的空间智能不仅要生成一个像世界的画面,还要让这个世界在不同观察、移动和决策之间保持一致。