MMO-IG:用于遥感的多类别、多尺度目标图像生成
什么是多类别多尺度目标图像(MMO):
在遥感图像领域,多类别多尺度目标图像(含多类别多尺度目标 MMOs 的图像) 指的是图像中同时包含多种不同类型的目标 ,且这些目标在尺寸规模上存在显著差异,同时需符合遥感场景下目标的空间分布特性,是遥感图像目标检测(RSIOD)任务的核心研究对象之一。
- 多类别:指图像中涵盖两种及以上不同类别的遥感目标。例如论文中提到的 DIOR 数据集,就包含飞机(Airplane)、船舶(Ship)、车辆(Vehicle)、港口(Harbor)、网球场(Tennis court)等 20 类典型遥感目标,这些不同类型的目标会同时出现在同一幅遥感图像中,构成 "多类别" 特征。
- 多尺度:指图像中不同类别(或同类)目标的尺寸跨度极大,且受遥感图像空间分辨率(文档中 DIOR 数据集分辨率范围为 0.5-30 米)影响,目标在图像中的像素大小差异显著。例如,同一幅图像中可能同时存在 "小尺度目标"(如尺寸仅几十像素的车辆)和 "大尺度目标"(如占据数百像素的机场、桥梁),甚至同类目标也会因拍摄距离、分辨率不同呈现不同尺度(如近距离拍摄的小型船舶与远距离拍摄的大型船舶)
这类图像对遥感目标检测算法的挑战在于:需同时处理 "类别多样性"(区分不同类型目标)和 "尺度差异性"(兼顾大小目标的检测精度),而文档提出的 MMO-IG 模型核心目标之一,就是生成这类含高质量标注的图像,以缓解 RSIOD 领域的数据稀缺问题

