TECH ARTICLES
计算机视觉 多模态 YOLO

YOLO-MM:当目标检测学会"听人话",封闭的 80 类是怎么被打破的

Jackie Zhan 2026-06-25
目录
一、传统 YOLO 到底卡在哪? 二、给检测器装上"语言",意味着什么? 三、"先提示,再检测"为什么是神来之笔? 四、YOLOE 又往前走了一步:三种提示怎么玩? 五、它能用在哪?又有哪些坑要躲? 六、这条路会走向哪里?

上周一个做安防的朋友问我:"我想让摄像头自动框出画面里'穿红色外套的人',YOLO 能干吗?"

我说:"YOLO 能框出'人',但框不出'穿红色外套的人'。"

他愣了一下:"差别有那么大?不就是加个颜色条件吗?"

差别大到是两个时代。传统的 YOLO,脑子里只装着一张固定的清单——COCO 数据集那 80 个类别:人、车、猫、狗、瓶子……它看世界的方式,是拿画面去和这张清单一个个对号入座。清单上有的,它认得;清单上没有的,比如"红色外套""施工安全帽""货架上倒了的可乐瓶",它一律视而不见。你想加一个新类别?对不起,请准备几千张标注图,重新训练一遍。

所以我那位朋友的需求,本质上不是"加个条件",而是要求一个检测器去理解一句它从没在训练里见过的人话。这件事,过去十年的 YOLO 做不到。

但从 2024 年开始,事情变了。一类被统称为 YOLO-MM(多模态 YOLO) 的模型,把"图像"和"文本"两条信息流接进了同一个检测器。你给它一张图,再给它一句话——"穿红色外套的人"——它真的能框出来。今天我们就来拆一拆:这道几乎封死了十年的门,到底是被哪把钥匙撬开的。

先说清楚一件事
"YOLO-MM" 不是某一篇论文里某个特定模型的官方名字,而是"多模态 YOLO"这一整类技术的统称。这条路上真正的里程碑,是 2024 年的 YOLO-World(CVPR 2024)和 2025 年的 YOLOE(ICCV 2025)。下文所有技术细节和数字,都锚定在这些真实模型上,方便你按图索骥。

一、传统 YOLO 到底卡在哪?

要理解新东西好在哪,得先看清旧东西卡在哪。

传统 YOLO 的检测头,最后一层是什么?是一个固定长度的分类器。训练 COCO,它就有 80 个输出;训练你自己的数据集,有多少类就是多少个输出。这个数字,在训练那一刻就被焊死了。

这意味着什么?意味着模型的"词汇量"是封闭的。它不是在"理解"画面,而是在做一道 80 选 1 的选择题。题目选项印死在卷子上,遇到选项之外的东西,它连"这是什么"都问不出口——因为它的世界里压根没有"未知"这个选项。

这就是学术上说的 封闭集检测(closed-set detection)。它的代价藏在三个地方:

你发现没有,问题的根子不在 YOLO 跑得快不快、准不准,而在它认世界的方式从一开始就是封闭的。它是个优等生,但只会做见过的题。

那怎么办?如果检测头不再是"80 选 1 的选择题",而是变成"开放问答",会怎样?这正是 YOLO-MM 动刀的地方。

关键区别
封闭集检测,是拿画面去匹配一张写死的清单;开放词汇检测,是拿画面去匹配一句临时给的话。前者的上限是训练时定的,后者的上限是你说出口的那一刻定的。

二、给检测器装上"语言",意味着什么?

把"80 选 1"变成"开放问答",缺的那块拼图叫语言

核心思路其实只有一句话:别再用"编号"代表类别,改用"文本的含义"代表类别。

怎么做到?答案藏在一个你可能听过的名字里——CLIP。CLIP 是 OpenAI 在 2021 年搞出来的东西,它干了一件很妙的事:把"图像"和"文字"映射到同一个语义空间里。在这个空间里,一张猫的照片,和"a photo of a cat"这句话,落点几乎重合;而和"一辆卡车"这句话,则隔得老远。

打个比方。CLIP 像一个精通"看图"和"读字"两种语言的同声传译。它把图片翻译成一串向量,把文字也翻译成一串向量,而且保证——只要说的是同一个东西,两串向量就挨得很近。于是"图像"和"文本"第一次有了可以直接比对的公共货币

YOLO-World 干的事,就是把这套"公共货币"机制接进了 YOLO。它的结构,可以拆成三大块:

图像 一张图片 图像主干 YOLOv8 Backbone 文本 "穿红外套的人" 文本编码器 CLIP Text 视觉-语言融合 RepVL-PAN 检测头 框 + 相似度
YOLO-World 的双流结构:图像走视觉主干,文本走 CLIP 编码器,在 RepVL-PAN 里融合

看懂这张图,你就抓住了 YOLO-MM 的七寸:

最关键的变化在最后一步。检测头的输出,从"分类概率"变成了"视觉框和文本向量的相似度"。这一变,分类器的固定长度就被拆掉了——你给几个词,它就比几个相似度。词是你临时说的,所以类别不再封闭。

