GiT: Towards Generalist Vision Transformer through Universal Language Interface¶
会议: ECCV 2024
arXiv: 2403.09394
代码: https://github.com/Haiyang-W/GiT
领域: 语义分割 / 多任务视觉建模
关键词: generalist vision model, universal language interface, multi-task learning, ViT, auto-regressive
一句话总结¶
提出 GiT 框架,通过通用语言接口将图像描述、目标检测、实例分割、语义分割和视觉定位五大视觉任务统一为自回归序列生成,仅用纯 ViT(无任何任务特定模块)实现多任务联合训练,且任务间互相增强。
研究背景与动机¶
领域现状:LLM 已经证明多层 Transformer 架构(如 GPT)可以用简单的堆叠处理各种任务。视觉领域试图复制这一成功,但一直受限于任务特定模块(检测头、像素解码器等)。
现有痛点:LLaVA、Unified-IO、OFA 等统一模型仍保留了视觉编码器、RPN、感知头等特定组件;这些模块导致多阶段训练流程复杂、模型扩展困难;且它们主要聚焦图像级视觉-语言任务,忽略了检测和分割等经典感知。
核心矛盾:视觉任务输出格式差异巨大——检测输出可变数量的框、分割输出二值掩码、描述生成文本,难以用单一模型同时处理。密集预测的序列长度又使自回归解码计算量爆炸。
本文目标:设计一个架构极简的通用视觉模型,不用任何视觉专用模块(除 patch 投影),用纯多层 Transformer 处理从图像级到像素级的所有任务。
切入角度:所有视觉任务的目标都转化为语言 token 序列,利用标准词表而非额外 token;通过网格采样把密集预测拆解为 N 个并行子过程,解决像素级自回归的效率问题。
核心 idea:用通用语言接口 + 并行网格解码,让纯 ViT 完成从描述到分割的全任务统一建模。
方法详解¶
整体框架¶
GiT 的架构极度简洁:一个 window-based ViT(与 SAM 使用的相同结构)作为共享骨干,加上文本 embedding 和 out-of-vocabulary 压缩模块。没有 RPN、没有像素解码器、没有 FPN。共享参数占整体 >98%。输入由图像 patch、指令文本、N 个网格点的局部特征和任务标识符组成。图像部分用双向自注意力(类似编码器),局部预测部分用单向因果注意力(类似解码器),但共用同一组 Transformer 层。
关键设计¶
-
统一输入输出表示 (Unified Representation)
- 功能:将所有模态(图像、文本、边界框、掩码)映射到统一 token 空间
- 核心思路:文本用 WordPiece 分词(~30K 词表);多片段概念(如 "traffic light")通过单层注意力压缩成单个 out-of-vocabulary token:\(\mathcal{F}_{\text{traffic light}} = \text{Attention}(\text{TE}(\mathcal{I}_0)+\text{PE}(0), \text{TE}(\mathcal{I}_1)+\text{PE}(1))\);稀疏目标(框、多边形)表示为 \((C, P=\{x_i,y_i\}_{i=1}^N)\);密集标签按栅格顺序展平为 1D 序列
- 设计动机:避免扩展词表引入额外 token,简化后处理;统一表示使所有任务可共用同一个自回归损失
-
多任务模板与并行解码 (Multi-Task Template with Parallel Decoding)
- 功能:将不同粒度的视觉任务嵌入统一的指令模板,并通过网格采样并行处理
- 核心思路:模板定义为 \(\langle\text{Image}\rangle\langle\text{Instruction}\rangle + N \times [\langle\text{LocalFeature}_i\rangle\langle\text{Task}_i\rangle:\langle\text{Response}_i\rangle]\)。图像级任务 \(N=1\);目标检测 \(N=625\)(25×25 网格);语义分割 \(N=1764\)(42×42 网格)。每个网格点的局部特征通过双线性插值获得,各子过程独立并行解码
- 设计动机:直接对全图做像素级自回归序列太长(672×672 有 45 万像素),拆成 1764 个子过程每个只需 16 步解码,大幅降低计算量。同时网格并行避免了非并行解码的效率瓶颈
-
Out-of-Vocabulary 压缩模块
- 功能:将类别名(如 "traffic light")、坐标值等多 token 概念压缩为单个 token
- 核心思路:将多片段文本先用标准分词器生成子词索引,再用单层注意力融合为一个特征向量,取首个输出作为压缩表示
- 设计动机:避免引入分隔符带来的序列膨胀,避免多 token 变长输出导致的复杂后处理
-
注意力掩码策略
- 功能:在同一组 Transformer 层内实现编码器和解码器的双重功能
- 核心思路:图像 patch 和 instruction 之间使用双向注意力(含 image-to-text 注意力);局部特征和目标预测使用因果单向注意力。不同网格子过程的 patch token 在窗口注意力中只与同窗口内的网格点交互
- 设计动机:保持架构纯粹性(不需要单独的编码器/解码器结构),同时让 image-to-text 注意力增强文本条件化能力
损失函数 / 训练策略¶
- 损失函数:所有任务统一使用标准 CrossEntropy 损失做 next-token prediction,仅在词表上做动态控制——每个任务在训练和推理时使用对应的任务特定词表子集
- 多任务采样:5 个任务均匀采样(各 1/5),与数据量大小无关,防止小数据集被淹没;任务内部按域(日常、室内、户外)平衡,域内按数据量比例采样
- 模型规模:Base(131M) / Large(387M) / Huge(756M),初始层继承 SAM 预训练参数
- 联合训练:27 个公开数据集(17M 样本),不做任务特定微调
实验关键数据¶
主实验(Multi-task Generalist)¶
| 任务 | 指标 | GiT-Huge (multi) | 单任务训练 | 多任务提升 |
|---|---|---|---|---|
| 目标检测 (COCO) | AP | 45.1 | 43.5 | +1.6 |
| 实例分割 (COCO) | AP₅₀ | 54.2 | 52.6 | +1.6 |
| 语义分割 (ADE20K) | mIoU | 47.7 | 47.6 | +0.1 |
| 图像描述 (COCO) | CIDEr | 133.0 | 128.3 | +4.7 |
| 视觉定位 (RefCOCO) | Acc@0.5 | 82.4 | 79.9 | +2.5 |
与其他通用模型对比¶
| 方法 | 特定模块数 | Det AP | InsSeg AP | SemSeg mIoU | Caption CIDEr | Grounding Acc |
|---|---|---|---|---|---|---|
| Pix2Seq v2 | 2 | 46.5 | 38.2 | - | - | - |
| VisionLLM | 6 | 44.8 | - | - | - | - |
| Uni-Perceiver v2 | 5 | 42.0/52.0† | - | - | - | - |
| GiT-Huge | 0 | 45.1 | 42.6 | 47.7 | 133.0 | 82.4 |
消融实验¶
| 配置 | 检测 AP | 描述 CIDEr | 说明 |
|---|---|---|---|
| 无 image-to-text 注意力 | 44.3 | 130.2 | 移除文本条件化 |
| 有 image-to-text 注意力 | 45.1 | 133.0 | 默认设置 |
| 单任务训练 | 43.5 | 128.3 | 无跨任务增强 |
| 多任务联合训练 | 45.1 | 133.0 | 任务互增强 |
关键发现¶
- 多任务联合训练带来的增益在所有任务上都为正值,证实了类似 LLM 的多任务互增强效应
- 不同类型的能力(图像理解、定位、分割、语言)可以在共享参数中协同学习
- 27 数据集联合训练使 GiT 在未见数据上展现出强 zero-shot 和 few-shot 迁移能力
- 架构简洁性(>98% 共享参数)使模型扩展极为直接
亮点与洞察¶
- 极简架构首次覆盖全视觉任务:GiT 是第一个无任何视觉专用模块即可同时支持检测、分割(实例+语义)、描述、定位的通用模型,证明了纯多层 Transformer 在视觉的可行性。
- 并行网格解码是关键瓶颈突破:把密集预测拆成上千个独立子过程并行解码,既保持了自回归语言接口的统一性,又解决了像素级序列过长的效率问题,这一设计颇具工程优雅。
- 多任务互增强模式在视觉中首次系统验证:检测+描述共享定位能力后分别提升 1.6AP 和 4.7CIDEr,反映了视觉与语言能力的底层共性。
局限与展望¶
- 语义分割的 mIoU (47.7) 与专用模型 Mask2Former (47.2) 差距不大但也没有显著优势,密集预测任务的多任务增益相对有限 (+0.1)
- 目前仅处理 2D 视觉任务,3D 感知、视频理解等方向尚未覆盖
- 多边形表示的实例分割(polygon-based)与主流 mask-based 方法差异较大,限制了直接对比
相关工作与启发¶
- vs VisionLLM: VisionLLM 需要 6 个特定模块且分多阶段训练,GiT 用 0 个特定模块、一阶段联合训练
- vs Pix2Seq v2: Pix2Seq v2 不支持语义分割,且使用非并行解码效率低;GiT 覆盖更全且并行
- vs LLaVA: LLaVA 需要外部视觉编码器+LLM两阶段,且不支持检测分割;GiT 端到端更简洁
评分¶
- 新颖性: ⭐⭐⭐⭐ 纯ViT统一全视觉任务的简洁设计令人眼前一亮,并行网格解码很有创意
- 实验充分度: ⭐⭐⭐⭐ 5任务27数据集全面评估,消融充分,zero-shot验证完整
- 写作质量: ⭐⭐⭐⭐ 框架描述清晰,表格信息量大
- 价值: ⭐⭐⭐⭐ 缩小视觉与语言架构差距的重要探索,对通用视觉基础模型有启发意义