什么是空间交叉依赖知识图谱SCDKG
是论文提出的用于建模多类别多尺度目标(MMOs)间复杂空间关系与依赖规律的核心组件,其核心目标是确保生成的遥感图像中,++目标的空间分布、类别共现及几何特征符合真实遥感场景规律++,解决现有模型无法捕捉目标间复杂网络依赖的局限。(有点像我们前面学到的生成图像的地物关系的空间关系和语义关系)
SCDKG 通过两个关键模块,实现对目标依赖与空间属性的精准建模:
-
**依赖概率矩阵(pid 矩阵)**以 "目标类别" 为节点,"类别间依赖概率" 为有向边,构建双向依赖图。例如,从 "船舶" 节点指向 "港口" 节点的边,其权重(pid 值)代表 "港口附近出现船舶" 的概率(该值远高于 "飞机与港口" 的 pid 值)。通过该矩阵,模型可在生成目标时,依据已有目标类别动态采样后续合理类别,避免出现 "飞机出现在海面" 这类违背场景逻辑的错误。
-
**空间几何特征概率密度函数(Psgc)**针对每个目标类别,单独建模其 "真实空间几何属性" 的概率分布,包括三大维度:
- 位置:通过二维概率函数拟合目标中心坐标(如车辆多分布在道路区域,船舶集中在海面);
- 尺度:通过一维概率函数建模目标长度(如小型车辆与大型货车的尺度差异);
- 宽高比:通过概率函数约束目标形状(如飞机的 "长>宽" 比例、网球场的 "矩形规整性")。这一模块确保生成的目标不仅类别依赖合理,其自身几何特征也符合真实物体规律,避免出现 "宽高比失调的船舶""尺度异常的机场" 等问题
什么是等间距实例图(ISIM)
在 MMO-IG 模型中,等间距实例图(ISIM)是一种用于精准控制遥感图像生成的核心控制信号 ,其本质是通过 "等间距灰度值编码"?? 的方式,将多类别多尺度目标(MMOs)的 "++类别、位置、尺度" 三大关键信息整合++ 到一幅灰度图??中,让模型能同时识别并生成符合要求的目标,解决现有控制条件(如深度图、分割图)无法区分目标类别、难以兼顾多目标精准控制的问题
1. 等间距灰度值:区分目标类别
针对含 M 个类别的遥感数据集,ISIM 先为每个类别分配唯一的 "类别标识符"(范围[0 M]),再通过等间距算术规则计算每个类别对应的灰度值,公式如下:vgray(m)=⌊M/255*m⌋其中:
- m:目标类别的唯一标识符(如 "飞机" 对应m=1,"船舶" 对应m=2);
- M:数据集中目标类别的总数(如 DIOR 数据集M=20);
- ⌊⋅⌋:向下取整函数;
- vgray(m):该类别目标在 ISIM 中对应的灰度值(范围[0 255],确保不同类别灰度值不重叠)。
例如,若数据集含 2 类目标(M=2),则 "类别 1" 灰度值为⌊255/2×1⌋=127,"类别 2" 为⌊255/2×2⌋=255,通过灰度差异可直接区分目标类别
2. 区域特征:保留目标的位置与尺度
ISIM 并非仅用灰度值标记类别,还通过 "灰度区域的空间属性" 编码目标的位置和尺度:
- 位置:灰度区域的 "中心坐标" 对应目标在最终遥感图像中的中心位置(如某灰度块中心坐标为(x,y),则生成的目标中心也为(x,y));
- 尺度:灰度区域的 "面积大小" 对应目标的实际尺度(如面积大的灰度块对应大尺度目标,如机场;面积小的对应小尺度目标,如车辆);
- 形状:灰度区域的 "宽高比" 对应目标的几何形状(如矩形灰度块的宽高比与飞机、网球场等目标的真实宽高比一致)。
通过这种设计,ISIM 能将 "类别、位置、尺度" 三大信息浓缩到一幅灰度图中,让模型生成图像时 "按图索骥",精准还原目标特征
3. ISIM 的生成过程:从 "目标信息" 到 "灰度图"
ISIM 的生成依赖 SCDKG 初始化的 MMOs(多类别多尺度目标)信息,具体步骤如下:
- 获取目标基础信息:从 SCDKG 输出的目标列表(含每个目标的 "类别、宽高比、尺度、位置")中提取关键参数;
- 分配灰度值:根据目标类别对应的标识符m,用上述公式计算其灰度值vgray(m);
- 绘制灰度区域:在空白灰度图上,按目标的 "位置" 确定中心,按 "尺度" 和 "宽高比" 绘制对应大小、形状的灰度块,灰度块的颜色即为步骤 2 计算的vgray(m);
- 整合生成 ISIM:重复步骤 2-3,将所有目标的灰度块绘制完成后,得到最终的 ISIM(一幅含多个灰度块的图像,每个灰度块对应一个目标的 "类别 - 空间特征")
什么是结构化目标分布指令(SODI):
它是 MMO-IG 模型中用于 "全局引导图像生成" 的文本指令,本质是 "标准化场景描述 + 精准目标统计" 的组合,核心作用是解决深度生成模型的 "幻觉问题",确保生成的遥感图像与 ISIM(等间距实例图)标签严格对齐,同时规范图像风格符合遥感场景。
SODI 由固定场景头和动态统计描述组成,结构简洁且信息明确:
- 固定场景头描述:统一以 "A remote sensing image with"(一张含...... 的遥感图像)开头,直接告诉模型 "生成内容需符合遥感图像风格",避免生成自然场景(如风景照、城市街拍)等无关图像。
- 动态目标统计描述 :基于 SCDKG 初始化的目标列表,统计各类目标的具体数量,按 "数量 + 类别" 的格式呈现。
- 示例:若目标列表含 7 架飞机、4 辆车、0 艘船,则统计描述为 "7 airplanes and 4 vehicles",最终 SODI 为 "A remote sensing image with 7 airplanes and 4 vehicles"。
- 关键:会过滤掉数量为 0 的目标(如示例中的 "船"),避免无效信息干扰模型。
生成流程:
SCDKG 的输入 ------ 全是数据集 "现成的标注信息",不用自己标!
SCDKG 的输入,本质是DIOR 等公开遥感数据集自带的 "目标标注文件"(就是我们之前说的 "别人做好的标注"),这些标注里藏着两个关键信息,正好对应 SCDKG 的两个核心组件:
-
用来构建 Psgc 概率函数的信息:标注文件里每个目标的 "位置(像素坐标)、尺度(边界框大小)、宽高比(边界框宽 / 高)"比如 DIOR 标注里,"飞机" 目标的边界框坐标是(x=200,y=300, 宽 = 150, 高 = 50),"船舶" 的坐标是(x=500,y=600, 宽 = 100, 高 = 30)------SCDKG 会把全数据集里所有 "飞机""船舶" 的这些参数统计起来,算出 "飞机的宽高比多在 3:1 左右""船舶多在图像下半部分(海面)",这些统计结果就是 Psgc 概率函数。
-
用来构建 Pid 矩阵的信息:标注文件里 "不同类别目标的共现关系"比如 DIOR 里,1000 张含 "港口" 的图里,有 950 张同时含 "船舶",只有 5 张含 "飞机"------SCDKG 会统计这种 "类别一起出现的概率",形成 Pid 矩阵(比如 "港口→船舶" 的 Pid 值 = 0.95,"港口→飞机" 的 Pid 值 = 0.05)。
简单说:SCDKG 的输入不是 "需要你自己标新数据",而是 "直接读数据集已经标好的、关于目标几何特征和类别共现的原始信息"。
SCDKG 的输出 ------"能直接用的目标初始化列表"
当 SCDKG 用 Psgc 和 Pid 把 "规律" 提炼好后,会输出一个MMOs(多类别多尺度目标)列表------ 这个列表里的每个目标,都带着 "明确的类别、位置、尺度、宽高比",是后续生成 ISIM 和 SODI 的 "原材料"。
举个具体例子:假设要生成 "含港口和船舶的遥感图像",SCDKG 的输出列表会是这样的:
| 目标序号 | 类别 | 位置(像素坐标) | 尺度(宽 × 高) | 宽高比 |
|---|---|---|---|---|
| 1 | 港口 | (x=400, y=500) | 200×80 | 2.5:1 |
| 2 | 船舶 1 | (x=450, y=550) | 100×30 | 3.3:1 |
| 3 | 船舶 2 | (x=500, y=530) | 90×28 | 3.2:1 |
这个列表怎么来的?就是 SCDKG 按规则算出来的:
- 先用 Psgc 选 "港口" 的位置(图像下半部分,符合海面区域)、尺度(200×80,符合真实港口大小);
- 再用 Pid 矩阵:因为选了 "港口",所以接下来优先选 "船舶"(Pid=0.95),而不是 "飞机";
- 再用 Psgc 给 "船舶" 选位置(离港口 50-100 像素,符合 Pid 的距离规则)、尺度(90-100×28-30,符合真实船舶大小);
- 最后把这些目标整理成列表,输出给下一个环节。

