论文:《Groma: Localized Visual Tokenization for Grounding Multimodal Large Language Models》
https://arxiv.org/abs/2404.13013
Github:
https://groma-mllm.github.io/
纯手打,非机翻
keypoints
跟kosmos-2类似的用离散的token代表位置的做法。
不同的是:用了一个region proposer(就是一个检测头),做ROI的预提取,对每个ROI分配一个token,然后将这些ROI的token输入
用GPT4V构造了一个定位指令数据集。
没有在POPE、OCR等通用MLLM基准上和别人battle,可能通用能力一般。
精读
1. background&motivation
- MLLM虽然在caption、视觉问答等任务上表现非常不错,但还是缺乏对视觉上下文的定位理解能力,这种能力又很重要,例如在机器人、自动驾驶等方面的应用;
- 一些工作尝试增强LLM直接输出bbox的能力,但有局限:一是LLM计算量大,难以处理高分辨率图像,二是LLM的序列输出特性不适合密集检测场景。
- 另外一些工作引入额外的解码器(例如SAM)解码出边界框,但这样不是端到端,延迟高。
- 所以作者要探索新的用用于MLLM 定位任务的范式,作者受OVD(开放集目标检测)启发,将任务分为两部分:发现对象(localization)和文本关联(recognition)。localization需要很少的语义理解,但需要感知能力,这通常超出了MLLM能力范围。这启发我们在mlm中解耦定位和识别。但作者并没有引入其他模块,而是用visual tokenizer实现这部分能力。这种先感知后理解的设计也类似于人类的视觉过程。
- 基于以上,作者提出了Groma1 (Grounded MultimodalAssistant),具有定位和细粒度视觉感知能力的MLLM。具体实现是:将区域分词器(region tokenization)和通用图像分词器(standard image tokenization)融合起来,通用图像分词器识别和编码潜在的ROIs。在这一流程中,位置信息从图像中提取出来后关联到region tokens,每个region tokens都锚定了一个潜在的ROI。这使得Groma能够通过简单地参考区域标记来确立其文本输出,从而减轻了LLM对精细回归物体坐标的需要。此外,Groma的分词器还能够将用户指定的区域输入(即边界框)编码为区域tokens,这些tokens直接插入用户指令中,以初始化referential对话。
- 通过将定位任务放在分词阶段,节省了LLM的计算开销,且支持高分辨率图像输入。
- 数据角度,使用大量带有region-level标注的数据进行训练,还构建了一个定位指令微调数据集Groma Instruct
- 实验主要是referring and grounding benchmarks
2. related work
除了介绍那些经典的MLLM,还介绍了Region-level MLLMs.也就是一些专注grounding和细粒度理解的MLLM,例如kosmos-2、shikra、LLaVA-Ground等。上一章节已经介绍过了。
3.method
3.1 Model Architecture
主要四部分:
Image Encoder.
用的DINOv2 448*448。作者认为和CLIP相比,DINO能处理更高的分辨率,粒度更细,更适合定位任务。DINOv2 输出的token太多需要压缩,作者仿照MiniGPT-v2,将四个相邻的patch拼接成一个,稍有不同的是,MiniGPT-v2在一维拼接,本文在两个维度进行拼接,这是经验得到的,效果更好。
Region Proposer
插在分词这一步骤里,用Deformable DETR (DDETR) transformer实现的一个和类别无关的检测头,DDETR原本的分类头被替换成了一个二分类器,用于根据区域提议的质量对其进行评分。
受ViTDet的启发,系统从图像编码器的最后四层提取特征图。这些特征图被重新缩放以构建一个层次化的特征金字塔(hierarchical feature pyramid),作为区域提议器的输入。
对于每一张图像,区域提议器生成300个区域提议(region proposals)。这些提议经过非极大值抑制(Non-Maximum Suppression, NMS)和对象性分数(objectness scores)过滤后,再送入区域编码器(region encoder)。
Region Encoder
区域提议可以来源于用户的直接输入或是由区域提议器生成的建议区域。这些提议通常是一些边界框(bounding boxes),它们指定了图像中感兴趣的区域。
类似于之前的步骤,从图像编码器的最后三层选择特征图来构建一个层次化的特征金字塔(hierarchical feature pyramid)。
使用类似于文献[42, 63]中实现的多尺度ROIAlign模块来裁剪并融合这些层次化的特征,从而形成统一的区域tokens。ROIAlign是一种用于目标检测的技术,它允许从任意大小和位置的区域中提取固定大小的特征映射,同时保持空间精度。
相比于其他表示区域输入的方法,如位置的数值表示或离散的位置标记,区域标记具有语义对齐的优点。因此,区域标记更直观且更容易被语言模型理解,这有助于提高模型在处理图像区域信息时的表现。
LLM
这里没什么contribute,用的Vicuna-7B,映射层用的MLP。
3.2 Input and Output Formatting
用离散的token表示图中的位置,不管是在输入还是输出中。这样,LLM只需要参考关联的region token,就能做文本对应的区域的定位。
Grounding Output
在tokenization阶段,每个region token都锚定了一个具体的位置,也就是其代表的区域。为了将这些区域token加入LLM的词表,做了离散化处理,也就是引入了一堆“proxy tokens”来注册每个region token。然后在回答时只需要用这种token来代表特定区域:
和
标记被定位的短语。和用于包住引用的区域的proxy token。此外,使用一个特殊的令牌[grounding]来通知模型生成接地响应。Referring Input
对于用户提问中指出的区域,同样用proxy tokens来代表,并视为同样是region proposer的输出: