![]()
2023年,自动驾驶测试场上发生过这样一件事:一辆车的目标检测系统把路边一块奇怪纹理的广告牌,识别成了"狗",置信度高达94%。系统很确定,但它错得离谱。
这不是孤例。现在的目标检测器,也就是能在图片里框出"这是车""这是人"的AI系统,训练时只见过有限的几十个类别。可现实世界是无限的,一旦碰到没见过的东西,它们经常会自信满满地给出一个错误答案。这种现象有个专门的名字,叫**OoD幻觉**。
> OoD(Out-of-Distribution):指训练数据分布之外的样本,通俗说就是模型没见过的东西。
> 幻觉:这里特指目标检测器对训练类别之外的物体,产生了错误但高置信度的预测,好比你问一个只学过猫狗分类的孩子"这是什么鸟",他非要说"这是狗",还说得斩钉截铁。
这篇来自利物浦大学、格勒诺布尔阿尔卑斯大学和CSX-AI的论文,做了一件挺反常规的事。过去大家解决这个问题,要么是在模型输出的高维特征上设计越来越复杂的判断规则,要么干脆把模型本身改造一遍。这篇论文的作者却问了一个更根本的问题:模型内部到底已经"知道"什么?我们有没有可能不改动模型,而是直接把它脑子里已经有的知识挖出来看看?
当年最好的方法,也只是在"打补丁"
要理解这篇论文的价值,得先搞清楚这个领域此前卡在哪儿。
现有的应对策略分成两条路。第一条叫"反应式",也就是等模型给出预测之后,再用一个外挂的判断器去筛查这个预测靠不靠谱,靠的是置信度打分、不确定性建模,或者从模型的中间特征层里提取信号。第二条叫"主动式",代表工作是2026年的Proximal-OoD方法,它会对检测器本身做轻量级微调,试图从根源上压制幻觉的产生。
这两条路看起来方向不同,但骨子里做的是同一件事:都是在检测器学出来的那个高维表示空间里打转,要么设计更精巧的打分函数,要么调整模型让这个空间变得更"干净"。
问题是,这个高维空间里到底装了什么,没人真正说清楚过。
打个比方,这就像一个老中医给你把脉。他能准确判断你是不是生病了,甚至能开出对症的药方,但如果你问他"你摸到了什么,为什么下这个判断",他可能只会说"感觉不对"。有效,但说不清道理。现有的OoD检测方法差不多就是这种状态:分数打得挺准,但你问它凭什么给这个分数,它答不上来。
论文作者的洞察是,目标检测器产生幻觉不是随机翻车,而是有两类典型来源。
第一类是**近邻OoD物体**。
> 近邻OoD(Proximal OoD):指那些视觉上跟训练类别很像,但其实并不属于训练类别的物体。比如模型训练时只学过"鸟",见到一只造型奇特的蝙蝠,容易被误判成鸟,因为轮廓和姿态太相似了。
第二类是纯背景样本,也就是画面里根本没有物体,但某些纹理、光影恰好激活了检测器的"这里有东西"的判断机制,凭空生出一个检测框来。
这两类样本以前的用法很单一,要么被扔进训练集去做异常样本暴露,要么被用来微调模型让它别再犯错。这篇论文换了个思路:不用它们来"纠正"模型,而是用它们来"审问"模型,看看模型面对这两类刁钻样本时,内部到底激活了哪些概念、依据了什么线索。
把"感觉"翻译成"部件清单":语义先验的提取
论文提出的方法叫SPK,全称是Structured Prior Knowledge,结构化先验知识。
它的核心思路是,从预训练好的检测器里,提取出三种互补的"先验知识":语义先验、几何先验、上下文先验,然后把它们打包成一个五维的紧凑表示,用这五个数字去判断一个检测框到底是真的还是幻觉。
先说最关键的语义先验。
作者假设,检测器内部其实隐含编码了物体的部件级概念,比如识别一只鸟的时候,模型内部可能已经隐约"看到"了喙、翅膀、躯干、脚这些局部特征的组合,只是这些信息被压缩进了不可读的高维向量里,没有被显式解码出来。
> RoI特征(Region of Interest):检测器针对某个候选框区域提取出的局部特征向量,可以理解成模型对这个框内内容的"数字摘要"。
为了把这些隐藏的部件概念挖出来,作者给每个训练类别单独训练了一个轻量级的语义提取头,这个提取头接收RoI特征,输出一张空间激活图,图上每个格子标注了某个部件概念的激活强度。比如对"鸟"这个类别,提取头就会输出"这片区域是不是喙""那片区域是不是翅膀"这样的判断。
这套部件概念不是凭空定义的,而是分成三组来源:一组来自训练类别本身的正常部件,一组来自和该类别视觉相似的近邻OoD类别的部件,还有一组来自纯背景纹理。这三组分别对应ID、近邻OoD、背景三种"证据来源"。
训练这个提取头需要大量部件级的标注数据,如果靠人工标注,工作量会大到不可接受。于是作者搭了一条自动化标注流水线:先用GPT-5给每个类别生成一份"这个物体应该有哪些可见部件"的清单,再用OWLv2这个开放词汇检测模型把每个部件在图像里框出来,然后用SAM 2这个分割模型把框细化成像素级的掩码,最后只保留跟物体主体掩码重叠超过70%的部件掩码,防止背景噪声混进标注里。
> OWLv2:一个开放词汇目标检测模型,能根据文字描述(比如"鸟的翅膀")在图像中框出对应区域,不局限于固定类别。
> SAM 2(Segment Anything Model 2):Meta开发的图像分割模型,输入一个大致框选区域,能输出精确到像素的分割掩码。
这套自动标注工具的质量在论文里做了验证,整体的概念级IoU达到40.8%,比此前最强的VLPart方法高出3.8个百分点,说明这条自动化流水线确实能替代大部分人工标注工作。
语义提取头的训练用了三个损失函数配合。第一个是Dice损失,负责让预测的概念激活图和标注尽量吻合。第二个叫抑制损失,专门惩罚那些不该被激活的概念,比如一只鸟的脚被遮住看不见,那"脚"这个概念通道就不该被点亮,如果点亮了就要受罚。第三个是分组损失,确保最终的语义响应能准确归类到ID、近邻OoD、背景这三组里的正确一组。
论文的消融实验显示,这三个损失缺一不可。单独去掉分组损失,FPR95(一种越低越好的误报率指标)从9.16恶化到15.85;去掉抑制损失,恶化到17.44;去掉Dice损失,恶化到20.80。三者叠加使用才能达到最佳效果。
这里可以做个类比。设想你在教一个新手医生看X光片,如果只告诉他"看到阴影就说有问题",他很快会把胸腔里正常的血管纹理也当成病灶,误报满天飞。你必须同时告诉他阴影长什么样才算真的病灶,正常结构不该被当成异常,还要教会他把观察到的证据归类到正确的诊断方向上去,三件事一起做,他才能真正学会看片子,而不是瞎猜。这三个损失函数干的就是这三件事,少一件,模型学到的"部件辨识能力"就会跑偏。
几何和上下文:两个容易被忽视的线索
除了语义,作者还挖出了另外两种先验。
几何先验很朴素,就是计算一个预测框相对于整张图像的面积占比。
> 相对面积(Relative Area):预测框面积除以整张图像面积,用来衡量这个物体在画面中占多大比例,且不受图像分辨率影响。
这个数字看着简单,但背后的逻辑是,检测器在训练时天然会学到一种"尺度感",比如汽车通常不会占满整张图,飞机在天空背景里通常是个小点。如果一个预测框的尺度严重偏离训练数据里同类物体的常见尺度分布,这本身就是一个可疑信号。
上下文先验则更进一步,关注的不是物体本身,而是这个物体所处的整张图像跟训练集里的图像像不像。
作者用检测器自身的多尺度特征图,对每个尺度算出通道方向的均值和标准差,拼接成一个图像级的向量表示,再跟训练集里同类别图像的向量做K近邻比对,算出一个上下文距离。
如果一张图片的整体视觉氛围跟训练集里同类物体常见的场景差异很大,比如训练集里的"车"都是马路上拍的,突然出现一张在沙漠里、用奇怪滤镜处理过的图片被判成"车",即便车这个物体本身框得没错,这种反常的场景也是一个警示信号。
打个比方,这就像你收到一封邮件,署名是你的银行,内容也确实提到了你的账户信息,看起来一切正常。但如果这封邮件是从一个从没见过的域名发来的,用词习惯也跟银行平时的风格不一样,你的警觉就会被拉响,即便邮件正文本身挑不出毛病。上下文先验捕捉的正是这种"内容对,但环境不对"的违和感,如果没有这层判断,模型就只能靠物体本身的局部特征做决定,容易被伪装得像模像样的假阳性骗过去。
消融实验证明,几何和上下文先验确实带来了实打实的提升。单用语义先验,FPR95是21.17;加上几何先验,降到12.36;再加上上下文先验,进一步降到9.16。尤其在BDD-100K这个自动驾驶场景数据集上,上下文先验的效果格外明显,因为驾驶场景的背景复杂多变,图像级的一致性判断能提供额外的辨别力。而在PASCAL-VOC这种物体居中、背景相对简单的数据集上,这个提升就没那么显著,因为测试图片本身跟训练分布已经比较接近,上下文这道额外的筛子发挥空间有限。
五个数字,胜过千维特征
把语义、几何、上下文三种先验组合起来,最终每个预测框都会被压缩成一个五维向量:ID语义响应、近邻OoD语义响应、背景语义响应、相对面积、上下文距离。
这五个数字构成的空间,就是论文标题里说的"结构化先验知识空间"。
这里有一个挺出人意料的实验结果。作者拿这五维向量去接现有的OoD检测算法,比如KNN、孤立森林(iForest),跟直接用原始的高维检测器特征做对比。结果是,同样的算法,换成SPK这个五维表示后,性能大幅跃升。
以YOLO在PASCAL-VOC上的近邻OoD检测为例,用原始特征配合iForest算法,FPR95高达70.27;换成SPK五维表示后,同样的iForest算法,FPR95骤降到14.25。算法完全没变,只是换了一套更精炼的表示,效果就有天壤之别。
这说明什么?说明性能提升的根源不在于算法有多聪明,而在于喂给算法的数据本身有没有把关键信息萃取出来。这有点像做菜,同样一口锅同样的火候,用新鲜食材和用放了三天的边角料,做出来的菜味道差得不是一星半点。算法就是那口锅,火候调得再精细,食材本身不行,菜也好不到哪去。
> FPR95:全称False Positive Rate at 95% TPR,指模型在保持95%正样本(正常样本)被正确识别的前提下,误报率有多高,数值越低说明模型的判断越精准。
论文还做了一个更硬核的对比:跟改动了检测器本身参数的Proximal-OoD方法比,SPK在完全不碰检测器一个参数的情况下,居然表现更好。
比如在YOLO加BDD-100K的组合下,原始检测器产生的近邻OoD幻觉数量是701个,Proximal-OoD微调后降到80个,而SPK在不动模型的情况下把这个数字压到了69个,远OoD幻觉更是从666个直接降到5个,降幅达到98%。
这个结果有点意思。它意味着,检测器身上其实已经背着足够多的知识来分辨真假,只是这些知识散落在高维特征里没被读出来。与其费劲去微调模型逼它"学会"新东西,不如先把它已经会的东西找出来用好。这跟很多组织管理里的道理是相通的:有时候团队效率低不是因为缺人才,而是因为已有的能力没被有效组织和调用,招新人之前,先把手头的资源盘一遍,可能问题就解决了一半。
表格里的数字说明了什么
论文在YOLO、Faster R-CNN、RT-DETR三种代表性架构(分别对应单阶段、两阶段、Transformer这三大主流检测范式)上都做了完整测试,覆盖PASCAL-VOC和BDD-100K两个数据集,Near-OoD和Far-OoD两种测试场景。
在FPR95这个指标上,SPK配合iForest算法的组合,在几乎所有场景下都拿到了最好成绩。比如Faster R-CNN在BDD-100K的Near-OoD场景下,传统KNN方法的FPR95是50.54,SPK-iForest压到了**2.31**;Far-OoD场景更夸张,从49.76压到**1.52**。
在AUROC这个指标上(越高越好,代表模型区分正常和异常样本的整体能力),SPK系列的表现同样全面碾压此前的方法。RT-DETR在BDD-100K的Far-OoD场景,传统KNN方法的AUROC是85.29,SPK-iForest达到了**99.60**,几乎逼近满分。
为了检验SPK是不是只在特定的、经过校准的测试基准上表现好,作者还专门在文献里常用的、未经校准的旧基准上做了对照测试,跟另一批此前的方法比较,包括依赖外部视觉编码器的UNO-Adapter方法。结果是,即便不借助任何外部模型,只靠检测器自身的信息,SPK在十二组测试里赢了十组;如果引入DINO ViT这个外部视觉编码器替换掉上下文先验,表现还能再上一个台阶,在BDD-100K上把误报率直接干到0.00。
> DINO ViT:一种基于Vision Transformer架构、通过自监督方式训练的视觉特征提取模型,常被用作通用图像表示的外部工具。
幻觉是怎么被"抓包"的
论文里有几张定性分析的图,挺值得细看。
对于Near-OoD幻觉,比如一个电饭煲被误判成瓶子,SPK给出的五维向量里,近邻OoD语义响应高达1.000,而ID语义响应只有0.006。这说明模型内部其实"感觉"到了这不是一个正常的瓶子,只是分类头依然给了瓶子这个标签,而SPK把这个内在的犹豫捕捉了出来。
对于Far-OoD幻觉,比如一张抽象纹理图被误判成狗,背景语义响应飙到1.000,几何先验的相对面积也严重偏离正常范围,达到0.995(远超训练集里狗的正常尺度占比),综合判断直接把这个预测判定为OoD并拒绝。
有意思的是,这些幻觉样本的检测器置信度都相当高,普遍在82%到94%之间。也就是说,如果只看模型给出的置信度分数,这些错误预测看起来一点都不可疑,但SPK提取出的深层证据,直接戳穿了这层伪装。
这就好比一个很会说谎的人,表面上镇定自若、逻辑通顺,你光听他说话内容根本发现不了破绽。但如果你有办法监测他说话时的微表情、语调起伏这些他自己都控制不住的生理信号,谎言马上就露馅了。SPK做的事情,本质上就是找到了检测器自己都没意识到、但确实在起作用的那些"微表情"。
这套方法带来多少额外开销
任何一个实用的技术方案都得回答一个问题:这么做要多花多少时间。
论文测了YOLO在PASCAL-VOC上的推理耗时。原始检测器单张图片推理需要10.15毫秒,加上SPK的完整流程后是12.65毫秒,语义先验提取本身只占0.17毫秒,孤立森林的判断只占0.05毫秒。
整体额外开销大约2.72毫秒,相当于多花了26.8%的时间。对于需要严格实时性的场景比如自动驾驶来说,这个数字不算小,但考虑到它带来的幻觉大幅下降,这笔时间成本换来的安全边际,多数情况下是划算的。
从Wu等人2026年的工作到这篇论文,一条渐进的技术脉络
值得一提的是,这篇论文并非凭空出现,它站在一系列前序工作的肩膀上。
2024年,同一批作者(He、Wu等人)提出了基于框抽象的实时OoD监测方法BAM,尝试在检测器输出的边界框层面构建异常判断规则,这是较早期的、直接在检测器输出上做文章的尝试。
2026年,Wu等人在IEEE TPAMI上发表了Proximal-OoD方法,指出传统的物体性(objectness)判断可能对通用的类物体图案产生反应,而不是真正针对训练类别的物体,并提出用近邻OoD数据去校准检测器,让它对分布外物体更敏感。这篇工作也重新审视了此前OoD评测基准存在的数据污染问题,提出了一套校准过的评测协议,这套协议也被本文直接采用作为主要实验基准。
而这篇SPK论文,则是在Proximal-OoD打下的近邻OoD数据构造思路基础上,往前走了一步:不再用这些数据去微调检测器本身,而是把它们当作"探针",去解码检测器已经学到但从未显式表达过的知识。这个转向,从"改造模型"到"读懂模型",代表了这个领域一个值得关注的方法论变化。
写在后面
读这篇论文的时候,一个细节让我反复琢磨了很久:他们发现,同样的OoD检测算法,仅仅是换了一套输入表示,性能就能差出好几倍。这多少打破了我之前一个隐含的假设,总以为提升检测效果得靠更复杂的算法或者更大的模型,却没太认真想过,也许瓶颈根本不在算法这一端,而在于我们喂给算法的信息本身有没有把该有的结构呈现出来。
另一个让我意外的地方是,论文里那个自动化部件标注流水线,居然是拼装GPT-5、OWLv2、SAM 2这三个现成的大模型完成的,没有一行是从零训练的标注模型。这某种程度上说明,当基础模型的能力足够强之后,很多以前需要大量人力堆砌的数据工程环节,正在变成"组合调用"的问题,而不是"重新造轮子"的问题。
论文里没有回答的一个问题是,这五维表示是不是最优的维度数量。如果再加一维、或者换一种几何先验的算法,会不会有更好的效果?这套"先挖掘、再压缩"的思路,能不能用到图像分类、语义分割这些其他视觉任务上?这些问题论文没细说,但顺着这个方向想下去,挺让人好奇的。
Q&A
Q1:SPK是什么,它解决了目标检测里的什么问题?
A:SPK全称Structured Prior Knowledge,是一种从预训练好的目标检测模型里提取语义、几何、上下文三类先验知识,组合成五维紧凑表示的框架,用来判断检测器的某个预测是真实物体还是训练类别之外产生的错误幻觉,且全程不需要修改检测器本身的参数。
Q2:SPK跟之前修改检测器参数的方法比,效果怎么样?
A:论文对比了2026年提出的Proximal-OoD方法(需要微调检测器),结果显示SPK在完全不改动模型的情况下,幻觉数量下降得更多,比如在RT-DETR加BDD-100K场景下,远OoD幻觉从原始的1220个降到113个,效果优于需要微调模型的方案。
Q3:SPK的语义先验是怎么提取出来的,需要人工标注很多数据吗?
A:作者搭建了一条自动化标注流水线,先用GPT-5生成物体的部件概念清单,再用OWLv2定位这些部件的位置,最后用SAM 2细化成像素级掩码,整个过程只需要轻量级人工核验,不需要大规模人工标注。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.