步骤 1:先确定 "单幅图像要生成多少个目标"(由P_in约束,非随机)
- 不是 "随便选一个数字",而是从真实数据集统计的 "每幅图像目标数量概率分布" 中采样。比如 DIOR 数据集统计发现:90% 的遥感图像含 5-15 个目标,仅 5% 含 1 个以下、5% 含 20 个以上 ------
P_in就是这个概率分布(如 "选 10 个目标" 的概率 0.2,"选 3 个" 的概率 0.05)。SCDKG 会按这个概率选数量(比如大概率选 8-12 个),不会随机选 "100 个"(远超真实场景)或 "0 个"(无意义)。
步骤 2:再确定 "每个目标的类别"(由Pid和P_ic协同约束,非随机)
- 不是 "从 20 类里随便挑",而是按 "类别共现规律" 选:① 第一个目标:从
P_ic(类别出现概率)采样 ------ 比如 DIOR 中 "车辆" 出现概率 0.3,"飞机" 0.2,"网球场" 0.05,所以第一个目标大概率是 "车辆" 或 "飞机",很少是 "网球场";② 第二个目标:从Pid矩阵(类别依赖概率)采样 ------ 如果第一个目标是 "港口",Pid规定 "港口→船舶" 的概率 0.95、"港口→飞机" 的概率 0.05,所以第二个目标几乎肯定是 "船舶",不会随机选 "飞机"。比如最终选的类别序列是 "港口→船舶 1→船舶 2→车辆"(符合 "港口附近多船舶" 的真实规律),而非 "港口→飞机→网球场"(违背规律)。
步骤 3:最后确定 "每个目标的位置、尺度、宽高比"(由Psgc约束,非随机)
- 不是 "随便填坐标和尺寸",而是从
Psgc的三大概率函数中采样:① 位置:若类别是 "船舶",Psgc的位置概率函数规定 "图像下半部分(海面)概率 0.9,上半部分(陆地)0.1",所以船舶会大概率出现在(x=500,y=600)这类海面坐标,不会随机出现在(x=200,y=100)(山顶);② 尺度:若类别是 "车辆",Psgc的尺度概率函数规定 "宽 20-40 像素、高 10-20 像素" 的概率 0.8,所以车辆尺寸会在这个范围,不会随机选 "宽 200 像素"(和机场一样大);③ 宽高比:若类别是 "飞机",Psgc的宽高比概率函数规定 "3:1~4:1" 的概率 0.9,所以飞机会是长条形,不会随机选 "1:1"(正方形)。
最终输出的 MMOs 列表(比如 "5 个目标:港口(x400,y500, 宽 200 高 80)、船舶(x450,y550, 宽 100 高 30)......"),每一项参数都符合真实规律,毫无随机性。
步骤5:扩散模型转化图像
这一步是 MMO-IG 模型的「最终转化环节」------ 本质是在结构化目标分布指令(SODI)的全局约束下,让扩散生成模型把 "基于 SCDKG 生成的 ISIM(等间距实例图)",从 "灰度块蓝图" 解码成 "带真实纹理、符合遥感场景、目标精准对齐" 的遥感(RS)图像,同时输出与目标一一对应的实例级标签(供下游检测任务使用)
在解码前,模型会先整合 3 类关键信息,缺一不可:
| 输入内容 | 本质作用 |
|---|---|
| 1. SCDKG-based ISIM | 「空间蓝图」:灰度块的位置 = 目标位置、灰度值 = 目标类别、灰度块大小 = 目标尺度,是图像的 "骨架" |
| 2. SODI(结构化文本指令) | 「风格 + 对齐约束」:限定 "遥感图像风格",同时确保生成的目标数量、类别与 ISIM 完全一致(防幻觉) |
| 3. 含噪初始图像特征 | 「生成起点」:一张充满随机噪声的特征图(扩散模型的常规输入),后续通过去噪逐步还原图像细节 |
举个具体输入示例:
- ISIM:含 2 个灰度块(灰度值 127 = 飞机,位置 (200,300)、尺度 150×50;灰度值 255 = 船舶,位置 (500,600)、尺度 100×30);
- SODI:"A remote sensing image with 1 airplane and 1 ship";
- 含噪特征:一张 800×800 像素的随机噪声图(类似电视雪花屏)。
这一步基于「稳定扩散模型(Stable Diffusion)」改造,核心是 "多轮去噪 + 双重约束",具体流程如下:
子步骤 1:输入整合与格式适配
模型先把 3 类输入转换成 "模型能读懂的统一特征格式":
- ISIM(灰度图):通过「残差编码器」转换成 "空间特征图"------ 把灰度块的 "位置、灰度值、大小" 编码成模型可计算的向量(比如 "灰度值 127" 对应 "飞机类别向量","位置 (200,300)" 对应 "空间坐标向量");
- SODI(文本):通过「文本编码器(如 CLIP Text Encoder)」转换成 "文本特征向量"------ 把 "1 airplane and 1 ship" 翻译成模型能理解的 "类别数量约束" 和 "遥感风格指令";
- 含噪特征:直接作为初始 "图像特征基底",后续所有修改都基于这个基底进行。
子步骤 2:特征融合(核心:让模型 "同时看懂蓝图和规则")
通过模型的「跨模态注意力模块」(融合了 ViT 注意力机制),把 ISIM 的空间特征、SODI 的文本特征,与含噪图像特征 "绑在一起":
- 作用:让模型在去噪时,每一步都 "记得":① 哪里要画目标(ISIM 的位置特征);② 画什么类别(ISIM 的灰度值特征 + SODI 的类别约束);③ 画多大(ISIM 的尺度特征);④ 画成什么风格(SODI 的遥感指令)。
- 通俗理解:就像画家作画前,同时记住 "素描草稿(ISIM)" 和 "客户要求(SODI:画遥感图,要 1 架飞机 1 艘船)",不会画着画着偏离要求。
子步骤 3:多轮去噪迭代(扩散模型的核心操作)
模型会进行 T-1 次(论文中 T 是扩散步数,通常设为 1000 左右,实际训练中取 T-1 轮有效迭代)去噪,每一轮都在 "细化图像细节",且每一轮都受 ISIM 和 SODI 约束:
- 第 1~100 轮:初步去噪,区分 "目标区域" 和 "背景区域"------ 基于 ISIM 的灰度块位置,把 "该画目标的地方" 从噪声中初步分离(比如 (200,300) 附近的噪声变成模糊的 "长条形轮廓",对应飞机;(500,600) 附近变成 "梭形轮廓",对应船舶);
- 第 101~500 轮:细化目标纹理和背景风格 ------ 目标区域:给飞机加上机翼、机身纹理,给船舶加上船体、甲板细节(纹理符合遥感图像的 "航拍视角、低纹理噪声" 特征,由 SODI 约束);背景区域:生成海面、陆地、云层等遥感常见背景(不会生成树木、建筑等非遥感核心背景);
- 第 501~T-1 轮:精准对齐与优化 ------ 确保目标的位置、尺度和 ISIM 完全一致(比如飞机的中心坐标严格是 (200,300),宽高 150×50),同时消除图像噪声,让目标边缘更清晰、背景更自然。
子步骤 4:解码输出(得到最终遥感图像)
最后一轮去噪完成后,模型的「解码器」会把优化后的图像特征,转换成 "人眼可见、计算机可处理" 的数字遥感图像:
- 输出 1:高质量遥感图像 ------ 画面中包含与 ISIM 一一对应的目标(1 架飞机、1 艘船),目标位置、尺度、类别完全符合要求,背景是符合遥感风格的海面 / 陆地,无多余目标(SODI 抑制了幻觉);
- 输出 2:实例级标签 ------ 同步输出与图像目标对应的标注文件(如 XML/TXT 格式),包含每个目标的类别、边界框坐标(和 ISIM 完全对齐),可直接用于下游遥感目标检测(RSIOD)模型的训练。
恶补基础知识:
灰度值是什么:
在数字图像领域,"灰度值" 的本来含义是描述图像中单个 "像素" (图像的最小组成单位)明暗程度 的量化参数,核心作用是对++像素的亮度信息进行标准化表++达,主要用于 "灰度图像"(仅包含黑白及中间过渡色的图像,无彩色信息)中
灰度值通常采用8 位二进制编码 ,取值范围固定为 0~255,共 256 个等级,每个等级对应一种明暗程度:
- 灰度值 = 0:代表纯黑色,像素亮度最低(可理解为 "完全不反射 / 发射光线");
- 灰度值 = 255:代表纯白色,像素亮度最高(可理解为 "完全反射 / 发射光线");
- 0~255 之间的数值:对应不同深浅的 "灰色",数值越小,像素越接近黑色(如灰度值 10 接近深灰);数值越大,像素越接近白色(如灰度值 240 接近浅灰)。
在图像处理(如文字识别、目标检测、医学影像分析)中,常先将彩色图像转为灰度图像,通过分析 "不同区域的灰度值差异" 来定位目标(比如:物体的灰度值与背景灰度值差距越大,越容易被识别)。
像素是什么:
像素(Pixel)是构成所有数字图像的最小、不可再分割的基本单位,就像拼图里的 "小方块"------ 一幅完整的数字图像,本质是由无数个排列整齐的像素 "拼接" 而成,每个像素单独承载着图像的 "颜色" 或 "亮度" 信息,
- 比如一张分辨率为 "1920×1080" 的图片,意味着它横向有 1920 个像素,纵向有 1080 个像素,总像素数为 1920×1080≈207 万(即常说的 "200 万像素");
像素的核心作用是 "记录视觉信息",不同类型的图像(彩色 / 灰度),像素存储的信息不同:
- 彩色图像的像素:通常用 "RGB 三通道" 存储颜色 ------ 每个像素包含红(R)、绿(G)、蓝(B)三个数值(每个数值范围 0~255),通过三者的不同组合,能呈现出人类肉眼可见的所有颜色(比如 R=255、G=0、B=0 是纯红色,R=255、G=255、B=255 是纯白色);
- 灰度图像的像素:仅存储 "灰度值"(范围 0~255),如之前所说,灰度值 0 对应纯黑、255 对应纯白,中间数值对应不同深浅的灰色,仅表达 "明暗" 而无 "色彩"(比如遥感图像的 ISIM,就是由无数个含特定灰度值的像素组成,每个灰度块本质是 "相同灰度值的像素集合")。
- 分辨率:即图像的 "像素总数",分辨率越高(像素越多),图像能承载的细节越丰富。比如手机 "4800 万像素摄像头" 拍的照片,比 "1200 万像素" 的照片能呈现更多细节(如远处景物的纹理、文字的边缘);
概率函数是什么
"概率函数" 本质是量化真实遥感场景中目标几何特征(位置、尺度、宽高比)出现规律的 "可能性规则",告诉模型 "目标的几何特征该怎么分布才符合现实",最终让生成的图像目标不出现 "位置错乱、尺度异常、形状失调"。
概率函数的核心是 "描述'特征取值'与'出现概率'的对应关系"。在遥感图像生成中,++它不是抽象的数学公式,而是从真实遥感数据中统计出来的 "规律映射表++ "(数据集自己会有标注)------ 比如 "车辆在道路区域出现的概率高,在海面出现的概率近于 0""飞机的宽高比多在 3:1 左右,出现 1:1(正方形)的概率极低",这些规律都被量化成概率函数,供模型生成时参考。
1. 位置:二维概率函数(图像平面的 "可能性地图")
- 图像中目标的位置用 "像素坐标(x,y)" 表示(x 是横向像素序号,y 是纵向像素序号),二维概率函数就是 "每个(x,y)坐标对应的'目标出现概率'"。
- 比如真实数据中,船舶 90% 以上集中在图像的海面区域(对应一组(x,y)坐标范围),陆地区域几乎没有,那么这个函数会给海面坐标分配高概率(如 0.9),陆地坐标分配低概率(如 0.01)。
- 模型生成时,会优先在高概率(x,y)坐标处放置对应目标,避免 "船舶出现在山顶""车辆出现在海面" 的荒诞情况。
2. 尺度:一维概率函数(目标大小的 "概率分布表")
- 图像中目标的尺度用 "像素长度 / 面积" 表示(比如小型车辆在 800×800 像素图像中约占 20×10 像素,大型机场约占 500×300 像素),一维概率函数就是 "每个像素尺寸对应的'目标出现概率'"。
- 比如真实数据中,小型车辆的尺度集中在 10~30 像素长度,大型货车集中在 30~50 像素长度,那么这个函数会给 10~30 像素分配高概率(如 0.7),给 500 像素(和机场同尺度)分配低概率(如 0.001)。
- 模型生成时,会按这个概率分布采样尺度,避免 "车辆比机场还大""机场只有几十像素" 的异常。
3. 宽高比:一维概率函数(目标形状的 "合规范围")
- 宽高比是 "目标像素宽度 / 像素高度" 的比值(比如飞机宽 150 像素、高 50 像素,宽高比 = 3),一维概率函数就是 "每个宽高比数值对应的'目标出现概率'"。
- 比如真实数据中,网球场的宽高比固定在 1:2(标准尺寸),概率接近 1;飞机的宽高比集中在 2.5~4 之间,概率达 0.8;而宽高比 0.5(宽<高,像竖版矩形)的概率几乎为 0。
- 模型生成时,会优先选择高概率的宽高比,确保 "网球场是规整矩形""飞机是长条形",避免出现 "宽高比失调的船舶""正方形的机场跑道"。
实验
- 采用 DIOR/DIOR-R 数据集,基于 4 张 NVIDIA Tesla A100 GPU 训练,学习率 1e-5。训练时长约 2 天。
下游任务:生成数据提升检测模型性能
将 2 万张 MMO-IG 生成的图像与原始 DIOR 数据融合,训练 5 类主流检测模型,验证数据有效性:
- 模型性能提升:R-CNN、Faster R-CNN、YOLO、PANet、CornerNet 的检测准确率最高分别提升 8.1、5.2、8.1、5.3、5.1 个百分点。