EP16铺垫:YOLOS 与 DETR——检测的 Transformer 化
GLIP 的检测骨干建立在「检测 Transformer」这条技术线上,课程先花一整集讲清两位先驱。
DETR(2020)——端到端检测开山
- 流程:CNN 提特征 → Transformer 编码器全局建模 → 解码器用固定数量 object query 并行「询问」目标位置 → 输出框 + 类别
- 抛弃锚框:object query 是可学习的位置查询向量,不再依赖人工先验框
- 抛弃 NMS:匈牙利匹配(二分图最优分配)实现预测与真值一对一配对,从根上消除重复框
- 代价:收敛慢(需数百 epoch)、小目标检测偏弱
YOLOS(2021)——裸 ViT 做检测
- 做法:拿分类预训练的裸 ViT,几乎不改架构,只追加少量可学习 [DET] token 即完成检测
- 意义:证明检测能力可从纯序列建模中「涌现」,无需 CNN 归纳偏置与检测专用组件
- 呼应 ViT 模块:把「Transformer 通用性」从分类推进到定位任务
结论:检测器已经 Transformer 化,但仍活在封闭世界——类别表固定(如 COCO 80 类),换任务就要改分类头重训练。这正是 GLIP 要打破的天花板。
EP17核心:GLIP 原理——检测即短语定位
GLIP(Grounded Language-Image Pre-training)的一句话思想:把目标检测重构为短语定位(phrase grounding)。输入图像 + 文本提示(如 cat . dog . person .),输出每个短语对应的目标框。分类头被替换为「区域特征 × 词特征」的相似度——检测的类别表从此变成任意自然语言。
「黑色的猫 . 沙发 .」→ BERT 编码为词级特征
视觉↔文本 双向更新
CLIP 仅末端点积(late fusion);GLIP 在对象级做深度融合,「红色」一词会实时增强红色区域权重
预训练数据配方(27M)
- 3M 人工标注:Flickr30K Entities、Objects365 等检测 / 定位数据(框-短语天然对应)
- 24M 网络图文对:无框标注,用自训练方式让先训出的模型给 Caption 中的名词短语「打伪框」,过滤低置信度后回炉训练——把 CLIP 式图文对齐从图像级下沉到对象级
- 效果:GLIP-L 零样本 COCO 检测 49.8 AP,超过有监督基线;在 13 个非常规目标数据集上平均超越有监督方法
EP18拆解:GLIP 损失函数
训练目标是「分类与定位统一」的联合损失,这是 GLIP 能同时吃下检测数据与图文对数据的关键。
精妙之处:分类损失不再是「从固定类别表里挑一个」,而是「在提示文本里找对词」——同一个损失函数既适用于人工标注检测数据,也适用于图文对数据(Caption 名词短语即免费的类别词),这正是 27M 混合预训练得以成立的原因。
EP19收官:GLIP vs YOLOv / DETR / YOLOS
| 维度 | YOLOv 系列 | DETR | YOLOS | GLIP |
|---|---|---|---|---|
| 骨干 | CNN | CNN + Transformer | 裸 ViT | DyHead + BERT 跨模态 |
| 类别系统 | 固定 | 固定 | 固定 | 开放词汇 |
| 输入 | 仅图像 | 仅图像 | 仅图像 | 图像 + 文本提示 |
| 后处理 | NMS | 无(匈牙利匹配) | 无 | 无 |
| 新类别迁移 | 需重训 | 需重训 | 需重训 | 改提示词即可,零样本 |
| 代表意义 | CNN 实时检测巅峰 | 端到端检测开山 | 架构通用性证明 | 检测范式革新 |
从 YOLOv 到 DETR / YOLOS 是架构层演进(CNN → Transformer、手工组件 → 端到端),从它们到 GLIP 是范式层跃迁(封闭类别 → 开放词汇、视觉独奏 → 语言引导)。
脉络在课程主线中的位置
Grounded-SAM:GLIP + SAM 的黄金组合
GLIP 负责「用语言指定目标并出框」→ SAM 负责「沿框精细分割」。二者级联即成当前最流行的开源开放词汇分割流水线之一,也为后续 Stable Diffusion 局部重绘(需先定位/分割)埋下伏笔。