change-agent论文精读

一些思考:

之前看的RSUniVLM也是cd和llm结合,是把mask全部用自然语言去描述。这篇change-agent是,llm去做指令理解和工具调用,llm去写 实现cd的脚本。


摘要:遥感影像变化解释(RSICI: rs image change interpretation)。当前rsici技术,涵盖了变化检测和变化描述两个方向,但这些技术都有局限性。所以我们提出了了一个交互式的change-agent,可以根据用户指令来实现全面变化解释与深入分析,例如变化检测、变化描述、变化目标计数、变化原因分析等。change-agent集成了一个多层次变化解释(mci:multi-level change interpretation)模型作为眼睛,llm作为大脑。mci模型包含两个分支:像素级变化检测和语义级变化描述,其中提出了 bi3 层(BI-temporal interative interaction双时态迭代交互层)以增强模型的判别性特征表达能力。为了支持mci模型的训练,我们构建了levir-mci数据集,其中包含大量change masks和captions of changes。

引言:rsici的两大方向是变化检测和变化描述。变化检测能准确找到变化的位置,但缺乏对变化本质的理解,比如 出现了消失了等;变化描述能提供丰富的语义信息,但在精确定位变化位置上表现较差。因此迫切需要一种多层次变化解释方法mci,既提供像素级定位信息,又能深入挖掘变化的本质和意义。为了应对这些挑战,本文提出的交互式change-agent系统,结合了一个新颖的mci模型和一个llm。近年来llms如chatgpt和llama等也有巨大进步,为llm based change-agent提供了坚实基础。

相关工作:rs变化检测和变化描述。

levir-mci数据集构建:同时包含图片、像素级变化信息(mask)、语义级变化解释(描述性句子)。包含10077对双时态图像,256*256像素,空间分辨率为 0.5米/像素,并配有:一个变化检测掩膜;5 条不同角度的变化描述句子。

方法

mci多层次变化解释模型对结构:siamese骨干网络提取多尺度特征,双分支架构。

bi3层 双时态迭代交互层:为了融合两个时间点的图像特征,引入了bi3层,由两部分组成:lpe模块(local perception enhancement局部感知增强,结构为多尺度卷积+残差连接)和gdfa模块(global difference fusion attention全局差异融合注意力)「小知识:lpe中,3*3感受野是正方形窗口 5*1和1*5是横向和纵向长条窗口,感知水平和竖直边缘。concat将三种特征拼接成一个大的特征图。conv1*1把拼接后的多通道特征压缩回原通道数。bn提升训练稳定性,relu引入非线性能力。gdfa中,Di * Xlp1用差值引导图像1的注意区域,告诉模型应该专注哪里。」

变化检测分支:四组多尺度特征,最底层用bi3层增强「在最深层 /32 这一层,经过多个 BI³ 层进行特征增强。/32 的特征已经经过多次卷积、池化或步长处理,精读低,但感受野更大,能看到更大上下文。」,cbf模块用于融合双时态特征「cbf中有个s是变化图+相似图,用来抑制那些差异不大的区域,帮助模型聚焦真正的变化。举例:假设一处建筑从T1→T2建起来,Xs_T2 - Xs_T1很大,变化图能捕捉到;但有些小亮度变化或阴影变化,也会造成差值,但cos会告诉模型“这些其实没变”。所以这两个信息是互补的。」,再逐步deconv+融合,最后经过 DeConv & Conv「DeConv(反卷积):用来“放大特征图”,把低分辨率的特征图恢复成更高分辨率;相当于“上采样”,逐步恢复空间结构(类似 UNet 的 decoder)。Conv(普通卷积):用来生成掩膜,最后一层使用 Conv1×1 或 Conv3×3 将上采样后的特征图投影到最终的输出空间」 得到变化掩膜 Mask。

变化描述分支:先经过多层bi3层(输入t1和t2的/32特征图,输出增强后的双时相语义特征),经过projection layer(从视觉到语言的映射),再经过decoder,就会输出文字。「在decoder中,embedding是q,projection后的图像特征是k和v。所以模型在生成每个词时,会用前面词的embedding去注意力查询图像里的语义特征,进而决定下一个词该输出什么。」

