ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

遥感大模型自监督预训练:原理、细节与实战指南

遥感大模型自监督预训练:原理、细节与实战指南 1. 为什么遥感大模型必须走自监督这条路搞遥感AI的同行应该都有同感标注数据始终是最大的痛。一张高分辨率遥感影像里建筑物、水体、植被、道路密密麻麻叠在一起画一版高质量标注的功夫够在自然图像数据集上标出好几倍的量。遥感影像的标注成本是自然图像的几十倍不止因为标注员不仅要懂目标轮廓还得懂地物光谱特征、阴影关系、不同传感器成像差异。很多项目做到一半发现真正的瓶颈不是模型结构不够新而是没有足够多带标签的数据去喂给模型。这就引出自监督预训练技术的价值了。自监督的核心逻辑是不依赖人工标注直接从海量无标签影像本身构造学习信号先把模型的通用视觉表征训练出来再在下游任务上用较少的标注数据做微调。放到遥感领域这个思路解决的是数据利用率的问题——全世界的卫星每天都在往下传影像存档数据以PB级计算但这些数据绝大部分没有标注。自监督预训练能把这些沉默的大多数利用起来让模型先学会理解地表形态、物体边界、光谱特征之间的内在规律然后再学具体任务。2025年这个时间节点上遥感大模型的研究已经过了单纯堆参数、堆数据的阶段开始认真复盘自监督预训练里面哪些做法真正有效、哪些只是在自我感动。去年很多研究都在卷MAE掩膜比例、对比损失函数形式今年越来越多人意识到遥感影像和自然图像在自监督训练上有着根本性差异直接照搬ImageNet上的预训练方案效果往往差一口气。这口气就差在遥感影像的特殊性上——多光谱通道、旋转不变性、尺度差异、时相变化、云遮挡这些都是自然图像里几乎不存在的问题。我们团队这两年一直在做遥感大模型的自监督预训练研究踩了不少坑也总结出一些实用规律。这篇文章把这些经验和盘托出给准备入场的团队和个人提供一个系统性的参考从技术原理讲到实操细节从损失函数设计讲到评估方案尽量把这条路上的弯路标出来。2. 自监督预训练方案选型对比学习还是掩膜重建2.1 两类主流方法的底层逻辑差异自监督预训练目前有两条技术路线在遥感领域影响力最大。一条是以SimCLR、MoCo为代表的对比学习路线核心思想是让模型把同一张影像的不同增强视角映射到相近的表征空间把不同影像映射到远离的位置。另一条是以MAE、SimMIM为代表的掩膜图像建模路线核心思想是遮挡一部分影像内容让模型根据可见部分去重建被遮挡的部分。这两条路线的差异本质上是学习目标的差异。对比学习学的是异同——模型需要理解什么情况下两张图是同一场景、什么情况下不是这逼着模型去关注那些能够区分不同地物的语义特征。掩膜重建学的是结构——模型必须理解影像的空间上下文关系、纹理延续性、光谱相关性才能把被盖住的区域补出来。在遥感场景下这两条路线的适配度有明显区别。对比学习对数据增强策略极其敏感而遥感影像的增强方式和自然图像完全不同。比如遥感影像的旋转不变性很重要——一栋建筑物从不同角度拍语义都是建筑物但自然图像的物体通常有明确的正立概念人不会倒着长汽车不会顶朝下。这种根本差异导致传统的随机旋转增强在遥感里往往不合适反而需要引入方向归一化或者特定的旋转不变设计。掩膜重建相对而言对增强策略的敏感度低一些因为重建任务本身就迫使模型去学习空间结构和光谱分布规律。但掩膜重建也有自己的问题——遥感影像中大量存在重复纹理农田、森林、水域这些区域的像素值高度可预测模型很容易通过简单的插值或邻域复制就完成重建从而学到懒的表征。2.2 遥感影像的特殊性决定了不能照搬自然图像方案我在实际实验中对比过直接在遥感影像上跑ImageNet版MAE下游任务里建筑物提取的mIoU只有44%左右而我们专门针对遥感做调整后可以提升到52%以上。这个差距主要来自几个方面。第一是通道问题。自然图像的MAE只处理三通道RGB但主流遥感影像Sentinel-2有13个波段即使常用的也有4到8个波段。掩膜策略要重新设计——是对所有波段统一掩膜还是对各波段独立掩膜在红外波段能看见的信息在可见光波段可能完全被云遮挡如果掩膜策略不区分波段模型学到的跨波段关联能力就有限。第二是尺度问题。自然图像里的物体尺度差异通常在10倍以内而遥感影像里同样的地物尺寸可能相差两个数量级——一个飞机场和一个停车场的单辆车在同一个场景中同框出现。自监督任务如果设计得不好模型往往会偏向于学习占主导地位的大尺度特征小目标物体的表征会被忽略。第三是时相问题。同一块地表在不同季节、不同年份的影像差异可能非常大比自然图像在不同光照条件下的差异还要大。自监督预训练如果用单期影像模型会学到很多被时相污染的特征如果引入多期影像做时间对比又面临对齐和配准的复杂问题。3. 自监督预训练的细节设计与实操要点3.1 掩膜策略的选择随机掩膜不够用我们在掩膜重建路线上做了大量实验结论是随机掩膜在遥感影像上表现平庸原因就是前面提到的重复纹理问题。随机的正方形掩膜块很容易落在同一地物的内部周围可见像素高度相关重建任务难度不够模型学不到深层语义。实践中效果比较好的方案是语义感知掩膜——先用简单算法比如超像素分割或者边缘检测把影像分成若干语义区域然后按照区域来进行掩膜。这样模型被要求根据周围不同地物类型的上下文来重建一片区域难度显著提升学到的表征也更加语义化。具体到操作层面语义感知掩膜的实现并不复杂。用SLIC超像素分割先跑一遍影像得到超像素块再按超像素块聚合选择合适的掩膜区域。掩膜比例我们实测在60%到70%之间效果较好低于50%重建任务太简单高于75%模型学不到足够的上下文信息。波段掩膜方面我们采用了一种跨波段重建策略——可见光波段和红外波段采用不重叠的掩膜区域迫使模型学习不同波段之间的关联规则。这个设计的初衷来自实际应用场景很多时候我们需要用可见光信息去推断植被健康状况这依赖红外波段或者用水体在红外波段的强吸收特性去辅助可见光波段的水体识别。如果预训练阶段就让模型接触这类跨波段推理任务下游分割任务时模型的迁移效果会好很多。3.2 数据增强策略顺序和时间都很关键自监督预训练中数据增强被称为作弊器——任务设计得再精妙如果增强策略不当模型也能走捷径偷懒。遥感影像的增强策略有自己的一套方法论。常规的增强手段比如随机裁剪、颜色抖动、高斯模糊在遥感里可以用但需要调整参数和组合方式。随机裁剪的尺度范围要更大因为遥感地物尺度差异大颜色抖动要更温和因为光谱值的定量关系对很多遥感任务具有重要意义过度扰动会破坏光谱语义。旋转增强要谨慎。如果下游任务是语义分割、变化检测这类对方向敏感的任务预训练阶段的随机旋转可能会让模型学方向不变特征这跟下游任务的实际需求是冲突的。但如果下游任务是场景分类、目标检测这类方向不敏感的任务保留一定程度的旋转增强有助于提升泛化能力。我们团队的做法是预训练阶段不加旋转把旋转不变性的问题留给下游微调阶段通过任务特定增强去解决。多时相影像的利用是遥感自监督预训练的一大突破口。同一地点不同时间的影像天然构成正样本对因为地表类型在短期内不会剧烈改变——农田还是那块农田城市还是那个城市只是作物长势、建筑物阴影、水体面积发生了变化。利用这种多时相自然配对关系做对比学习比单时相影像的人为增强配对要靠谱得多。但多时相数据的使用要解决配准问题不同期影像之间可能有几个像素的偏移需要在预处理阶段做影像配准。我们实测过不做配准直接做像素级对比预训练效果反而下降模型花了大量容量去学习配准偏差而不是地表语义。3.3 损失函数与训练稳定性掩膜重建路线最常用的损失函数是像素级L2损失MSE直接在归一化的影像空间计算重建误差。但遥感影像的像素值分布和自然图像差异很大多波段数据的各波段取值范围不一样比如可见光波段0到1热红外波段数值范围完全不同直接按原始数值计算损失高值波段会主导梯度更新。我们采用逐波段归一化的策略把每个波段的像素值标准化到0到1之间再计算重建损失。另外对于水体、云阴影这类难重建区域模型容易倾向于输出模糊的平均值来最小化损失导致重建结果偏平滑。应对方式是在损失函数里加上结构相似性SSIM项SSIM对局部结构的感知比MSE更敏感能惩罚模糊重建输出鼓励模型产生锐利的边缘和纹理细节。对比学习路线的损失函数相对标准InfoNCE还是主力。但负样本的构造需要根据遥感特点调整——同一条轨道上相邻景的影像在内容和光照上高度相似如果它们恰好被随机分到不同的batch里就可能构成困难负样本这对模型区分细微差异的能力有个不错的锻炼效果。温度系数这个超参数在遥感里要调得更低0.07到0.1之间因为遥感影像的类间差异有时候很小草地和灌木、裸土和干枯植被温度参数太高会让模型对这些细微差异过于敏感训练不稳定。训练稳定性方面自监督训练最大的坑是loss突然发散尤其是在learning rate较大的情况下。遥感影像动辄几十GB的训练数据一次训练跑几百个epoch中途发散非常浪费算力。我们的做法是第一用warmup策略前10到20个epoch从零开始线性升到目标学习率第二设置梯度裁剪最大范数设为1.0第三定期保存检查点至少每天存一次便于从中断处恢复而不是从头再来。这些看似基础的操作在大规模自监督训练里是保命的底线。4. 实操过程一次完整的遥感自监督预训练跑通记录4.1 数据准备与预处理这里以Sentinel-2多光谱影像为例讲一下我们实际跑通自监督预训练的完整流程。数据来源选了公开的Sentinel-2 L2A级地表反射率数据这个数据已经做了大气校正直接用起来比L1C级要省事不少。我们从欧空局的开放数据源上下载了覆盖多个典型场景类型城区、农田、森林、水体、山地的影像时间跨度为2023年到2024年共收集了约12000景影像。预处理管线分几步走第一步是云掩膜。Sentinel-2 L2A产品自带场景分类图SCL把云和云影标记出来。我们直接用这个波段做掩膜剔除云覆盖率超过30%的影像剩下的做后续处理。这一步很关键因为自监督训练的数据质量直接影响学到的东西大量云覆盖的影像会让模型在重建任务上轻松作弊——重建云不需要什么语义知识。第二步是波段选择。Sentinel-2有13个波段但不是每个波段都有必要用。B1和B10是大气校正用的气溶胶波段空间分辨率低基本不参与地物识别。我们选用B2蓝、B3绿、B4红、B5植被红边1、B8近红外、B11短波红外1、B12短波红外2共7个波段兼顾了光谱覆盖和实际应用需求。所有波段统一重采样到10米空间分辨率。第三步是滑窗切块。每景影像切分成256×256像素的图块步长128重叠50%。这样可以增加训练样本数量同时也让模型看到不同位置的上下文。切出来的图块再根据云掩膜做一次筛选丢掉云覆盖率高的图块。最终得到大约430万个有效图块作为预训练数据集。4.2 模型架构与预训练参数配置模型结构选用的是ViT-Base参数量约8600万patch大小为16×16。考虑到遥感影像的多波段输入第一个patch embedding层的输入通道数改为7对应选用的波段数。预训练的具体参数配置如下# 掩膜配置 mask_ratio 0.65 # 掩膜比例 mask_patch_size 16 # 掩膜patch大小与patch size对齐 mask_strategy semantic # 语义感知掩膜用SLIC超像素引导 # 优化器配置 optimizer AdamW base_lr 1.5e-4 # 基础学习率 weight_decay 0.05 betas (0.9, 0.95) # 训练调度 warmup_epochs 10 total_epochs 300 lr_schedule cosine # 余弦退火 batch_size 512 # 损失函数权重 lambda_mse 1.0 lambda_ssim 0.1 # 梯度裁剪 grad_clip_max_norm 1.0批次大小设512在8块A100 80GB显卡上跑每卡实际批次64。300个epoch大约需要训练9天左右。这里说一个心得如果算力紧张建议把总epoch数砍到150效果还在可接受范围内因为遥感数据本身冗余度高不像ImageNet那样需要极长的训练周期。4.3 训练过程中的观测指标训练的时候不能只盯着训练loss看还要多关注几个辅助指标来判断模型是否在正常学习。第一个是重建质量的可视化。每20个epoch存一批掩膜重建的pair图——左边是原始影像加掩膜中间是模型重建结果右边是真实影像。肉眼观察重建的边缘锐利度、纹理真实感。如果重建结果太模糊、边缘糊成一片说明模型在走模糊最小化的捷径需要增加SSIM损失的权重或者在网络结构上做调整。第二个是特征空间的线性探测准确率。在预训练的不同阶段把模型的特征提取层冻结只训练一个线性分类头去识别简单的遥感场景类型水体、城区、农田等记录准确率变化曲线。这个指标不依赖下游任务的完整微调流程能快速反映表征质量的变化趋势。我们观测到在前50个epoch里线性探测准确率上升很快150个epoch后开始趋于平台期。第三个是kNN准确率。这个更简单直接——取一批有标注的测试样本在特征空间里找最近邻的K个样本看类别是否一致。kNN准确率不需要训练任何额外参数能更纯粹地反映表征的聚类质量。4.4 下游任务微调效果验证预训练完成后我们在几个标准遥感下游任务上做了微调验证。以建筑物提取为例用WHU建筑物数据集进行微调。微调时的参数配置和预训练不同learning rate要降一到两个数量级# 微调配置 task building_segmentation base_lr 5e-5 decoder_learning_rate_multiplier 10 # decoder用更高学习率 total_epochs 50 batch_size 16decoder单独用更高学习率是一个实用技巧。预训练阶段训练的encoder已经有比较好的特征提取能力不需要大的更新幅度而decoder是从零初始化的需要更激进的学习率才能快速收敛。微调50个epoch后模型的mIoU从没有预训练时的38.5%提升到52.7%提升幅度达到14.2个百分点。对比直接使用ImageNet预训练权重做微调mIoU约47.3%遥感自监督预训练带来的增益依然有5.4个百分点。这说明遥感自监督预训练的表征确实比自然图像预训练的更贴合遥感任务的需求。5. 常见问题与排查技巧实录5.1 训练不收敛或Loss震荡这个现象在自监督训练的前期特别常见。如果loss在前10个epoch内没有明显下降先检查数据预处理——最常见的问题是多波段数据没有做合适的归一化某些波段的数值范围远超其他波段导致梯度被高值波段主导。解决办法是逐波段做min-max归一化或者z-score标准化确保各波段分布相对均衡。如果loss呈周期性震荡比如每隔几个epoch出现尖峰可能需要降低学习率或者检查batch size是否过大导致梯度噪声增大。我们遇到过batch size从256升到1024时loss震荡幅度明显变大的情况。降回512后恢复稳定。5.2 重建结果模糊、偏平滑这个问题的根源是模型在走捷径用输出的平均色去填充掩膜区域能有效降低MSE损失但学到的表征缺乏语义信息。排查重点在于掩膜策略。随机掩膜比例过高超过75%时可见上下文太少模型被迫猜测输出趋向保守的模糊结果。另外检查损失函数里是否只有MSE——建议叠加SSIM损失或者感知损失这两种损失对模糊输出有更强的惩罚信号。如果是对比学习路线出现表征塌缩所有样本映射到同一个点先检查温度系数是否太低尝试把温度从0.05升到0.1再看负样本数量是否足够对比学习的batch size不能太小至少256起步取决于你想区分的语义粒度。5.3 预训练效果无法迁移到下游任务这个问题比较隐蔽因为预训练loss可能表现得很好但微调后的下游任务性能没有明显提升。最常见的原因预训练任务和下游任务之间的语义鸿沟太大。比如预训练用的是掩膜重建像素级任务下游任务是语义分割像素级但语义密集分类这两个任务相对匹配通常效果不错。但如果下游任务是类似多标签场景分类图像级任务掩膜重建学到的局部细节特征可能用不上对比学习预训练的效果可能反而更好。我们的经验是先确定下游任务属于像素级还是图像级。像素级任务分割、变化检测选择掩膜重建路线图像级任务场景分类、检索选择对比学习路线。这个选择做对了迁移效果的差别可能达到5个百分点mIoU。另外检查预训练和微调阶段的数据分布是否一致。如果预训练数据以城区影像为主下游任务数据是大量农田区域迁移效果自然差。确保预训练数据覆盖下游任务涉及的主要地物类型。5.4 显存不足与训练效率优化遥感影像的patch数量比自然图像多得多而且多波段存储比三通道多一倍以上。ViT在长序列输入下的显存开销很大。显存不够的常规解决方案梯度累积、混合精度训练、梯度检查点。我们实测混合精度FP16在A100上可以节省约40%显存训练速度提升20%左右。如果batch size还是不够理想用梯度累积模拟更大的batch——保持batch size64不变梯度累积步数设为2等效于128的总batch。如果训练数据本身太大TB级别IO可能成为瓶颈。建议把数据全部转换为TFRecord或LMDB格式减少随机读取小文件的IO开销。我们的经验是大量小文件的随机读取比顺序读大文件慢5到10倍这个差距在分布式训练时被进一步放大。6. 遥感自监督预训练的评估方法与工具链6.1 评估指标的选择不能只看下游精度很多团队在评估自监督预训练效果时只看下游任务微调后的准确率或mIoU。这样做有盲区——下游任务的精度受微调策略影响很大同一个预训练权重用不同的微调学习率、不同的训练时长最终精度可能差好几个点这显然不能完全归因于预训练的质量。我们建议用三层评估体系第一层是预训练阶段的代理指标kNN准确率、线性探测准确率评估不需要微调直接检测特征质量第二层是标准下游任务的微调精度选取2到3个有代表性的任务第三层是数据效率曲线——在不同的标注比例5%、10%、25%、50%、100%下分别做微调画出精度随标注量变化的曲线。第三条最能反映自监督预训练的真实价值好的预训练权重在小标注量下优势尤其明显——标注数据越少预训练带来的增益越大这个特性对遥感领域至关重要。6.2 常用工具链从数据到训练的开源方案数据预处理阶段主力工具是GDAL和Rasterio。GDAL是老牌库功能全但API繁琐Rasterio封装得更友好处理Sentinel-2数据够用。做SLIC超像素分割用scikit-image就行速度尚可。训练框架方面PyTorch还是主流选择。分布式训练用PyTorch自带的DistributedDataParallel就够用比第三方的Horovod配置简单很多。搭配Hugging Face的transformers库可以快速搭建ViT结构或者直接用timm库里的vit_base_patch16。如果不想从零写自监督训练代码有两个成熟的开源项目可以直接参考一是OpenSelfSup现已并入OpenMMLab的mmselfsup提供了MAE、SimCLR、MoCo等多种自监督算法的完整实现支持自定义数据集二是微软的Swin Transformer官方仓库里面有SimMIM的实现掩膜重建路线的代码质量不错。数据记录和实验管理推荐用Weights Biases可以实时看loss曲线、重建图像、学习率变化。我们曾经用TensorBoard但WB在多人协作、实验对比方面的体验好很多。7. 2025年遥感自监督预训练的趋势判断7.1 多模态融合预训练开始走向主舞台遥感自监督预训练正在从单一影像模态向多模态融合方向发展。SAR影像和光学影像的融合、影像和辅助地理数据的融合、多时相序列的时序建模这些方向在2025年的研究热度明显上升。多模态自监督的底层逻辑是让模型学习不同模态之间的对应关系——SAR的纹理信息和光学影像的光谱信息之间存在互补模型能同时处理两者时对复杂地物的理解会更强。比如光学影像上云遮挡的区域SAR可以穿透云层获得地表信息模型如果学会用SAR信息辅助光学影像的表征在真实的遥感应用中有很大价值。7.2 动态掩膜策略与任务自适应约束固定掩膜比例和掩膜策略的做法正在被更灵活的设计替代。动态掩膜根据当前训练阶段模型的能力水平自适应调整任务难度——训练初期给相对简单的掩膜任务模型能力增强后逐步增加掩膜难度。这个思路跟课程学习curriculum learning一脉相承目的都是让模型沿着合理的难度曲线爬升。另一个趋势是在预训练中引入任务自适应的约束条件。比如针对某些下游任务如水体提取或建筑物检测预训练阶段就通过辅助约束让模型重点关注水体或建筑物的结构性特征。这比通用的无监督预训练更贴近应用需求效果也更有针对性。7.3 数据规模驱动的尺度效应遥感自监督预训练也在追逐更大规模的数据。SAE-2、DOPRA这类大规模遥感预训练数据集的出现让模型动辄在上亿图块上训练。规模带来的尺度效应在遥感领域同样存在——数据量每增加一个数量级模型的泛化能力和下游任务迁移效果都有可观测的提升。对于不具备大规模算力的团队一个可行的策略是直接使用公开发布的大模型预训练权重用自己的数据做持续预训练continue pretraining。这样可以利用前人大规模训练的红利同时结合本地数据和任务需求做微小调整。我们实测下来在开源权重基础上继续预训练5到10个epoch比自己从零训练100个epoch的效果更好而且省掉大量算力。从应用端来看2025年遥感大模型正在从论文里的benchmark走向工程落地。自监督预训练作为整个技术栈的地基其质量直接决定了上层应用的性能上限。我个人的体会是与其追着最新的模型结构跑不如花时间把预训练的数据、任务、评估这套基本功打磨扎实——地基打得牢后面换什么结构都能吃得开。最后分享一个实际操作中的小技巧保存预训练模型时不要把最后一个epoch的权重当作最终结果。自监督训练的loss曲线在末期往往有小幅波动最后一个epoch未必是特征质量最好的时刻。我们会在训练过程中保存每隔10个epoch的检查点训练结束后跑一遍下游任务的快速验证选效果最好的一个检查点留作最终使用。这个方法虽然麻烦一些但经常能多拿一两个点的下游精度提升在有标注数据紧张的项目里这一个点有时就能决定项目是否达标。
返回列表