← 返回 PaperDaily
视觉与图像
同济开源AfordAny:单张照片搞定3D功能定位,473类基准领跑
单张照片就能告诉机器人“杯子把手在哪、椅子坐哪里”?同济大学与中科院最新开源AfordAny,把开放世界3D功能定位做成了端到端流水线,473类基准直接拉满。
龙哥读论文
发布于 2026-08-27 00:20:01
阅读 4
查看原文
原论文信息如下:
想让机器人帮你拿杯子,它得先知道把手在哪;想让它搬椅子,得先搞清楚抓椅背还是椅座。这种“看东西就知道哪里能上手”的能力,学术圈叫3D功能定位(3D Affordance Grounding)。传统方法既要求预建3D模型,又只能在固定类别里打转,碰上真实世界的长尾物体基本歇菜。
同济大学与中科院的研究团队最近放出大招——AfordAny,直接用一张普通RGB照片,就能完成开放世界的3D功能区域定位。不仅能认出见过的物体,没见过的类别也能猜个八九不离十。更重要的是,整个方案已开源,数据集、代码全部公开,473个类别、5334个物体的规模直接把同类工作甩开一个量级。
这活儿到底怎么干的?咱们慢慢拆。
先看数据。以往做功能定位的数据集,比如3D AffordanceNet、LASO这些,撑死了也就二十几个类别,且大多来自CAD模型,跟真实世界总有隔阂。AfordAny搞了条全自动的数据构建流水线:从LVIS这个大词汇量实例分割数据集出发,先用语言模型筛出473个具有可操作部件的类别,再用SAM 3D把单张图片重建成3D高斯表示,接着多视角渲染、大模型生成部件描述、2D分割模型标注、最后多视角投票把2D标签提升到3D空间。整个流程跑下来,得到5334个物体、10633个部件级样本、31899个指令级样本,类别数量比之前的工作多了一个数量级。

图1:AfordAny数据集概览。给定RGB图像和指令,流水线重建物体中心3D几何并定位目标部件。分别评估未见指令、未见物体和未见类别三种泛化场景。
有了数据,还得有能打的模型。AfordAny的核心是一个视觉语言模型引导的3D功能解码器。思路很有意思:冻结一个Cosmos-2B视觉语言模型,把图像和指令喂进去,得到全局功能标记和密集视觉token,然后通过三个阶段的融合把语言语义和3D几何绑在一起。
第一阶段叫投影注入。因为重建3D时相机参数是现成的,每个3D点都能投影回原始图像的像素位置,这样就能把对应的局部视觉特征直接采回来加到点特征上。第二阶段是指令条件语义压缩,用16个可学习的原型,通过FiLM调制加上Transformer解码器,把145个VLM token压缩成紧凑的语义原型。第三阶段是双向几何-语义交互模块GPBlock,原型先关注点云吸收3D上下文,然后再反过来让每个点关注精炼后的原型,完成信息和几何的双向流动。

