让大语言模型看懂世界,是人工智能走向通用智能的关键一步。然而目前主流的大模型大多停留在文字和二维图像层面,一旦面对真实的三维场景,比如一个房间的点云扫描数据或一个机械臂采集的立体物体,它们就难以准确理解空间关系。3D-LLM(3D大模型)正是为了解决这一问题而生,它把三维世界引入大语言模型的认知范围,使模型能够回答关于三维场景的问题、定位物体、甚至进行空间推理。

一、为什么需要3D大模型:二维理解的局限
现有多模态大模型(如各类视觉语言模型)的输入主要是单张图片,这类模型在图像描述、图文问答上表现出色,但它们对世界的理解本质上是“平面”的。一张照片无法告诉你沙发后面藏着什么,也无法精确表达两个物体之间的距离。人类对世界的感知是立体的,我们通过双眼视差、头部移动和身体交互构建出完整的三维空间认知,机器人、自动驾驶、AR/VR等应用同样需要这种能力。
三维数据与二维图像的差异非常大。图像是规则的像素网格,而三维数据常见形式包括点云(无序点集合)、体素(三维网格)、多视角图像集合以及Mesh网格等。其中点云是最常用的表示,它由传感器直接采集,数据稀疏且无序,无法直接套用卷积网络或视觉Transformer的标准处理流程。这就带来一个核心工程难题:如何把这些结构迥异的三维数据,转换成大语言模型能够消化的特征序列。
此外,三维任务的形式也更加多样。除了常规的问答和描述,还包括三维定位(在场景中指出某个物体在哪)、密集描述(对整个场景进行细粒度说明)、三维空间推理(判断物体之间的相对方位关系)等。这些任务要求模型不仅“看到”场景,还要建立坐标、方位、遮挡等空间概念,这是纯文本训练无法获得的。
二、3D-LLM的核心架构:如何把三维塞进语言模型
3D-LLM的代表性工作来自UCLA等机构提出的论文《3D-LLM: Injecting the 3D World into Large Language Models》,其核心思路可以概括为“投影加对齐”。它并不从零训练一个三维大模型,而是复用成熟的2D视觉编码器和大语言模型,通过巧妙的输入构造把它们串联起来。
具体做法是:将三维场景从多个视角(如六个正交方向)渲染成带有位置信息的深度图,称为“位置敏感深度图”,然后把这些渲染结果拼接成类似伪图像的输入,送入2D视觉特征提取器。由于渲染图像中每个像素都携带了该点在三维空间中的坐标,编码器输出的特征就自然嵌入了空间信息。之后再经过一个简单的映射层(通常是一个多层感知机),把视觉特征投影到语言模型的词嵌入空间,与文本token一起送入大语言模型处理。下面是一个简化的伪代码,展示整体数据流:
import torch # 假设已有场景点云 scene_pc 和相机位姿列表 views # 第一步:多视角渲染成位置敏感深度图 pseudo_images = render_position_sensitive_maps(scene_pc, views) # 第二步:2D视觉编码器提取特征 visual_feats = vit_encoder(pseudo_images) # [B, N_views, D] # 第三步:线性映射对齐到语言模型维度 proj_feats = mlp_projector(visual_feats) # [B, N_views, hidden] # 第四步:与文本token拼接后送入LLM inputs_embeds = torch.cat([proj_feats, text_embeds], dim=1) output = llm(inputs_embeds=inputs_embeds)
这种设计有几个明显优点。其一,充分利用了2D视觉编码器在海量图像上预训练获得的强大表征能力,避免了从头训练三维编码器的数据饥渴问题。其二,多视角渲染保证了场景信息覆盖完整,被遮挡的物体也能从其他角度捕捉到。其三,架构改动极小,只需新增一个轻量映射层,训练成本可控。当然它也有代价:渲染视角的选取会影响信息完整性,且视觉token数量较多时推理开销会增大。
三、两种技术范式:融合型与生成型
从技术路线上看,三维大模型可以分为两类。一类是融合型(Fusion-based)方案,即上述3D-LLM的做法,把三维特征“翻译”后喂给语言模型,语言模型本身结构不变,只进行微调对齐。这类方案实现简单、迁移成本低,是目前绝大多数开源方案的选择,缺点是三维理解能力受限于所用的2D编码器,对精细几何结构的感知可能不够敏锐。
另一类是生成型(Generative-based)方案,思路更加激进:直接让大语言模型学会输出三维表示,例如生成物体的隐式神经场或参数化形状描述。这类模型可以把语言指令直接转化为可渲染的三维内容,是文生3D方向的基础。两条路线并非互斥,实际研究中也出现了结合两者的方案——先用融合型理解场景,再用生成型产出三维输出,形成感知到生成的闭环。
在训练策略上,3D-LLM采用了分阶段方案:先在数百万级别的三维语言配对数据上做对齐预训练,冻结语言模型主体只训练映射层;再在高质量指令微调数据上做第二阶段训练,解锁更多参数,让模型学会遵循指令完成任务。值得一提的是,论文团队还借助GPT辅助标注,把传统三维数据集改造成了超过百万条的指令数据,覆盖问答、定位、描述、空间推理等任务类型,有效缓解了三维领域标注数据稀缺的问题。
四、动手实践:调用开源3D大模型
如果想亲自体验,可以先从开源实现入手。以HuggingFace生态为例,许多多模态模型已支持传入多视角图像来近似三维理解,一些社区项目也在复现3D-LLM的完整流程。使用时的大致步骤如下:
from transformers import AutoProcessor, AutoModelForVision2Seq
import torch
model_name = "your-org/3d-llm-demo"
processor = AutoProcessor.from_pretrained(model_name)
model = AutoModelForVision2Seq.from_pretrained(
model_name, torch_dtype=torch.float16, device_map="auto"
)
# 输入:场景的多视角渲染图 + 问题
images = load_multiview_images("scene_views/")
inputs = processor(images=images, text="请描述这个房间里沙发相对于茶几的位置", return_tensors="pt").to("cuda")
with torch.inference_mode():
output = model.generate(**inputs, max_new_tokens=256)
print(processor.decode(output[0], skip_special_tokens=True))
部署时有几点经验值得注意。第一,多视角图像的数量和分辨率直接影响效果,视角太少会造成信息盲区,一般取六到八个覆盖上下前后左右的视角比较均衡。第二,点云预处理很关键,体素降采样、离群点剔除等操作能显著提升渲染质量。第三,显存占用主要来自视觉token的数量,如果资源有限,可以对视觉特征做池化或压缩,在精度和速度之间寻找平衡。
五、应用前景:通往具身智能的关键一步
3D-LLM的意义远不止于三维问答。在具身智能领域,机器人需要一个能理解周围环境的“大脑”,三维大模型正好充当这个角色:机器人通过深度相机采集场景点云,交给3D-LLM分析,模型返回对环境的结构化理解和任务规划,再由底层控制器执行。相比只能看图的方案,这种空间理解能力让机器人可以处理“把桌子左边的杯子递给我”这类包含方位语义的指令。
在自动驾驶中,三维大模型可用于场景级问答和驾驶行为解释,帮助系统对路口、障碍物等复杂空间状况做出更符合人类直觉的判断。在AR/VR和数字孪生领域,它能支撑自然语言驱动的场景编辑与检索,用户说一句“把那盏灯挪到沙发旁边”,系统就能理解并执行。随着三维数据获取成本不断下降和模型架构持续演进,三维认知能力很可能成为下一代多模态大模型的标配,而3D-LLM所确立的“投影对齐”范式,则为这条路奠定了坚实的起点。