这背后还有个训练上的功臣,叫区域-文本对比损失(region-text contrastive loss)。训练时,模型不断被逼着做一件事:让"猫所在的那个框"的视觉特征,去贴近"cat"这个词的文本特征,同时远离"dog""car"。练得多了,视觉和语言就在同一个空间里对齐了。这跟 CLIP 的训练哲学一脉相承,只不过 CLIP 对齐的是"整张图 vs 整句话",而 YOLO-World 对齐的是"图里的某个区域 vs 某个词"。粒度更细,正好适配检测这种"哪里有什么"的活儿。

数据说话
在完全没见过 COCO 训练标签的"零样本"设定下,YOLOv8x-worldv2 在 COCO 上拿到了 47.1 的 mAP。换句话说,它没专门学过 COCO 的 80 类,光靠"理解类别名字",就把这套经典数据集做到了接近专门训练模型的水平——而速度比 MDETR、GLIP 这些前辈的开放词汇检测器快了好几个数量级。

到这儿,"听懂人话"这步算是通了。但一个真正的工程师听到这里,应该立刻警觉:CLIP 那么重,每检测一次都要现场编码一遍文本,YOLO 还能叫 YOLO 吗?这正是下一个、也是最精彩的设计。

三、"先提示,再检测"为什么是神来之笔?

YOLO 这三个字母的命,就是一个字:(You Only Look Once,你只看一眼)。

可现在,每检测一张图,是不是都得先把那一堆类别词喂进 CLIP 文本编码器跑一遍?CLIP 可不轻。如果每帧都要"现场翻译"一次文本,实时性就毁了——这等于给一辆跑车焊上了一个拖斗。

YOLO-World 的解法,叫 "先提示,再检测"(prompt-then-detect)。这个名字朴素,但思路极聪明。我把它翻译成大白话:

你的类别词,绝大多数时候是固定的(比如安防场景永远就盯那么十几样东西)。那为什么要每帧都重新翻译?提前翻译好,存起来,反复用不就行了。

具体怎么操作?分两步看:

离线(只做一次) 类别词表 CLIP 编码 离线词表 在线(每帧实时) 视频帧 检测头 权重已固化,无需再跑 CLIP
"先提示,再检测":文本只在离线时编码一次,在线推理直接复用,CLIP 不再进入实时回路

第一步(离线):你把要检测的词——"person""red coat""helmet"——提前用 CLIP 编码好,得到一组向量,存成一张"离线词表"。这步只做一次。

第二步(在线):跑视频时,CLIP 已经退场了。那张离线词表被重参数化(re-parameterize)进了模型权重里——你可以理解为,文本的语义被"焊"进了网络,变成了普通的卷积参数。于是每一帧的推理,就是一次纯粹的视觉前向传播,和原版 YOLO 一样轻、一样快。

"重参数化"这个词听着唬人,其实道理特别朴素。它就像把一道每次都要现算的应用题,提前算出答案、印在了课本里。考试时你直接抄答案,不用再列方程。文本语义这道"应用题",被提前算进了权重这本"课本"。

这一招的精妙之处在于:它把"灵活性"和"速度"这对老冤家给解耦了。需要改词的时候(灵活),你重新生成一次离线词表即可,成本极低、不用重训;跑起来的时候(速度),模型里压根没有文本编码器的影子,该多快还多快。

insider 视角
很多人以为多模态模型必然又慢又重,这是被大语言模型那套"参数越多越好"带歪了。YOLO-World 的反直觉之处恰恰在于:它在训练和准备阶段是多模态的,但在推理阶段又"退化"回了一个纯视觉的单模态 YOLO。多模态用来获得能力,单模态用来保住速度。这种"用时拆掉脚手架"的工程智慧,比堆参数高级得多。

说到这,你可能觉得故事完美收官了。但技术从不停步——既然类别可以用"文字"指定,那能不能用别的方式指定?比如,直接用鼠标圈一个例子给它看?2025 年的 YOLOE,就把这扇门又推开了一道缝。

四、YOLOE 又往前走了一步:三种提示怎么玩?

2025 年 3 月,清华的团队放出了 YOLOE,副标题起得很狂——"Real-Time Seeing Anything"(实时看见万物)。后来这篇工作中选了 ICCV 2025。

如果说 YOLO-World 解决的是"能不能听懂文字",那 YOLOE 想解决的是一个更现实的问题:万一这东西,你压根说不清楚呢?

想象几个场景。你要检测一种特殊的工业零件,它没有通用名字,你打字都不知道该敲什么词。或者,你想检测"画面里所有不该出现的东西",但你事先根本不知道会出现什么。文字提示在这些场景里就抓瞎了。

YOLOE 给出的答案是三种提示模式,覆盖了"你说得清""你说不清但能举例""你完全不知道"这三种处境:

提示模式你给它什么背后的模块适合的场景
文本提示一句话 / 几个词RepRTA(可重参数化区域-文本对齐)类别说得清,比如"人、车、狗"
视觉提示框一个例子图给它看SAVPE(语义激活视觉提示编码器)没法用词描述,但能举个例子
无提示什么都不给LRPC(惰性区域-提示对比)开放场景,让它自己说"这是什么"