图4:AfordAny整体架构。冻结的Cosmos-2B VLM编码指令和图像;投影注入、语义压缩和GPBlock双向融合将特征与3D几何结合,预测逐点功能评分。
这还没完,为了让模型能持续进化,作者还搞了个伪标签自训练策略。用训练好的解码器当老师,对5325个全新的LVIS物体生成伪标签,只保留置信度高的一部分,用很小的权重再训一轮。结果就是未见类别的mIoU相对提升了6.3%,而且收益主要集中在长尾类别上。
实验部分也做得很扎实。他们设计了一套系统化的泛化评估协议,把未见物体、未见类别、未见指令改写三个维度分开测。从结果看,AfordAny在未见指令上IoU达到0.680,未见物体0.428,未见类别0.305,全面领先对比方法。指令鲁棒性方面差距更是明显,换种说法导致的性能下降只有0.105,对比LASO的0.342和LMAffordance3D的0.360,优势不是一星半点。
值得一提的是,AfordAny的训练成本并不夸张。整个解码器只有1054万可训练参数,在A100上单次前向推理的中位延迟只有16.5毫秒,算下来每秒能跑60次。这对机器人实时交互来说完全够用。
当然,论文也老实交代了局限性。738个完成处理的物体里有2064个没找到有效部件,可能是物体本身不可分解,也可能是重建或者提示词出了问题。自动融合的多视角标签没有经过人工验证,存在的投影和分割噪声也需要后续版本迭代去解决。
总体来说,AfordAny这次把“从单张RGB图像直接预测3D功能区域”这件事做成了闭环。对于做机器人操作、具身智能、3D场景理解的研究者来说,这份开源的数据集和代码含金量相当高。尤其是那些被数据标注成本卡住的项目,这套全自动数据构建流水线本身就值得好好研究一番。
从单张照片到3D功能理解:AfordAny如何突破开放世界瓶颈
想象一下:你让机器人帮忙端咖啡,它得先认出哪个是杯子,再找到把手,最后判断该用多大力度去捏——前两步就是3D功能定位的活儿。所谓功能定位,就是给模型一个物体和一句功能描述,让它标出物体表面“哪里能实现这个功能”,比如“杯子的把手”“椅子的坐垫”。
这问题听起来不难,但放进真实世界就麻烦大了。真实世界是典型的开放世界:训练时见过椅子,测试时可能遇到从未见过的异形椅子;你告诉模型“握住手柄”,换个用户可能说“抓住那个握把”;更别提现实中还有大量长尾物体,如开瓶器、订书机,在传统数据集中压根找不到。
以往的3D功能定位方法有三大通病:第一,训练和推理时都要预建好的3D几何模型,这不是真实部署形态——机器人拿到手的明明是照片;第二,语义标签被锁死在封闭本体论里,只能识别固定的十几个类别,碰上没见过的新东西直接抓瞎;第三,基于CLIP文本编码的方案对“换种说法”极其敏感,指令一换,性能哗哗掉。
同济大学与中科院提出的AfordAny,目标就是把这三大通病一起解决。它只靠一张单目RGB照片和物体掩码,就能完成开放世界3D功能定位;数据构建全自动,直接产出了一个覆盖473个类别、5334个物体、10633个部件级样本的大规模基准;模型层面则用冻结的视觉语言模型(VLM)特征引导3D几何解码,还带上了一套无需人工标注的伪标签自训练策略来提升新类别的泛化能力。
先看看AfordAny在数据规模上和前辈们的差距。下表对比了当前主流的功能定位数据集——AfordAny的类别数达到473个,部件词汇数678,之前最大的AffordBridge也只有157个交互类别,而且AfordAny是唯一同时支持开放部件词汇、开放物体实例和开放类别评估的数据集。至于3D AffordanceNet、LASO这些老牌数据集,类别数还停留在20出头,差距足足一个数量级。
自动化数据管道:从LVIS到473类3D功能基准的构建
这么大的数据量靠人工标注是不现实的。AfordAny的做法是搭了一条全自动的数据构建流水线,输入端是LVIS数据集,输出端就是带着文本指令的3D部件级功能标注。整条流水线分为五步。
第一步是类别和实例筛选。LVIS里一共有1203个类别、127万多个训练实例,但并不是所有物体都有可交互的部件——比如“空气”就没有把手。通过类别级和实例级的过滤,留下7407个候选物体,分布在473个“可交互”类别中。第二步是单图3D重建,用SAM 3D把每个物体的单张照片重建成3D高斯表示,再从六个固定视角渲染出多视角图像。第三步是让大语言模型(LLM)来当“部件命名师”,自动为每个物体生成可能的部件列表、对应的自然语言指令和同义改写。第四步是文本条件下的2D部件分割,用一个现成的开放词汇分割模型在每个渲染视角上标出目标部件。第五步是多视角3D标签提升,把六个视角上的2D分割结果通过视角投票融合成3D点云上的逐点标签——只有足够多视角一致同意的标签才会被采纳。
这套流程跑下来,最终产出5334个物体、10633个部件级样本、31899个指令级样本,部件词汇覆盖678种类型。整个流程不需要任何人工标注,所有环节都由现成的感知模型和语言模型自动完成——这就把数据生产的边际成本打了下来。下图展示了最常见的部件和类别分布,可以看出明显的长尾特征:一部分高频部件(如“把手”“盖子”)占据了大量样本,而大量稀有部件只有零星几个样本。这种长尾分布恰恰是开放世界泛化的核心挑战之一。
当然,自动管道也不是圣杯。论文自己提到:7398个完成处理的物体中,有2064个没有产出任何有效部件标签,这既可能是物体本身确实不可分解,也可能是重建质量或者LLM提示词没跟上。另外,多视角投票虽然能过滤掉一部分噪声,但自动融合的标签终究缺少人工验证,投影误差和分割误差是不可避免的。这也是AfordAny在实验中特意增加了一个人工验证子集的原因。
冻结VLM+3D几何:解码器的三重融合机制解析
有了数据,接下来就是模型。AfordAny的任务定义非常简洁:输入一张RGB图像I、一个物体掩码M、一句自由文本指令l,先用SAM 3D重建出物体中心的点云P,然后预测点云上每个点的功能区域得分s。整个过程只需要单张照片,不需要多视角捕捉,也不需要预建3D资产。
模型的核心是一个视觉语言模型引导的3D功能解码器。它的设计哲学可以概括成一句话:图像-语言证据负责“指出功能部件在哪”,3D几何负责“限制部件的空间范围” 。两者缺一不可。
先看离线特征提取。AfordAny用了一个冻结的Cosmos-2B视觉语言模型(20亿参数规模)来处理掩码图像和加了标记的指令。这个标记是专门插入指令文本中的特殊token,相当于告诉VLM“请把当前功能区域的语义浓缩到我这里”。VLM跑完后会输出一个全局功能标记h_aff(维度2048)和144个保留空间布局的视觉token F_v(12×12的网格)。因为特征是离线缓存、VLM完全冻结,所以这个昂贵的跨模态编码器可以复用,训练时只需要训练后面的轻量解码器——整个解码器的可训练参数只有约1054万。
接下来是解码器的三重融合机制,依次是投影注入、语义压缩和GPBlock双向交互。
第一重:投影注入。重建3D点云时相机参数是已知的,每个3D点都能精确投影回原始图像的像素坐标。利用这个对应关系,直接在12×12的视觉特征网格上用双线性采样把该位置的局部图像特征取出来,加到这个点的点token上。这样做的好处是,细长或者部分遮挡的区域也能直接拿到对应的图像证据,而不是像全局池化那样把所有视觉信息搅成一锅粥。
第二重:指令条件语义压缩。VLM输出的145个token(1个功能标记+144个视觉token)太多了,直接让每个点去attend全部token,计算量不小且容易引入噪声。AfordAny的做法是用16个可学习的原型向量,先通过FiLM机制把标记的全局语义注入到原型里,再让这些原型通过一个两层Transformer解码器去“读取”完整的VLM token序列,最后压成16个紧凑的语义原型Z。打个比方:这就像派16个“语义侦察兵”去VLM信息堆里逛一圈,每人带回来一份精炼的汇报,而不是把整个信息堆原封不动搬回来。FiLM调制的公式如下:
第三重:GPBlock双向几何-语义交互。这一步的模块全名叫Group-Mix-Ungroup,三个子步骤各司其职。Group阶段让16个语义原型去attend所有点特征,吸收3D几何上下文;Mix阶段用token混合和FFN通道混合来协调原型之间的信息;Ungroup阶段反过来让每个点去attend精炼后的原型,把带有几何感知的全局语义再分发回每个点。经过这一轮双向交互,语义原型变成了几何感知的原型Z',点token也变成了语义增强的点特征P'。为什么要双向?因为同一个指令在不同物体上可能对应完全不同的几何形态——“抓住把手”在杯子上是一个弧形小柄,在抽屉上却是一个扁平的拉槽,语义必须先落到几何上才能获得正确的解释。
最后是指令引导解码。增强后的点token通过一个四层Transformer交叉解码器,同时查询h_aff全局功能标记和精炼后的语义原型Z',然后接一个轻量输出头,经sigmoid得到每个点的功能区域得分。训练时还加了一个“指令Dropout”的技巧:随机把h_aff和视觉token清零,逼模型不能只靠语义捷径,必须依赖几何先验——这能显著提升对指令改写的鲁棒性。
损失函数方面同样花了心思,采用三种损失的加权组合:加权BCE保障逐点概率校准,Focal Loss强化对困难少数点的学习,Dice Loss直接优化稀疏区域的整体重叠度。三种损失各管一摊,一起把模型往“校准又好、区域又准”的方向推。
伪标签自训练:无需人工标注的类别泛化提升
有了数据管道和解码器,AfordAny还有一张底牌:伪标签自训练。动机很朴素——训练数据都是LVIS里已有的类别,但真实世界总有没见过的新物体。要扩充类别覆盖,难道又得雇人标注?AfordAny的思路是让已经训练好的模型去给新物体打标签,然后“吃自己的狗粮”再训练一轮。
具体流程分为三步。第一步是伪标签生成:把训练好的解码器当作教师模型,喂给它5325个与训练集不重叠的LVIS新物体,生成逐点的功能区域预测。为了控制噪声,只保留置信度足够高的预测——概率在0.15到0.65之间的模糊区域全部丢弃,剩下的高置信前景和背景二值化成伪标签,再按1:1的比例与真实标签混合采样。
第二步是最小扰动训练。不是简单地拿伪标签再训一遍,而是用很轻的力度“推一把”:伪标签权重设定为w=0.1,同时额外做0.5×的BCE/Focal损失缩放,等效下来伪标签的实际影响只有约5%。这就好比老师在作业本上轻轻画了个圈,而不是重新写一本。实验证实,如果伪标签混合得太激进,thresholded overlap虽然会涨,但预测概率会被扭曲,得不偿失。
下表展示了伪标签自训练的效果。校准前,未见类别的mIoU从0.243提升到0.259,相对提升6.3%,配对bootstrap检验p<0.01,统计显著。而Platt校准后MAE恢复到了接近基线水平,同时IoU增益有所减弱但AUC增益保留——这说明自训练带来的分割能力提升是真实存在的,而非单纯的概率阈值幻觉。
更有意思的是提升的分布:尾部类别(训练样本数≤50的类别)平均提升+0.012,135个尾部类别中有64个得到改善;而头部类别只提升了+0.003。49/71个未见类别都有改善。这直接验证了伪标签自训练的价值——它补的正是长尾数据最缺的几何多样性,而不是重复强化那些已经学得很好的头部类别。论文也坦诚这并不扩大语言词汇表,所以增益来自几何覆盖而非新的语言监督。
实验验证:三个维度的泛化能力与指令鲁棒性
最后的实验环节需要重点看。AfordAny设计了一套系统化的泛化评估协议,把三种泛化挑战拆开独立测量,而不是笼统地用一个大指标糊弄过去。具体划分方式是:70%的类别作为已见类别用于训练,15%作为验证集、15%作为测试集来评估“未见类别”泛化;在已见类别内部,物体按80%/10%/10%划分为训练、验证、测试,以评估“未见物体”泛化;每个部件配了三条同义指令,其中两条用于训练,第三条专门用来评估“未见指令”鲁棒性——这样测试时物体和部件完全相同,只有措辞变了,测的就是纯粹的指令改写稳定性。
指标方面也是多维度覆盖:IoU和mIoU看分割重叠度,AUC看排序质量,MAE看概率校准,SIM看预测与软标签的分布相似度。主结果如下表所示。
可以看到,AfordAny在未见指令IoU上达到0.680,比第二名的OpenAD(0.484)高出近20个点;未见物体IoU 0.428 vs 基线最优的0.418;未见类别IoU 0.305 vs 基线最优的0.266。其中值得注意的是LMAffordance3D在未见物体上表现不错(0.418),但未见类别直接掉到0.244——这说明它在“见过类别的新个体”上还能迁移,但碰上全新的类别就露馅了。AfordAny在三个维度上同时站稳,说明其泛化能力不是靠“偏科”堆出来的。
指令鲁棒性的优势更加夸张。下表展示的是同义改写前后的性能差(Δ),绝对值越小越好。AfordAny的ΔIoU只有-0.105,而LASO和LMAffordance3D分别高达-0.342和-0.360。这意味着基线方法一换措辞性能就崩掉三分之一,而AfordAny几乎毫发无损。差距如此之大,根本原因在于Cosmos-2B的深层语义理解加上指令条件瓶颈的压缩机制,让模型学到的是“功能语义”而不是“字符串匹配”。
消融实验则清楚地展示了每个模块的贡献。语义压缩的影响最大,去掉后未见类别IoU下降0.060;GPBlock次之,下降0.035;投影注入和指令Dropout分别贡献0.030和0.017。这验证了一个关键结论:跨类别泛化主要靠指令条件瓶颈和几何-语义交互,而投影注入更多帮助同类别新实例。
另一个值得关注的角度是逐类别的性能分布。下图用小提琴图展示了各类别的IoU分布,可以看出AfordAny不仅在平均值上领先,类别的整体分布也更紧凑,说明方法对类别的“偏科”程度更小。人工验证子集(41条未见类别+54条未见物体记录)上的结果也与主实验趋势一致,说明自动标签噪声对结论的影响有限。
可视化结果同样很有说服力。下图中,AfordAny在未见指令、未见物体、未见类别三种场景下都能把目标部件聚焦到正确的3D区域,而基线方法在换种说法后预测经常变得弥散。特别是第三组“未见类别”的例子——模型之前从未见过这种物体类型,仍然能根据指令+视觉线索猜出功能区域的大致位置,这种能力在机器人操作中是非常关键的。
从部署成本来看,AfordAny的解码器只有1054万参数,在单张A100上对4096点物体的中位推理延迟约16.5毫秒,换算下来每秒能跑60次,对机器人实时交互来说完全够用。不过要注意,SAM 3D重建和Cosmos-2B特征提取是前置步骤,整条pipeline的端到端延迟会高于解码器本身。实验对比方面也需要说明:所有基线都使用了相同的数据、掩码、划分、损失函数、300轮训练预算和模型选择标准,没有匹配参数数量和特征提取成本——这是一种“数据与监督可控,而非算力可控”的公平对比,AfordAny在未见类别上0.305的IoU虽然全面领先,但绝对数值离“可靠使用”还有明显距离。
龙迷三问
这篇论文到底在解决什么问题? 同济大学与中科院提出AfordAny,仅凭单张RGB图像即可完成开放世界3D功能区域定位,构建473类、5334个物体的基准,未见类别IoU达0.305,指令敏感度差距仅0.105。
这篇工作最值得看的点是什么? AfordAny在未见指令IoU(0.680)、未见对象IoU(0.428)和未见类别IoU(0.305)上均领先,指令敏感度差距最小(0.105),伪标签自训练后未见类别mIoU相对提升6.3%。
这篇工作的边界或风险在哪里? 优点:1) 全自动数据管道,无需人工标注即可构建大规模3D功能监督;2) 冻结VLM特征与3D几何的有效融合,避免VLM微调;3) 伪标签自训练显著提升未见类别泛化。缺点:1) 2,064个对象无有效部件,可能混淆不可分解对象与重建/提示失败;2) 长尾分布偏向常见部件;3) 自动融合的多视图标签缺乏人工验证;4) 冻结VLM特征限制任务自适应。
如果你还有哪些想要了解的,欢迎在评论区留言或者讨论~
龙哥点评 论文创新性分数: ★★★★☆
提出AfordAny端到端框架,利用单目RGB图像通过自动化数据构建管道生成大规模文本条件3D部件级功能监督,采用冻结VLM引导的跨模态3D功能解码器,并通过伪标签自训练提升开放世界泛化能力。
实验合理度: ★★★★☆
IoU、mIoU、ROC AUC、MAE、SIM。
学术研究价值: ★★★★☆
提出AfordAny端到端框架,利用单目RGB图像通过自动化数据构建管道生成大规模文本条件3D部件级功能监督,采用冻结VLM引导的跨模态3D功能解码器,并通过伪标签自训练提升开放世界泛化能力;更关键的是问题定义是否可复用到同类任务。
稳定性: ★★★☆☆
现有材料未提供充分的极端条件、重复运行或扰动测试,稳定性暂按中性评价。
适应性以及泛化能力: ★★★☆☆
现有材料未完整展示跨数据集、跨场景或分布外实验,泛化能力仍需进一步验证。
硬件需求及成本: ★★★☆☆
解码器10.54M可训练参数,单对象(4096点)推理延迟16.5ms(中位数),121.63 GFLOPs矩阵运算。
复现难度: ★★★☆☆
https://github.com/AfordAny
产品化成熟度: ★★★☆☆
论文验证以研究实验为主,真实部署中的时延、成本、维护和异常场景仍需补充验证。
可能的问题: 1) 2,064个对象无有效部件,可能混淆不可分解对象与重建/提示失败;2) 长尾分布偏向常见部件;3) 自动融合的多视图标签缺乏人工验证;4) 冻结VLM特征限制任务自适应。
主要参考文献
[1] Deng S, et al. 3D AffordanceNet: A benchmark for visual object affordance understanding. CVPR 2021.
[2] Gupta A, Dollar P, Girshick R. LVIS: A dataset for large vocabulary instance segmentation. CVPR 2019.
[3] Chen Z, et al. SAM 3D: Segment Anything in 3D scenes. 2025.
[4] Agarwal N, et al. Cosmos: A world knowledge model. 2025.
[5] Li J, et al. LASO: Language-conditioned affordance segmentation. CVPR 2024.
[6] Zhu T, et al. LMAffordance3D: Language-guided 3D affordance learning. CVPR 2025.
*本文仅代表个人理解及观点,不构成任何论文审核或者项目落地推荐意见,具体以相关组织评审结果为准。欢迎就论文内容交流探讨,理性发言哦~ 想了解更多原文细节的小伙伴,可以点击 "阅读原文", 查看更多原论文细节哦!