我入行遥感数据处理这几年,被问得最多的一个问题就是:遥感语义分割、目标检测、场景分类、变化检测分别该用什么公开数据集?刚开始我还会老老实实报一串名字,后来我发现,这个问题本身就问偏了。遥感数据集不是越多越好,而是必须和你的影像来源、任务粒度、标注体系匹配。有人一口气下载了几十个公开数据集,最后花在格式转换和数据清洗上的时间比训练还多,基线还没跑通就先掉进坑里。
这篇文章不打算给你堆一个纯目录式的清单,而是从四个典型任务方向出发,把数据集的形态差异、选型逻辑、标注处理和踩坑经验一次讲透。内容包括:每个任务方向的数据集长什么样、怎么根据自己的需求去选、拿到手之后如何清洗和转换、以及从经典模型的适配到开放词汇变化检测这类新趋势的演进脉络。适合刚接触遥感方向的研究生、转行的开发者,以及正在做遥感项目落地的工程团队。
1. 先想清楚再下载:遥感数据集不是越多越好
1.1 遥感影像与自然图像的本质差异
很多人把遥感影像当成“从天上拍的街景”,这个类比害了不少人。遥感影像和自然图像有两条本质差异,直接影响数据集的选型和模型设计。
第一是尺度差异。自然图像里一个目标可能占画面的三分之一,比如你拍一个人,这个人至少是几百像素。遥感影像不一样,同样的人工目标可能只有几十个像素,甚至几个像素。一辆停在路边的车,在0.3米分辨率的影像里也就3米长,换算成像素才10个像素宽。你要是拿着自然图像的目标检测习惯去做遥感检测,第一轮就会被打懵。
第二是光谱差异。自然图像绝大多数是红绿蓝三通道的可见光影像,遥感影像除了可见光还有近红外、短波红外,甚至还有SAR这类微波遥感数据。光谱信息带来的不只是“多几个通道”那么简单,它意味着同一个地物在不同的波段组合下呈现出完全不同的特征,也就是常说的“同物异谱”和“同谱异物”。比如同一片水体,在可见光下可能是棕色浑浊的,在近红外波段却吸收强烈,几乎全黑;而某些建筑物屋顶的材质,其光谱曲线和裸地非常接近。这些现象在做数据集标注和模型训练时都必须考虑进去。
这个差异直接决定了遥感数据集不可能像ImageNet那样“一个数据集吃遍所有任务”。你手里的遥感数据源五花八门——有的是0.3米甚至0.05米的无人机航拍,有的是2米分辨率的商用卫星影像,还有的是10米、30米分辨率的开源卫星影像——分辨率不同,能看清的目标粒度就不同,适合标注的类别体系也不同。
1.2 四个任务方向的数据形态与选择底层逻辑
语义分割、目标检测、场景分类、变化检测,这四类任务在数据结构上的差异,比很多人想象中大得多。
语义分割要求的是像素级标签。每个像素都要归类,比如建筑、道路、水体、植被、裸地。标签形态通常是栅格掩码,或者是矢量面状标注转成的栅格。这类数据集的制作成本最高,它要求标注人员沿着地物边界一点点描,标注一个中等复杂度的城区影像,耗费的时间可能是一个检测数据集的五到十倍。
目标检测要的是目标级标签。只需要框出目标位置,比如飞机、船舶、车辆、储油罐。标注形态是水平矩形框或者旋转矩形框。检测数据集的制作成本比分割低不少,难点在于小目标多、目标密集,容易漏标和错标。
场景分类要的是图像级标签。整张影像打一个类别,比如商业区、居民区、农田、山地、港口。标注成本最低,很多数据集只要人工看一遍图片打个标签就行,甚至可以用已有的地理信息数据半自动生成标签。要注意的是,场景分类不等于细粒度地物分类,别混淆这两件事。
变化检测要的是双时相影像加变化区域的像素级标注。一个数据样本有两张同一地点不同时间拍摄的影像,标签标出哪些地方发生了变化,比如新建了一个小区、新修了一条路、一片森林被砍伐。变化检测的标注难点在于“判断哪里变了”比“判断这里是什么”更费脑,因为变化区域往往是小块的、稀疏的。
| 任务方向 | 标签粒度 | 典型标注形态 | 标注成本 | 训练难点 |
|---|---|---|---|---|
| 语义分割 | 像素级 | 栅格掩码/面矢量 | 最高 | 边界精度、类别不均衡 |
| 目标检测 | 目标级 | 水平框/旋转框 | 中 | 小目标、密集排列 |
| 场景分类 | 图像级 | 单标签/多标签 | 较低 | 类内多样性、类间相似性 |
| 变化检测 | 像素级 | 二类掩码/多类掩码 | 很高 | 配准误差、负样本爆炸 |
这张表基本就是你选数据集的决策起点。先想清楚你要解决的到底是哪一个任务,再往下看数据集的细节。
2. 语义分割数据集:地物分类的像素级考验
2.1 语义分割数据集的典型形态
遥感语义分割数据集的通用形态是“影像加掩码”的配对结构。影像可以是单张高分辨率航空影像,也可以是多光谱卫星影像;掩码通常是和影像同尺寸的单通道栅格,每个像素的灰度值代表一个类别编号。
我第一次用这类数据集时犯过一个低级错误。我以为掩码文件是普通的彩色图片,直接拿过来算了交叉熵损失,结果发现模型怎么train都不收敛。后来打开掩码的像素值分布才发现,类别编号不是0、1、2、3这么整齐排列的,而是分布在几个非常分散的数值区间里。正确做法是:读入掩码之后先做一个类别映射,把原始像素值强制映射到0到N-1的连续空间,再做one-hot编码或者直接计算损失。
语义分割数据集的类别体系通常分为两种。一种是面向精细城市地物的,比如独立建筑、道路、低矮植被、树木、水体、汽车、背景;另一种是面向大范围土地覆盖的,比如耕地、草地、森林、裸地、水体、不透水面。这两种类别体系看着相似,实际差别很大。前者要处理树冠阴影、建筑屋顶材质变化、车辆遮挡道路这类细碎问题,后者要处理云遮挡、地物大范围混杂、季节变化带来的光谱漂移。
2.2 语义分割数据集怎么选:从地物类别到影像来源
选语义分割数据集,我建议按三个标准来过滤。
第一个标准是影像来源和你的应用场景是否一致。如果你最终要处理的是无人机低空拍摄的0.05米分辨率影像,那就不要选一个只包含低分辨率卫星影像的数据集来训练。遥感分割模型对分辨率的敏感度极高,低分辨率影像上练出来的边界拟合能力,放到高分辨率影像上往往表现不佳,反之亦然。最稳妥的做法是找同传感器、同分辨率级别、相近拍摄条件的数据集。
第二个标准是类别体系是否覆盖你关心的地物。比方说你要做城市建筑物提取,那就应该找类别粒度在“建筑”级别、单独把建筑从背景和其他地物中分离出来的数据集。有些数据集把建筑和道路合在一个“不透水面”类里,这种就不适合训练精确的建筑物分割模型。
第三个标准是背景类的处理方式。很多开源分割数据集只标“前景类”,剩下的全部归为“背景”。这种设计在训练阶段容易诱导模型把未知地物全部视为背景,导致在真实场景里把没见过的屋顶类型、不同季节的植被当成背景忽略掉。如果你要做的项目对召回率要求高,比如灾害评估里的房屋损毁分析,我更推荐选择类别体系里把常见地物显式列出来的数据集,而不是只有一个笼统背景类的。
2.3 SegFormer这类Transformer分割框架的适配问题
现在做遥感语义分割,Transformer类backbone已经很常见了,业内常说的SegFormer就是代表性框架之一。和传统的FCN、U-Net系列相比,SegFormer这类方法在遥感场景下有几个实际优势。
一是自注意力机制天然适合捕捉全局上下文。遥感影像中的地物往往广袤而连续,一块几百米宽的农田在整幅影像中占的比例很大,用卷积堆叠的方式要看很久的视野才能覆盖整个区域,而Transformer在第一个stage就能建立全局依赖,对均匀纹理的地物类别非常友好。
二是层次化特征做得好。它输出多尺度的特征金字塔,对“影像里既有大面积农田又有小片池塘”这种多尺度地物混合场景,不需要额外设计复杂的FPN结构就能取得不错的效果。
但它也有适配问题,这也是我在实际项目中体会最深的一点。SegFormer这类框架的官方预训练权重通常是基于自然图像训练的,输入尺寸、通道数、归一化参数都偏向自然图像。当你把它迁移到遥感数据上,超参数必须重新调。首先是归一化,遥感影像的像素分布和自然影像差异很大,如果沿用ImageNet的归一化参数,多光谱遥感数据的某些通道会被压得毫无表达能力,建议在数据集上重新统计均值方差。其次是输入尺寸,遥感分割通常需要保留更多空间细节,输入patch尺寸不宜过大,我一般用512×512或者640×640,太大显存不够而且容易丢失小地物的占比。
3. 目标检测数据集:小目标、密集目标与旋转框
3.1 遥感目标检测的标志性难题:小目标和密集目标
遥感目标检测和自然图像目标检测的性能差距,最常体现在两个点上:小目标和密集目标。
小目标的问题不用多解释。一个足球场那么大范围内的几百辆汽车,每辆车只有十几个像素,这个尺度下去做检测,普通的特征提取网络很容易把小目标特征在层层池化过程中丢掉。解决思路基本就是三类:一是使用更高分辨率的输入,二是引入专门针对小目标的特征金字塔和检测头设计,三是在数据层面做针对性增强,比如多尺度裁剪和复制粘贴增广。
密集目标的问题更隐蔽。停在一起的车辆、码头上排列整齐的集装箱、机场停机坪上紧密排列的飞机,目标之间距离非常近,甚至互相遮挡。这时候通用检测器常见的NMS(非极大值抑制)会大量误删重叠框,导致召回率骤降。你需要针对目标密集程度专门调整NMS阈值,或者换成不需要NMS的端到端检测方式。
3.2 结构与标注:水平框还是旋转框
遥感目标检测数据集的标注格式分两派:水平矩形框和旋转矩形框。
水平框的优点是标注简单、模型结构相对成熟,YOLO系列和Faster R-CNN系列可以直接用。缺点是水平框会框进大量背景。一架飞机斜着停放时,水平框里的背景区域可能占框面积的百分之三四十,这些背景像素会被当成正样本参与训练,导致模型的定位精度打折。
旋转框则能更贴合目标形状,尤其适合舰船、飞机、车辆这类长条形地物。代价是标注成本和模型复杂度都上去了:标注人员需要给定矩形的中心点、长边、短边和旋转角度;模型也要在原有回归分支上额外预测角度信息。
我的建议是:如果你的目标类别里以这类长条形地物为主,直接找带旋转框标注的数据集来做,一次到位;如果目标类别是储油罐、球场、体育场馆这类圆形或方正的形状,水平框就足够了,不必为了追求花哨格式给自己增加难度。
3.3 YOLO系在遥感检测里的适配与改进方向
YOLO系检测器在遥感目标检测里的适用性,要分两点看。
优点是它的推理速度极快,训练流程简单,锚框机制在中等尺度目标上表现稳定,社区生态完善,改造成本低。遥感项目里的很多实时性需求,比如无人机在线巡检、交通监控视频流的快速分析,都是YOLO系的主场。
缺点也很明显:YOLO的传统多尺度检测头对小目标不友好。针对遥感场景的常见改造方向是:加一个更大的特征图分支来提升小目标召回率;针对图像尺寸调整锚框分布;做Mosaic增强和多尺度训练;以及针对目标密集场景调整NMS策略。如果你把YOLO系模型直接搬到遥感检测上而不做这些适配,效果往往不如一个精心调过的老式Faster R-CNN。
3.4 一个延伸案例:鸟类检测与交通视频检测
遥感目标检测的能力并不局限在卫星影像里,它经常直接迁移到相邻的视觉任务中。
野生动物监测是一个典型场景。鸟类个体小、羽毛颜色与背景容易混淆、经常成群出现,这几乎就是遥感小目标密集检测的翻版。相关数据集通常来自航拍影像或无人机影像,标注单位是“只”,目标尺寸往往在几十像素以下,背景则包含树木、水面、岩石等复杂纹理。跑这类数据集,你会发现通用检测器的表现惨不忍睹,必须针对小目标重新设计。
另一个跨界案例是多模态AI分析在交通事故检测里的应用。摄像头视角下的车辆目标大、背景稳定,看起来比遥感简单,但还有夜间低照度、雨雾天气、目标互相遮挡等难题。常见的做法是把YOLO系目标检测和文本描述、音频信号这类多模态信息融合起来做综合分析,当检测器给出“车道线附近有疑似事故车辆”的置信输出后,再由上层模型结合上下文做最终判断。这类系统的检测前端思路和遥感检测高度一致,很多训练技巧是互通的。
4. 场景分类数据集:先粗筛后细分的顶层视角
4.1 场景分类在遥感任务链条中的位置
场景分类常被当做“最简单的遥感任务”,因为标签粒度粗,只需要给整张影像打个分类标签。但它在整个遥感任务链条里的位置很特殊,它解决的往往不是“识别地物”的问题,而是“这幅影像到底属于哪种场景”的问题。
这句话怎么理解?举个例子。你要在某个区域内找所有的居民区影像,你可以用场景分类模型做一个快速粗筛,把上百万张影像切片全部过一遍,先筛出几万张“疑似居民区”的影像,再交给语义分割模型做精细的建筑物提取。没有这一步粗筛,分割模型直接面对百万张切片,计算成本和人工复核成本都不可接受。
场景分类本质上是“图像级粗筛”,是整个遥感数据流水线的前置过滤层,是在语义分割和变化检测之前的顶层分类器。搞明白这个定位,你就知道它的数据集质量和模型设计目标,和像素级任务完全不同。
4.2 场景分类数据集的形态与选型要点
场景分类数据集的形态比较简单:影像切片加标签。每个切片通常是固定尺寸的图片,比如256×256或者更高,标签是场景类别。常见类别包括商业区、居民区、农田、工业区、山地、森林、河流、港口、机场、桥梁等。
这类数据集的制作成本最低,因此样本数量通常很大。但正因为制作成本低,它的标签质量会参差不齐。我在使用过程中遇到过几个典型问题。
第一个是类别不平衡。某些数据集的“农田”“森林”两个类别样本特别多,“机场”“桥梁”这类稀缺场景样本特别少,少样本类别的分类准确率可能低到不可用。做场景分类评估时,不能只看总体准确率,要按类别单独看指标。
第二个是类别边界模糊。商业区和居民区之间、工业区和港口之间,在影像上经常难分难舍。一个建在港口边的集装箱堆场,你说它是港口还是工业区?标注员自己都说不准。因此场景分类数据集的验证集标签存在一定程度的固有噪声,训练后的模型性能天花板会被这部分噪声卡住。
第三个问题是切片尺寸与地理实体尺度不匹配。一个机场跑道的长度可能有几公里,切成256×256的小patch之后,单张切片上只能看到跑道的一小段。如果数据集在切patch时没有考虑地物尺度,模型学到的特征就是局部纹理拼图,而不是真正的场景语义。
4.3 用场景分类反哺分割标注筛选
场景分类除了作为独立任务,还有一个实用性很强的玩法:用它来辅助语义分割数据集的整理和筛选。
很多公开分割数据集的标签噪声集中在某些特定场景里,比如大片阴影区域、云雾遮挡区域、季节交替区域。你可以先把分割数据集里的影像切片全部跑一遍场景分类模型,把高置信度判为“云雾”或“阴影”的切片抽出来,人工看一眼,如果发现标签确实质量差,就果断从训练集里剔除。这个过程相当于给数据集做了一个基于场景语义的质量体检,比随机抽检高效得多。
我自己在实践中发现,有些公开数据集的标签错误并不是均匀分布的,而是集中在夜景、雨天、强烈阴影等特殊场景里。这类数据留着训练只会增加模型的不确定性。用场景分类做一次粗过滤,往往能筛掉5%到10%的脏样本,对整体精度提升非常明显。
5. 变化检测数据集:双时相对比里的“找不同”游戏
5.1 变化检测的数据集长什么样
变化检测的数据集形态是“三件套”:时相一的影像,时相二的影像,变化区域的像素级标签。时相影像通常都已经做过配准,理论上同一位置在两张影像中对应同一地理坐标;标签则标记出哪些区域发生了“显著变化”。
这里的关键词是“显著变化”。不同数据集对“显著”的定义完全不同。有的数据集把任何像素层面的变化都算作变化,光照变化、阴影移动、云遮挡都会造成误判;有的数据集只把建筑物新增、拆除、道路变化这类地物结构变化算作变化,这样对配准精度的要求就非常高。
刚接触变化检测的人最容易犯的错误是:拿两期自然图像去做简单的逐像素相减,然后阈值化。这在遥感变化检测上完全行不通。因为两期影像的拍摄季节、光照条件、传感器状态不可能完全一致,逐像素相减的结果会被大范围的光谱差异淹没,真正的变化区域反而看不出来。这也是为什么变化检测必须训练专门模型,而不是做个图像差分就完事。
5.2 数据对齐:变化检测最容易翻车的地方
做变化检测项目时,最让我头疼的往往不是模型,而是数据对齐。双时相影像之间的配准误差是变化检测结果的第一杀手。
同源数据集通常已经做过配准,使用起来比较省心,但即便是同源数据,不同时期的影像由于拍摄角度、地形起伏、云遮挡差异,局部仍可能存在几个像素的偏移。这些偏移在变化检测里会被放大成“伪变化”——一条道路的边界错位几个像素,就会被识别成道路拓宽了。
跨源数据集的配准问题更严重。可见光影像和SAR影像、光学影像和夜晚灯光影像之间的几何关系差异明显,如果直接送入模型,模型会花费大量学习能力去拟合“地物偏移导致的伪变化”,真正的结构变化反而学不充分。所以拿到变化检测数据集的第一个动作应该是:用目视检查判断配准质量,如果双时相影像的边界错位超过两到三个像素,一定要先做精配准或几何校正,再进入训练流程。
5.3 模型演进:从STANet孪生结构到开放词汇变化检测
变化检测模型的演进历程很有意思,大致经历了三个阶段。
第一阶段是基于差异图的传统方法,依靠人工特征加阈值分割,精度有限但计算快,适合快速粗筛。第二阶段是卷积孪生网络时代,一个典型的代表就是业内熟知的STANet式结构:两条分支分别提取两个时相的特征,然后用差异特征来预测变化区域。这种孪生注意力设计的核心思想是“先各自编码,再做特征级比较”,比像素级差分鲁棒得多,也成了后续很多变化检测模型的底座。
第三阶段是当前正在发生的范式转变。随着大语言模型和多模态视觉模型的发展,开放词汇变化检测开始兴起。它不再是从一个固定的类别集合里选标签,而是可以用任意文本描述去驱动变化检测,比如输入“新增建筑物”“道路被泥沙掩埋”“森林砍伐区域”,模型根据文本语义去找出对应的变化区域。这个方向把变化检测从“分类问题”变成了“检索和推理问题”,灵活性大大提升,在灾情评估、非法建设监管这类需求变化多样的场景里前景很好。
5.4 变化检测训练中的类不平衡与阈值选择
变化检测训练中最大的痛点从始至终都是类不平衡。绝大部分区域在双时相之间并没有发生变化,这意味着标签里“未变化”类像素占比经常高达95%以上,“变化”类像素就只有几个百分点。如果不做处理,模型只要把所有像素都预测为“未变化”,准确率都能上90%,但这个模型毫无用处。
实用做法有三个:一是损失函数层面使用带权重的交叉熵或Focal Loss,把变化类权重调上去;二是训练时对样本做采样均衡,比如在图像块级别选择变化区域占比更高的patch作为训练样本;三是后处理时选择合适的分类阈值,因为预测概率往往呈现双峰分布,可以在验证集上扫描阈值,选取F1最高或者业务指标最优的那个点作为最终判定标准。
还有一个容易忽略的点是评价指标。只用准确率或IoU来衡量变化检测模型完全不够,因为负样本占绝对主导。变化检测领域更应该关注F1分数、召回率、Kappa系数。尤其在做灾害评估时,漏报一条损毁道路的代价远高于误报一块无变化区域,这时候要以召回率为主要优化目标。
6. 从公开数据集到可训练样本:标注处理与数据清洗的实战细节
6.1 把多源数据拉到同一个“空间基准”上
从公开渠道拿到的遥感数据集,来自不同传感器、不同投影坐标系、不同分辨率,放到一起使用之前,要先做一个统一空间基准的预处理。
第一步是重投影。把所有影像和标签统一到同一个坐标系,否则后续的切片和融合操作都会出问题。第二步是分辨率重采样。不同来源的影像分辨率可能分别是0.3米、1米和2米,如果不重采样到统一分辨率,模型输入通道的空间对齐关系就不一致,训练会非常不稳定。第三步是关键,就是统一地理范围。不同数据集的覆盖面不一样,直接把两个数据集拼接使用时,边界地带容易出现坐标系偏移和空白区域。最好按地理位置裁剪成统一的范围。
这一套流程听起来像是纯工程琐事,但它决定了数据质量的上限。我见过不少团队在模型结构上花大量心思调参,却对数据预处理环节粗心大意,最后训练出来的模型在指标上久久卡住上不去,实际原因就是数据没有对齐。
6.2 标注格式转换:分割、检测与变化检测的共通基础
公开数据集的标注格式五花八门,几乎没有一个统一的规范。有的给栅格掩码,有的给GeoJSON矢量面,有的给CSV坐标列表。做一次完整转换是必经之路。
语义分割数据集最常见的转换是栅格掩码和矢量之间互转。如果标注是矢量面,训练前必须栅格化,也就是把多边形填充成像素值。栅格化时要注意像素值的分配顺序,不同类别的矢量面如果相互重叠,后写入的类别会覆盖先写入的,导致信息丢失,要先定义类别优先级再执行填充。
目标检测数据集的转换主要是坐标系变换和格式变换。有的数据集给的是经纬度坐标,你需要根据影像的仿射变换参数换算成像素坐标;有的给的是多边形顶点,你需要计算外接矩形,并决定是用水平框还是继续保留旋转框格式。转换之后一定记得做一次反向验证,把转换后的标签画回到影像上,人工目视检查偏移是否在可接受范围内。
变化检测数据集的格式特殊性在于它有成对影像,标签对齐时必须以两张影像的公共区域为准。如果两张影像的地理范围有细微差别,需要把范围外区域统一置为忽略值,避免标签和影像错位。
6.3 数据增强与样本均衡的实操做法
遥感数据增强和自然图像数据增强的思路大体相同,但有几个独有的操作值得重视。
随机旋转和随机翻转是基本操作,对旋转框目标检测尤其友好,因为旋转框标注自带角度信息,增强之后只需要同步旋转角度即可。随机颜色抖动在遥感影像上要慎用,因为遥感影像的光谱响应对地物分类有决定性作用,过度颜色扰动会破坏“同物同谱”的假设。我一般只做轻度亮度扰动和对比度扰动,不做大幅色相偏移。
多尺度裁剪是遥感训练的关键增强手段。大尺寸遥感影像直接送进模型不仅占显存,还会丢失局部细节。通常的做法是从大影像上随机裁剪若干小patch,比如从一万像素宽的影像上随机取512×512的patch参与训练。这个操作在增加样本多样性的同时,也起到了变相的尺度增强作用,因为同一地物在不同尺度下呈现的纹理粒度不同,模型能学到更鲁棒的特征。
复制粘贴增强在遥感目标检测中非常有效。把其他影像上剪切下来的目标随机贴到当前影像上,可以显著增加小目标的样本数量。这个操作需要注意不能贴得太假,比如把港口里剪下来的船贴到森林中央,模型就会学到错误的空间先验。
6.4 标签噪声与重复样本的清洗策略
公开数据集不是圣旨。我在实际使用中发现,几乎所有公开遥感数据集都存在标签噪声,只是程度轻重不同。常见噪声有三类:漏标、错标和边界不精确。
漏标最常见于密集目标场景,比如停车场里紧挨着的一排车只标了一半;错标常见于类别混淆,比如把低矮灌木标成了草地;边界不精确常见于语义分割数据集,标注人员沿着地物描边时的误差会给模型带来学习上的随机扰动。
处理标签噪声的第一步是可视化。把标签叠加到影像上,随机抽几十张图,一眼就能看出标注质量的高低。如果发现某类样本的标签噪声特别大,建议直接用脚本剔除这部分样本或者单独标注修正,不要指望模型能在噪声标签中学到正确规律。第二步是去重。遥感影像切片之间可能有大量重叠,尤其是从大影像上滑窗切出来的patch,直接全部放入训练集会引入严重的冗余,造成对重叠区域过度拟合。建议在切片时使用较大的滑动步长,或在切片完成后做一次基于影像哈希的相似样本去重。
7. 选型路线图与下一步趋势:从公开数据集走向业务落地
7.1 一条实用的数据集选型决策链路
到这一步,可以给出一套我经常使用的数据集选型决策链路,你也可以把它转化成一份团队内部的checklist。
先确定任务类型,是分割、检测、分类还是变化检测。再确定数据源,你最终要处理的是什么传感器、什么分辨率的影像,按这个条件去找同类的公开数据集。然后确定类别体系,公开数据集的类别定义不等于你的业务类别定义,必须建立一份类别映射表,把公开数据集的类别映射到你的业务类别上,映射不上的类别要么归并要么丢弃。接着做数据体检,下载后先抽10到20张影像做可视化检查,确认标签质量,这一步无论如何不能省。最后做小规模基线验证,用一两个经典模型快速跑一遍,确认数据没有问题再投入精力做模型调优。
这套链路看起来笨重,却是最省时间的方式。直接跳到模型调优而忽略前面的步骤,往往是做完之后发现数据有根本性缺陷,白费几个星期的精力。
7.2 生态遥感指数、三维目标检测与多模态分析的延伸
数据集的价值从来不止于训练模型。语义分割模型的输出可以进一步计算生态遥感指数,比如基于植被类别占比估算区域植被覆盖度,基于不透水面占比评估城市热岛强度。这些指数在区域生态评估和城市规划决策中有直接应用价值,而它们的质量完全取决于底层分割模型的精度。所以,一个可靠的分割数据集,其实也是在间接贡献力量给生态遥感研究的上层应用。
另一个正在快速成熟的方向是三维目标检测。遥感影像天然包含地理空间信息,如果把目标检测从二维矩形框提升到三维空间中的目标定位,也就是在影像坐标之外预测目标的高度信息和姿态信息,就能直接服务于自动驾驶的高精地图制作和城市三维建模。三维目标检测对数据集的要求比二维检测高得多,它需要影像和点云或多视角立体数据的联合标注,目前公开数据资源还很稀缺。
随机森林这类传统机器学习方法在高光谱遥感分析和生态遥感指标反演中依然有一席之地。当你的特征维度不是特别高时,随机森林在小样本条件下往往比深度模型更稳定、更可解释,而且不需要GPU和大规模训练。在数据集资源不足的中小规模遥感项目里,传统特征加机器学习方法仍是一个性价比很高的选项。
7.3 别迷信公开标签:可视化初筛是必要的习惯
最后聊一个我个人的工作习惯,也是我踩过几次坑之后总结出来的经验。
每次拿到一个新的公开数据集,不管它的说明文档写得多漂亮,也不管它在论文里报告的结果有多高,我做的第一件事永远是可视化初筛。随机抽一批图片,把标注画上去,逐张看一遍。这一遍不需要看得特别细,目的只有一个:建立一个对数据质量的直觉。
这个习惯帮我在某个变化检测项目里避免了一场灾难。当时一个公开数据集的标签在渲染图上看着非常规范,结果可视化检查时发现,某几类变化区域的像素值编码和官方文档描述的不一致,如果我直接用原像素值做训练,那几类变化几乎不会被模型学到。重启训练之前发现问题,省下了至少一周的重训时间。
遥感方向的特点是数据、算法、场景三者深度耦合,脱离具体场景去谈“哪个数据集最好”没有意义。认真处理每一份数据,尊重数据本身的属性和局限,模型表现和业务落地效果自然会回报你。