视觉提示这一招特别戳实战痛点。你在一张图上框出那个叫不出名字的零件,模型就提取出它的视觉语义,然后去全图、乃至别的图里找"长得像的东西"。这等于把"以文搜图"换成了"以图搜图"——对于那些工业、医疗里大量"只可意会不可言传"的目标,这是救命的能力。

无提示模式则更激进:你啥也不给,它靠一个内置词表自己去判断每个区域"最像什么",直接报出名字。这背后的机制,是把"识别"这件事彻底重新定义了——不再是"从固定类别里选一个",而是把目标的视觉特征,去和文本、视觉样例、内置词表这些来源的语义做相似度匹配,谁最像就是谁。分类,被它改写成了"找最近邻"。

而 YOLOE 最让我欣赏的,是它没有为了这身花哨本事牺牲 YOLO 的命根子。它沿用了和 YOLO-World 同源的思路:这些开放词汇模块,在推理时被重参数化进主干网络。结果就是——当它作为一个普通的封闭集 YOLO 来跑时,FLOPs 和速度和原版几乎一模一样,多模态的能力没有带来额外的推理开销。鱼和熊掌,它真的想都要。

一句话记住三种模式
文本提示,是你告诉它找什么;视觉提示,是你指给它看找什么;无提示,是它自己说看见了什么。从"我说你找"到"你自己看着办",检测器的自主性,一级级往上爬。

能力越来越强,听上去无懈可击。但任何技术,捧得越高,越要冷静看它脚下的坑。接下来我们泼点冷水。

五、它能用在哪?又有哪些坑要躲?

先说能用在哪。一旦检测器能"听懂人话",很多过去要专门训模型的活儿,现在一句提示就能起步:

但你要是以为它无所不能,那就要栽跟头了。下面这几个坑,是用之前必须知道的:

踩坑记录
第一,零样本不等于"零成本拿到高精度"。开放词汇模型在你真正在意的那个垂直场景上,精度往往打不过一个用本场景数据好好微调过的封闭集 YOLO。它的价值是"开箱即用、快速覆盖新类别",不是"精度天花板"。要冲精度,该微调还得微调。

第二,提示词是门手艺。同一个目标,你写 "person"、"a person"、"pedestrian",效果可能差一截。文本提示的效果对措辞敏感,这就是检测领域的"提示工程",得调。

第三,它对语言的理解有上限。"穿红色外套的人"这种带属性、带关系的复杂描述,能不能稳稳框对,取决于模型语义对齐的细腻程度,别默认它一定能处理好复杂逻辑。

还有一个最容易被忽略、却最该说清的误区——

常见误区
别把 YOLO-MM 和"多模态大模型做检测"混为一谈。像 GPT-4V 那类视觉语言大模型也能"看图说话"甚至定位,但它们慢、贵、难做到实时。YOLO-MM 这条路的全部信仰,是在保住实时速度的前提下引入语言能力。它要的不是最聪明,而是又快又够聪明。这两条技术路线,解决的是完全不同的问题,别拿跑分硬比。

所以怎么选?我的建议很简单:类别频繁变、要实时、能容忍精度不是最顶,YOLO-MM 是利器;类别固定、要榨干精度,老老实实用封闭集 YOLO 微调。要的是复杂场景的深度理解、又不在乎实时,那才轮到视觉语言大模型上场。工具没有高下,只有适配。

看清了它的边界,我们才好回答最后一个问题:这条路,接下来会通向哪里?

六、这条路会走向哪里?

回头看这条线,逻辑其实清清楚楚。它讲的是同一件事的层层推进:

我的判断是:"开放词汇"会从一个研究热词,变成检测器的默认出厂配置。就像今天没人会专门强调一个模型"支持彩色图像"一样,三五年后,"能不能用一句话指定要检测什么"会成为基础能力,而不是卖点。封闭集那张写死了 80 类的清单,正在变成历史。

我斗胆下两个预测,给自己设个 deadline:

预测一:到 2027 年,主流的开源检测框架(Ultralytics 这类)会把"文本/视觉提示"做成和"画框标注"同等地位的一等公民,开发者默认就能用自然语言起步一个检测任务,而不是先去标数据。其实苗头已经有了——把 YOLO26 和 YOLOE 缝合的 YOLOE-26 已经出现,开放词汇正在和最新的实时检测主干快速合流。

预测二:YOLO-MM 会成为具身智能的"标配视觉模块"。机器人要听懂"把那个杯子递给我",第一步就是把"那个杯子"从像素里框出来——又快、又能听懂人话的开放词汇检测器,正好卡在这个位置上。

半年、一年后回来看看,我说得对不对。

但比预测更重要的是此刻你能做的事。还记得开头那位做安防的朋友吗?我让他别再纠结"YOLO 能不能加颜色条件",而是去跑一遍 YOLO-World,把提示词直接写成 "person in red coat",亲眼看看结果。技术的代差,有时候就藏在你愿不愿意把那句话真的说出口

毕竟,让机器"睁开眼",我们花了几十年;而让它"听懂我们指着说话",才刚刚开始。