GeoChat : Grounded Large Vision-Language Model for Remote Sensing
是一个针对遥感场景的llm,提供支持多任务对话(对高分辨率遥感图像)。也造了个数据集。
一些思考:
文中提到的局限性:小物体和多框预测较难。小物体在图像中占比小,可能特征不足难以正确定位。模型可能倾向于预测单一框,而且多个框可能会目标重叠。
也许可以用布匹数据集,变成布匹瑕疵的问答。。。。
gpt说可以轻量化(lora 蒸馏)提升推理效率
以下是边读边记的草稿。。。。。
普通VLM是针对自然图像,遥感图像表现较差,可能出现不准确的信息或幻觉。尽管遥感视觉问答(VQA)领域取得了重大进展,但早期方案是 模型从训练数据中找到答案 相当于分类问题,就不是开放式答案生成。Geo-Chat试图将多模态指令微调扩展到遥感领域,训练一个多任务会话助手。
关于数据集的生成:遥感领域没有像自然图像领域那种现成的、成规模的多模态对话数据集,所以无法直接“instruction-tune”出一个强大的遥感多模态模型。这个是使用 Vicuna-v1.5(一个在 LLaMA 基础上构建的开源对话语言模型)来生成问答数据通过自动化流水线,把遥感图像 + 标签信息变成“图 + 问题 + 答案”形式,构造出 31.8 万条遥感图文指令数据
模型在输入中使用了空间位置表示(spatial location representations),也就是模型的输入不仅包括图像,还会提供区域的坐标信息。输出中也可以生成目标的位置坐标,以实现视觉指向(visual grounding)。
创新点:
1. 新颖的数据生成流程。利用已有的目标检测数据集来为图像生成简短描述,然后使用Vicuna-v1.5基于这些描述生成完整的对话。还结合了视觉问答(VQA)和场景分类(scene classification)任务,分别使用它们对应的数据集来扩充任务类型。最后是构建了一个大规模数据集。
2. Geo-Chat是一个lora微调LLaVA-1.5后得到的遥感领域VLM。这种方式可以避免遗忘LLaVA全模型训练中所嵌入的重要上下文知识。在llava模型中,mlp投影层已被训练用于将图像对齐到vicuna-v1.5的词嵌入空间中。
3. 建立评估机制。目前遥感领域没有成熟的vlm对话评估方法,geo-chat设计了一套标准。
相关工作:
1. 大型视觉语言模型:基本架构是,一个预训练的视觉backbone来编码视觉数据、一个大语言模型来解释用户响应和生成回应、还有一个视觉-语言跨模态连接器(例如线性投影层或者一个MLP)用于将视觉和语言信息融合。「我的问题:为什么一个“线性投影层”或一个“MLP 多层感知器”就能实现视觉语言的融合?回答:不是融合了所有语义内容本身,是起了对齐接口的作用。要解决的问题其实是,怎么把视觉模型输出的图像向量,变成语言模型能接受的词向量格式。相比线性投影,mlp用relu等可以引入非线性表达能力。这些模块本质上没有融合视觉和语言的语义内容,只是统一接口。真正的融合是由语言模型后续的transformer层完成的,它将图像和文字联合建模joint modeling,即把图像当词处理,和文本token一起送入transformer,通过self-attention在高维空间建立图文直接的语义连接。」
遥感领域的VLM应用相对较少。目前还停留在单任务、非对话阶段,geo-chat实现了多任务统一处理+多轮对话+区域推理+目标指向。
geo-chat支持的三类任务:
a) 图像级对话任务(Image-Level Conversation Tasks)
- 输入:图像
x
+ 用户文本问题q
- 没有提供图像中具体的区域或位置(即不涉及坐标)
- 目标:基于整张图进行对话任务,比如:
- 图像级问答(Image-level VQA)
- 场景分类(Scene classification)
- 图像描述(Image captioning)
b) 区域级对话任务(Region-Level Conversation Tasks)
- 输入:图像
x
+ 用户问题q
+ 区域框b
(如一个 bounding box) - 区域
b
引导模型将注意力集中在图像中的某个区域 - 任务包括:
- 区域描述(Region-level captioning)
- 区域问答(Region-specific VQA)
- 区域多轮对话(Multi-turn conversation about a region)
c) 视觉指向对话任务(Grounded Conversation Tasks)
- 使用任务标记(task-specification token)
t
来告诉模型:“现在我要你给出目标位置” - 模型输出中包含视觉定位信息(如坐标框)
- 支持以下任务:
- 带视觉指向的图像描述/对话(grounded captioning/conversation)
- 目标定位(object grounding)
- 指代表达检测(referring expression detection)
→ 例如用户说:“图中那辆红色的卡车在哪?”模型能标出其位置
「问题:什么是任务标记t? 回答:这类 token 被称为 “任务提示标记”(task-specification token / prompt token),它的本质是:一种特殊的字符串,告诉模型该执行哪种任务,而不是靠代码硬编码任务类型。
」
模型结构:
总架构:geo-chat遵循了llava-v1.5的设计,主要包括三个核心组件:全局图像编码器、mlp适配器(两个线性层)、大语言模型。「问题:什么是全局图像编码器?回答:就是把输入图像(通常是高维像素矩阵)编码成一组高层语义特征向量,供语言模型使用,之所以叫全局图像编码器,是因为它不是只看图像的一部分(像检测模型那样划窗),而是对整张图像进行统一编码。虽然是图像切成patch,但是所有patch一起送入transformer,每个patch的表示都会注意其他patch的信息(通过self-attention)」与llava不同的是,geo-chat中有特定任务提示(task prompt)
task token:三种不同的任务标识符,t ∈ {grounding, identify, refer}, each for grounded conversations, region captioning and referring expression comprehension.指向对话、区域描述、指代表达理解。至于 视觉问答(VQA) 和 场景分类(scene classification),我们直接要求模型输出一个单词或短语作为答案
空间位置表示:采用文本格式表示目标框的位置,以表达目标的地理位置:
b = {bx_left, by_top, bx_right, by_bottom | θ}
数值范围:x 和 y 坐标的数值都在区间 [0, 100] 内进行归一化表示。区域位置以这种格式表示后,可以在模型的输入和输出中使用,帮助模型准确地与图像中的区域进行交互。
visual backbone:采用clip-vit的预训练backbone。原始clip-vit的输入分辨率为336*336,这样每张图片被分割成576个patch。这个分辨率细节有点不够,因此我们对 CLIP 模型中基于 Transformer 的 位置编码(positional encoding)进行了插值处理,以适应 504×504的输入图像大小。这种处理方式,让patch数变成1296,但增强后可以处理更大的图像、支持更好的高分辨率遥感图像中的视觉指向。
mlp跨模态适配器:对于 504×504 分辨率的图像(如 GeoChat 中所使用的图像),CLIP-ViT 会将图像编码成 1296 个 patch,每个 patch 都是 1024 维的向量,总输出为 R1296×1024。经过mlp适配器之后,变成R1296*4096,和语言模型对接。激活函数是GeLU。
大语言模型:使用开源的vicuna-1.5(7b)作为基础,是框架中各种语言-视觉输入的统一接口。采用lora微调,确保了更快速的训练,避免遗忘llm中原有的知识。
训练细节:
采用预训练的clip-vit编码器,预训练的mlp适配器(该适配器是在 LAION-CC-SBU 数据集的 558K 子集上(使用 BLIP描述)进行训练的),和vicuna- v1.5初始化我们的模型。编码器和mlp适配器都是冻结的,训练时对vicuna-v1.5进行lora。「Q:什么是blip描述?A:bootstrapping language-image pretraining 是一种图像描述生成模型,能够自动生成与图像内容相关的文本描述」
遥感多模态指令数据集
通过使用llm vicuna,喂很多指令跟随的数据(instruction-following data)我们让模型能接受很多指令。使用vicuna模型生成指令-响应对,少样本学习:在提示中提供一些手动编写的示例来帮助vicuna学会如何构建高质量的指令-响应对。
数据集的组成:整合了三种不同类型的数据集,涵盖了目标检测、场景分类和视觉问答。目标检测数据集提供了区域推理能力,因为其提供了边界框和分割掩码。
缺失类别的补充:虽然目标检测数据库中包含了大量物体类别,但仍然缺少一些重要的类别,如建筑物、道路和树木。vitae-rvsa模型通过loveDA数据集,预先学习了遥感中的一些重要类别,然后这个模型应用到samrs数据集上,预测samrs中没有的类别(比如建筑物 道路 树木等),伪标签用来填补数据集中的空白。
属性提取:提取物体的类别、颜色、相对大小等。还有图像中物体间的关系,比如surround by之类的
表达生成:基于一个预定义文本模版,包括表格中的5个属性
视觉定位:尽管在自然图像领域已经有大量的referring expression数据集,遥感领域还是缺乏类似的标注数据集。 referring expression是用自然语言描述图像中物体或区域的语言表达(例如“左上角的红色房屋”)。三种类型的问答对:定位图像描述(grounding image descriptions)参考表达式(referring expression)区域集标注(region level captioning)
实验
实现细节:用预训练的clip-vit来初始化模型权重,同时llm(vicuna-v1.5)也作为基础模型,采用lora微调。lora适配过程中,主要优化Wq和Wv即查询权重矩阵和值权重矩阵。lora设定的rank为64。优化器AdamW,学习率Cosine Learning Rate Scheduler,批量大小144。训练策略是两阶段,第一阶段所有数据集训练一个epoch(2400个steps),第二阶段仅使用grounding数据集继续训练1600个steps,以增强模型在目标定位任务上的表现。
场景分类任务中,用AID(其20%作为测试集)和UCMerced(用于零样本zero-shot测试)两个数据集来评估,
结果:GeoChat 的表现:UCMerced 数据集:GeoChat 取得了 84.43% 的准确率。AID 数据集:GeoChat 取得了 72.03% 的准确率。
视觉问答任务中,用RSVQA-HRBEN 和 RSVQA-LR 两个数据集。问题类型有:presence存在性(询问某个物体是否出现在图中)、comparison比较(比较两个或多个对象的属性)和count计数(询问图像中物体的数量)还有rural/urban(城乡分类)
视觉定位任务中:提出了新benchmark。grounding description任务是要求生成文本描述,同时预测多个目标的边界框,用iou作为指标。region-level captioning区域级描述任务,评测指标:rouge(召回导向的摘要评测)和meteor(基于词形匹配的文本相似性评测)
一些难点:小物体和需要预测多个边界框的任务,模型整体性能较低。
结论
大语言模型在自然图像领域取得了显著进展,但是在遥感场景表现受限。所以提出了Geo-Chat,首个统一的遥感vlm。能够在高分辨率remote sensing图像上,多任务对话。回答图像级别查询,进行区域特定对话,返回精确坐标。还构建了新的遥感多模态指令跟随数据集,采用多任务格式来涵盖各种任务。