RingMo: A Remote Sensing Foundation Model with Masked Image Modeling论文
Deep learning approaches have contributed to the rapid development of Remote Sensing (RS) image interpretation.The most widely used training paradigm is to utilize ImageNet pre-trained models to process RS data for specified tasks.However, there are issues such as domain gap between natural and RS scenes, and the poor generalization capacity of RS models. It makes sense to develop a foundation model with general RS feature representation. Since a large amount of unlabeled data is available, the self-supervised method has more development significance than the fully supervised method in remote sensing. However, most of the current self-supervised methods use contrastive learning, whose performance is sensitive to data augmentation, additional information, and selection of positive and negative pairs. In this paper, we leverage the benefits of generative self-supervised learning for RS images, and propose a Remote sensing foundation Model framework called RingMo, which consists of two parts. First, a large-scale dataset is constructed by collecting two million RS images from satellite and aerial platforms, covering multiple scenes and objects around the world. Second, we propose an RS foundation model training method designed for dense and small objects in complicated RS scenes. We show that the foundation model trained on our dataset with RingMo method achieves state-of-the-art on eight datasets across four downstream tasks, demonstrating the effectiveness of the proposed framework. Through in-depth exploration, we believe it is time for RS researchers to embrace generative self-supervised learning and leverage its general representation capabilities to speed up the development of RS applications.
深度学习方法促进了遥感图像解译的快速发展。最广泛使用的训练范例是利用ImageNet预训练模型来处理RS数据以完成指定的任务。然而,自然场景与遥感场景之间存在领域差距、遥感模型泛化能力差等问题。开发具有通用RS特征表示的基础模型是有意义的。由于存在大量的未标记数据,自监督方法比全监督方法在遥感领域具有更大的发展意义。然而,目前大多数自监督方法采用对比学习,其性能对数据增强、附加信息和正负对的选择很敏感。在本文中,我们利用RS图像生成式自监督学习的优势,提出了一个名为RingMo的遥感大模型框架,该框架由两部分组成。首先,从卫星和航空平台收集200万张覆盖全球多个场景和目标的遥感图像,构建大规模数据集。其次,提出了一种针对复杂遥感场景中密集小目标的遥感基础模型训练方法。我们表明,使用RingMo方法在我们的数据集上训练的基础模型在跨四个下游任务的八个数据集上达到了最先进的水平,证明了所提出框架的有效性。通过深入探索,我们认为是时候让RS研究人员接受生成式自监督学习,并利用其通用表示能力来加速RS应用的开发。
加载ImageNet预训练的权值的一般RS图像解译范式存在的问题:
自监督方法可以利用大量的未标记数据,是RS大模型建模的主流方法。自监督常用方法:
统计信息
数据集中的部分图像选自遥感领域的公开数据集,其他图像来自中国高分二号卫星。然后将不同平台捕获的图像裁剪为448 × 448像素,得到多种分辨率和场景的图像2,096,640幅。数据集的复杂特征可以使基础模型学习到更鲁棒的特征表示,更适合和特定于遥感领域的下游任务。我们的数据集图像数量最多,数据集的分辨率变化范围非常大,从0.3m到30m不等。
捕获来源
所利用的图像来自不同的传感器,具有不同的成像参数。与现有的其他遥感基础模型训练任务数据集相比,该数据集的图像同时来自航空和卫星平台:JL-1、GF-2、Ganfen satellites、GeoEye、WorldView、QuickBird、IKONOS、SPOT等。航空影像与卫星影像之间存在差异,使基础模型表现更好。卫星图像的拍摄角度往往是垂直的,而航空图像的拍摄角度则包含了倾斜的情况。航空图像的图像质量通常高于卫星图像,但卫星图像的覆盖范围比航空图像大。
场景分布
利用的图像覆盖了亚洲、欧洲、北美、南美、非洲、大洋洲六大洲的不同场景。在不同的季节和时间拍摄的图像也包括在内。图像之间的光照情况也不同,如光照强度、拍摄时间造成的差异、阴影造成的阴影等。
重建效果展示
官方GitHub代码
git clone https://gitee.com/mindspore/ringmo-framework.git
python ringmo_framework/datasets/tools/get_image_ids.py --image /home/ma-user/work/AID --file /home/ma-user/work/AID/train_ids.json
cd ringmo-framework/
python pretrain.py --config config/ringmo/pretrain_ringmo_swin_base_p4_w6_aircas_192_200ep.yaml --use_parallel False
从输出日志可以看到相关参数信息
2023-05-10 11:37:24,102 - aicc - INFO - 网络参数量:86 M.
2023-05-10 11:37:25,305 - aicc - INFO - 模型参数量:258.0 M.
python finetune.py --config config/ringmo/finetune_ringmo_swin_base_p4_w7_nwpu_224_200ep.yaml --use_parallel False
[INFO] 2023-05-26 23:09:26,012 [/home/ma-user/work/ringmo-framework-master/ringmo_framework/monitors/monitor.py:111] epoch_end: epoch[0], epoch time: 445.94s, per step time: 17.8375s, loss=2.983506, fps=1.79, accuracy=0.021891, eval_cost=100.11
[INFO] 2023-05-27 00:45:30,035 [/home/ma-user/work/ringmo-framework-master/ringmo_framework/monitors/monitor.py:111] epoch_end: epoch[199], epoch time: 16.47s, per step time: 0.6587s, loss=2.444968, fps=48.58, accuracy=0.109453, eval_cost=12.70
共微调训练200轮,准确率从0.021891提升到0.109453,最终精度并不高
原预训练使用的数据为imagenet-1K,训练数据达到100万级别,我们进行预训练的数据只有1万,预训练数据太少。并且使用的微调数据为NWPU-RESISC45,共有31500张遥感图像,也远远大于我们微调的1000张图像,这可能是精度不高的原因。
python eval.py --config config/ringmo/finetune_ringmo_swin_base_p4_w7_nwpu_224_200ep.yaml --eval_path output/rank_0/checkpoint/finetune-ringmo-swin-base-p4-w7-224_rank_0-16500_25.ckpt --use_parallel False
输出Top1精度
[INFO] 2023-05-31 10:33:14,717 [eval.py:70] main: Top1 accuracy=0.109453
官方代码中并没给出相关下游任务的代码使用