llm:作为agent controller实现自动任务调度。给llm配了一套python工具链,包括visual backbone、cd branch、cc branch和常用库等。llm基于用户指令,自动生成python代码,调用这些模块完成任务,代码会被一个python解释器执行,执行结果返回给llm,再由它整理成用户可以理解的答案。相当于让llm去“写程序+执行程序”,补足它不能处理图像的短板。

实验

a 多任务训练的目标函数

训练阶段,mci模型同时学习两项任务:变化检测和变化描述。对于变化检测,使用 交叉熵损失 来衡量预测的变化掩膜和真实掩膜之间的差异。对于变化描述,使用 序列级的交叉熵损失,比较每个预测词和真实句子。为了让两种任务的损失处于同一数量级,论文采用了归一化策略,使两项任务在总损失中“权重平衡”。

b 评价指标

变化检测指标:使用 MIoU(Mean Intersection over Union)衡量预测掩膜与真实掩膜的重叠程度。

变化描述指标:来自图像描述领域,BLEU-n(n-gram 精确度)METEOR(词级匹配+语言流畅度)ROUGE-L(最长公共子序列)CIDEr-D(基于 TF-IDF 的句子相似度)。

c 实验细节

框架:PyTorch,4090 显卡。优化器:Adam,学习率 1e-4。训练:200 轮,embedding 维度 512。Backbone:共享权重的 Siamese SegFormerB1。每个分支有 3 个 BI³ 层。

训练策略:先训练 backbone,直到 BLEU-4 + MIoU 不再上升 50 轮;然后冻结 backbone,训练两个分支(变化检测 + 变化描述)。

d mci多层级变化解释性能

我们模型在两个任务上都取得了最佳结果。这说明 多任务建模不仅能“两个都做”,还比单独做得更好,表明两任务之间存在互补性。

e 消融实验

讨论与未来展望

本研究提出了 LEVIR-MCI 数据集,为多任务学习和探索变化检测与变化描述之间的关系奠定了坚实的数据基础。同时,我们提出的 Change-Agent 为遥感图像的变化理解开辟了新路径,也带来了新的思维范式。

1. 多任务学习 训练时两个任务的loss不同,难以对齐,容易互相干扰。后续可以尝试更智能的共享策略,例如使用任务注意力、动态加权、解耦训练等。

2. 智能体调度机制 目前输入给llm的system prompt是人工设计的,未来可以引入prompt自动优化(如rlhf autoprompt cot教学等)

3. 工具拓展 当前工具链只有检测、描述、计数,未来可以引入分割模型等。

4. 多智能体系统 引入多个具有不同能力的智能体,并鼓励它们协同工作,有助于实现更灵活、智能的遥感图像处理系统。

结论:Change-Agent 实现了从图像对输入 → 掩膜 + 文字描述输出 → 用户对话 → 自动分析的完整闭环,为遥感领域提供了一个具备“看图能力 + 语言交互 + 自主决策”的 AI 系统。

### change-case 插件使用指南 #### 安装方法 对于 `change-case` 插件,在 JavaScript 或 Node.js 项目中的安装可以通过 npm 来完成。执行如下命令来安装该库: ```bash npm install change-case --save-dev ``` 这一步骤确保了插件被加入到了项目的开发依赖中[^1]。 #### 使用说明 `change-case` 提供了一系列用于转换字符串大小写的方法,适用于多种场景下的命名规范调整。例如,可以轻松实现 camelCase, snake_case, param-case 等之间的相互转换。 在代码里引入此模块的方式取决于所使用的环境。如果是 CommonJS 模块系统,则采用 require 方式加载;而对于 ES6 模块语法,则推荐 import 语句。 ##### CommonJS (Node.js) ```javascript const changeCase = require('change-case'); console.log(changeCase.camel('hello world')); // 输出: helloWorld ``` ##### ES Modules (现代浏览器/TypeScript) ```javascript import * as changeCase from 'change-case'; console.log(changeCase.snake('hello world')); // 输出: hello_world ``` #### 示例应用 假设有一个需求是要将一组单词组成的短语按照不同的编码风格重新格式化输出。下面给出了一段简单的例子展示如何利用 `change-case` 实现这一功能。 ```javascript // 假设输入是一个由空格分隔的词语列表 let phrase = "first name"; // 转换成驼峰样式 let resultCamel = changeCase.camel(phrase); console.log(resultCamel); // firstName // 转换成蛇形样式 let resultSnake = changeCase.snake(phrase); console.log(resultSnake); // first_name ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值