大数跨境

CVPR2026 SOTA|DetectAny开放词汇检测实战!一句话描述即可检任意类别、新目标零样本识别、端侧灵活部署SOTA

CVPR2026 SOTA|DetectAny开放词汇检测实战!一句话描述即可检任意类别、新目标零样本识别、端侧灵活部署SOTA AI与计算机视觉
2026-11-09
2
导读:传统目标检测有个死结:训练时没标过的类别,模型永远认不出来。

传统目标检测有个死结:训练时没标过的类别,模型永远认不出来。巡检要查"未戴绝缘手套的作业人员",仓库要查"倒放的货物托盘",明天又冒出个"违规停放电动车"——重新标数据、重新训练一遍,工期和成本都扛不住。开放词汇检测换个思路:把要检测的类别写成一句话,模型直接按描述去图里找。

今天分享的这篇 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
DetectAny 开放词汇检测核心流程
import torch
import torch.nn as nn

class DetectAny(nn.Module):
    def __init__(self, detector_backbone, text_encoder):
        super().__init__()
        self.backbone = detector_backbone        # 冻结的检测主干
        self.text_encoder = text_encoder          # 文本编码
        self.align_neck = AlignNeck()             # 视觉->文本空间投影
        self.match_head = RegionTextMatcher()     # 区域-文本匹配

    def forward(self, image, class_texts):
        # 1. 图像侧:候选框 + 区域特征
        boxes, region_feats = self.backbone(image)

        # 2. 文本侧:类别描述编码
        text_embs = self.text_encoder(class_texts)  # [C, D]

        # 3. 对齐后计算区域-类别相似度
        region_embs = self.align_neck(region_feats) # [N, D]
        sim = region_embs @ text_embs.t()           # [N, C]
        scores = self.match_head(boxes, sim)        # 融合检测置信度

        return boxes, scores

# 使用示例:新增类别只改文本
model = DetectAny(build_backbone(), build_text_encoder()).eval()
model.backbone.requires_grad_(False)

queries = [
    "一个穿着反光背心的人",
    "违规停放的电动车",
    "未戴安全帽的作业人员",
]

with torch.no_grad():
    img = load_image("园区画面.jpg")
    boxes, scores = model(preprocess(img), queries)
    for i, q in enumerate(queries):
        keep = scores[:, i] > 0.4
        print(f"{q}: 检出 {keep.sum().item()} 个目标")

落地提示:文本描述越具体越好。"人"这种宽泛描述在复杂场景召回高但误报也多;加上关键属性(颜色、穿戴、状态)能显著提升可用性。上线前建议针对每个查询词单独测一遍误报率。

六、毕设/竞赛拓展方向

6.1 自然语言巡检指令

值班人员在系统里直接输入"查找未戴安全帽的作业人员",系统即时返回结果。把开放词汇检测做成指令式巡检,是很好的交互创新点。

6.2 长尾类别工业质检

工业缺陷种类多、每类样本极少,正好发挥零样本优势。用文字描述缺陷形态("表面划痕""边缘破损")直接检测,减少标注成本。

6.3 多模态检索与检测联动

把开放词汇检测和图像检索结合:先按文字找相似图像,再在图中定位目标。和之前的图像检索方向可以组合成"文本搜图 + 目标定位"的完整流程。

6.4 小样本微调与领域适配

研究开放词汇模型在特定场景(园区、车间)的小样本微调策略,解决"通用模型在新场景误报高"的问题。贴近工程实践,改进空间大。

七、写在最后

开放词汇检测的意义在于把检测从"固定清单"变成"随时可问"。安防、巡检这类场景的需求本来就是动态增加的,能靠一句话扩类别,比反复标数据重训务实得多。

DetectAny 给我的启发是:扩展能力不一定要重训整个模型。冻结稳定的部分、只在对齐层做增量训练,既能保住基础精度,又能换来灵活性,这种工程取舍在落地时往往比追求纯学术最优更划算。

做毕设的同学如果选这个方向,建议先跑通"文本描述 → 检测结果"的最小闭环,再针对一个具体场景(比如安全装备检查)做误报分析和描述优化。"换个词就能检新类别"的演示效果很直观。

【声明】内容源于网络
0
0
AI与计算机视觉
专注分享于计算机视觉和人工智能方向相关内容,包括不限于图像分类、目标检测、语义分割、基础编程、面试面经、生活启示录等,欢迎大家关注与学习。
内容 150
粉丝 0
AI与计算机视觉 专注分享于计算机视觉和人工智能方向相关内容,包括不限于图像分类、目标检测、语义分割、基础编程、面试面经、生活启示录等,欢迎大家关注与学习。
总阅读3.7k
粉丝0
内容150