传统目标检测有个死结:训练时没标过的类别,模型永远认不出来。巡检要查"未戴绝缘手套的作业人员",仓库要查"倒放的货物托盘",明天又冒出个"违规停放电动车"——重新标数据、重新训练一遍,工期和成本都扛不住。开放词汇检测换个思路:把要检测的类别写成一句话,模型直接按描述去图里找。
今天分享的这篇 CVPR2026 论文 DetectAny,把视觉检测和文本语义对齐到同一空间:输入图像加类别文本描述,直接输出框和类别匹配分数,无需为该类别准备标注数据。在 LVIS 开放词汇基准上,新类别 AP 优于同量级方法,同时保持对基础类别的检测精度,模型轻量,适合部署在园区或边缘设备上做弹性检测。
一、开放词汇检测为什么难
1.1 文本和图像不在同一个空间里
图像特征是视觉信号,文本特征是语言语义,两者天然不在一个度量空间。要让模型理解"穿反光背心的人"这段文字对应的视觉区域,必须训练一个能把两者对齐的跨模态空间。对齐不准,模型会检出一堆语义擦边但不对的目标。
1.2 新类别没有标注样本
闭集检测可以在训练中直接监督每个类别;开放词汇要检测的新类别在训练时压根没见过标注,只能靠文本嵌入和视觉嵌入的相似度泛化。泛化能力不够,模型遇到新词就"假装认识"乱报。
1.3 基础类别精度容易掉
为了兼容新类别,模型往往会做特征调整,结果原有类别(人、车)的检测精度往下掉。这在工程上是不能接受的——巡检系统先得把常规目标检准,才能谈扩展类别。
1.4 类别描述歧义与细粒度
"红色安全帽"和"橙色安全帽"视觉差别不大,文本区别却在关键形容词上;"戴手套的人"和"拿手套的人"更微妙。模型要抓住描述里的关键判别词,而不是泛泛看整体语义。
二、DetectAny 的三个核心设计
DetectAny 的整体思路:保持检测主干稳定以保证基础类别精度,在特征层面做视觉-文本对齐,用提示词增强和区域-文本匹配提升新类别泛化。
2.1 视觉-文本对齐颈部
•双塔编码:图像主干提取区域特征,文本编码器把类别描述编成向量。
•对齐颈部:把区域特征投影到与文本同一空间,让相似度可以直接比较。
•冻结主干、只训对齐层:主干保持原检测能力,只训练对齐与匹配部分,基础类别精度不掉。
这是关键取舍:不追求把整个模型重训成多模态,而是在检测框架上挂一个对齐模块,兼顾兼容性和扩展性。
2.2 区域-文本匹配打分
每个候选区域与每种类别文本计算相似度分数:
•区域级匹配:不是整图匹配,而是对每个候选框单独算分数,支持同图多类别共存。
•背景抑制:显式训练"不匹配文本"的背景嵌入,减少误报。
•分数融合:把检测置信度和文本相似度加权融合,避免纯文本匹配导致的低质量框。
2.3 提示词增强与细粒度描述
文本侧做了工程化处理:
•模板扩展:同一类别生成多种描述模板("一个穿反光背心的人""反光背心作业人员"),取平均嵌入,提升稳定性。
•属性拆解:把"红色安全帽"拆成"安全帽 + 红色"两路,分别匹配再组合,提升细粒度判别。
•负样本描述:加入易混类别("橙色安全帽")作为对比,拉开相似类别的分数差。
三、技术架构拆解
模块 |
做什么 |
关键设计 |
图像检测主干 |
提取区域特征与候选框 |
保持冻结,稳住基础类别精度 |
文本编码器 |
把类别描述转为语义向量 |
提示词模板扩展 + 属性拆解 |
对齐颈部 |
视觉特征投影到文本空间 |
只训对齐层,轻量增量 |
区域-文本匹配头 |
输出类别匹配分数 |
背景负样本抑制,置信度与相似度融合 |
工程要点:
•换类别只改文本:新增检测类别只需写一句描述,不动模型权重。
•部署形态:主干可量化,文本嵌入离线预计算,边缘端只跑视觉分支。
•可组合:和现有固定类别检测并存,常规目标走原通路,长尾需求走开放词汇通路。
四、和主流方法的横向对比
在 LVIS 开放词汇检测基准上对比(AP 越高越好,新类别指训练中无标注的类别;数值为示意口径,复现以官方划分为准):
方法 |
基础类别 AP↑ |
新类别 AP↑ |
参数量(M) |
文本侧需求 |
闭集检测器(基线) |
较高 |
不支持 |
— |
不支持自定义类别 |
ViLD 类蒸馏 |
中等 |
中等 |
较重 |
需视觉-语言预训练模型 |
区域-文本对齐类 |
中等偏上 |
较好 |
重 |
类别描述 |
DetectAny |
保持较高 |
最优 |
轻量 |
一句话描述 |
对比结论:闭集检测器精度高但完全不能扩展类别;纯蒸馏方案依赖大模型、部署重。DetectAny 冻结主干只训练对齐层,在基础类别上基本不掉点,同时新类别泛化更好,参数增量小。
五、快速上手:核心推理框架
python |
落地提示:文本描述越具体越好。"人"这种宽泛描述在复杂场景召回高但误报也多;加上关键属性(颜色、穿戴、状态)能显著提升可用性。上线前建议针对每个查询词单独测一遍误报率。
六、毕设/竞赛拓展方向
6.1 自然语言巡检指令
值班人员在系统里直接输入"查找未戴安全帽的作业人员",系统即时返回结果。把开放词汇检测做成指令式巡检,是很好的交互创新点。
6.2 长尾类别工业质检
工业缺陷种类多、每类样本极少,正好发挥零样本优势。用文字描述缺陷形态("表面划痕""边缘破损")直接检测,减少标注成本。
6.3 多模态检索与检测联动
把开放词汇检测和图像检索结合:先按文字找相似图像,再在图中定位目标。和之前的图像检索方向可以组合成"文本搜图 + 目标定位"的完整流程。
6.4 小样本微调与领域适配
研究开放词汇模型在特定场景(园区、车间)的小样本微调策略,解决"通用模型在新场景误报高"的问题。贴近工程实践,改进空间大。
七、写在最后
开放词汇检测的意义在于把检测从"固定清单"变成"随时可问"。安防、巡检这类场景的需求本来就是动态增加的,能靠一句话扩类别,比反复标数据重训务实得多。
DetectAny 给我的启发是:扩展能力不一定要重训整个模型。冻结稳定的部分、只在对齐层做增量训练,既能保住基础精度,又能换来灵活性,这种工程取舍在落地时往往比追求纯学术最优更划算。
做毕设的同学如果选这个方向,建议先跑通"文本描述 → 检测结果"的最小闭环,再针对一个具体场景(比如安全装备检查)做误报分析和描述优化。"换个词就能检新类别"的演示效果很直观。

