SkySense++

September 18, 2025 Β· View on GitHub

This repository is the official implementation of the paper "SkySense++: A Semantic-Enhanced Multi-Modal Remote Sensing Foundation Model Beyond SkySense for Earth Observation".

πŸ“’ Latest Updates

πŸ”₯πŸ”₯πŸ”₯ Last Updated on 2025.09.15 πŸ”₯πŸ”₯πŸ”₯

  • [2025.09.15] Add a 🌍 project page.
  • [2025.08.04] Our work has been published in Nature Machine Intelligence.
  • [2025.03.23] Code for preprocessing/pretraining/application and model weights for models have been uploaded.
  • [2025.03.14] updated optical images of JL-16 dataset in Huggingface.
  • [2025.03.12] updated sentinel-1 images and labels of JL-16 dataset in Zenodo.
  • [2025.03.09] created repo in Zenodo, datasets are uploading.
  • [2024.11.13] updated details of pretrain and evaluation data.

Pretrain Data

RS-Semantic Dataset

We conduct semantic-enhanced pretraining on the RS-Semantic dataset, which consists of 13 datasets with pixel-level annotations. Below are the specifics of these datasets. (also see in Zenodo).

DatasetModalitiesGSD(m)SizeCategoriesDownload Link
Five Billion PixelsGaofen-246800x720024Download
PotsdamAirborne0.056000x60005Download
VaihingenAirborne0.052494x20645Download
DeepglobeWorldView0.52448x24486Download
iSAIDMultiple Sensors-800x800 to 4000x1300015Download
LoveDASpaceborne0.31024x10247Download
DynamicEarthNetWorldView0.31024x10247Download
Sentinel-2*1032x32
Sentinel-1*1032x33
Pastis-MMWorldView0.31024x102418Download
Sentinel-2*1032x32
Sentinel-1*1032x33
C2Seg-ABSentinel-2*10128x12813Download
Sentinel-1*10128x128
FLAIRSpot-50.2512x51212Download
Sentinel-2*1040x40
DFC20Sentinel-210256x2569Download
Sentinel-110256x256
S2-naipNAIP1512x51232Download
Sentinel-2*1064x64
Sentinel-1*1064x64
JL-16Jilin-10.72512x51216Download
Sentinel-1*1040x40

* for time-series data.

RS-Representation Dataset

The pretraining list is in the Zenodo- rep_data_list.tar. The download and process scripts are in tools/pretraining_data_builder.

EO Benchmark

We evaluate our SkySense++ on 12 typical Earth Observation (EO) tasks across 7 domains: agriculture, forestry, oceanography, atmosphere, biology, land surveying, and disaster management. The detailed information about the datasets used for evaluation is as follows.

DomainTask typeDatasetModalitiesGSDImage sizeDownload LinkNotes
AgricultureCrop classificationGermanySentinel-2*1024x24Download
ForesetryTree species classificationTreeSatAI-Time-SeriesAirborne,0.2304x304Download
Sentinel-2*106x6
Sentinel-1*106x6
Deforestation segmentationAtlanticSentinel-210512x512Download
OceanographyOil spill segmentationSOSSentinel-110256x256Download
AtmosphereAir pollution regression3pollutionSentinel-210200x200Download
Sentinel-5P2600120x120
BiologyWildlife detectionKenyaAirborne-3068x4603Download
Land surveyingLULC mappingC2Seg-BWGaofen-610256x256Download
Gaofen-310256x256
Change detectiondsifn-cdGoogleEarth0.3512x512Download
Disaster managementFlood monitoringFlood-3iAirborne0.05256 Γ— 256Download
C2SMSFloodsSentinel-2, Sentinel-110512x512Download
Wildfire monitoringCABUARSentinel-2105490 Γ— 5490Download
Landslide mappingGVLMGoogleEarth0.31748x1748 ~ 10808x7424Download
Building damage assessmentxBDWorldView0.31024x1024Download

* for time-series data.

Implementation Code

Structure

This project mainly contains the following parts.

./
β”œβ”€β”€ antmmf/                             # antmmf framework code
β”œβ”€β”€ configs/                   
β”‚   β”œβ”€β”€ eval_skysense_pp_flood3i.yml    # eval cfg on flood3i                
β”‚   └── pretrain_skysensepp.yml         # pretrain cfg
β”œβ”€β”€ finetune/                           # finetuning code
β”‚   β”œβ”€β”€ configs/                        # finetuning configs
β”‚   β”œβ”€β”€ mmseg/                          # mmseg library
β”‚   β”œβ”€β”€ requirements/                   # mmseg install requirements folder
β”‚   β”œβ”€β”€ requirements.txt                # mmseg install requirements
β”‚   β”œβ”€β”€ setup.py                        # mmseg setup file
β”‚   └── tools/                          # mmseg utils
β”œβ”€β”€ lib/                                # model implementation
β”‚   β”œβ”€β”€ datasets/                       # datasets for evaluation
β”‚   β”œβ”€β”€ evaluation/                     # evaluation code
β”‚   β”œβ”€β”€ models/                         # model architecture
β”‚   β”œβ”€β”€ predictors/                     # inference code
β”‚   β”œβ”€β”€ task/                           # task code
β”‚   β”œβ”€β”€ trainer/                        # trainer code
β”‚   β”œβ”€β”€ utils/                          # library code
β”‚   └── __init__.py                     # packages init file
β”œβ”€β”€ pretrain/                           # pretrain ckpts
β”œβ”€β”€ tools/                              # tools ckpts
β”‚   β”œβ”€β”€ pretraining_data_builder        # pretraining dataset builder
β”‚   β”œβ”€β”€ run_1shot_flood3i.sh            # datasets for evaluation
β”‚   β”œβ”€β”€ run_ft_atlantic.sh              # run ft script
β”‚   β”œβ”€β”€ run_pretrain.sh                 # run pretrain script
β”‚   └── run.py                          # Program entry point
└── readme.md                           # project readme

Environment

Each machine for implementating the pretraining or fintuning are with Alibaba Group Enterprise Linux(7.2) and Python 3.8.10. The pretraining and finetuning code are implemented on severs with Intel(R) Xeon(R) Platinum 8369B CPU @ 2.90GHz and Nvidia A100 GPUS.

Pretraining

To run our pretraining code, please install dependency packages. (Instalazation takes about 14 minutes on a node with Intel(R) Xeon(R) Platinum 8369B CPU @ 2.90GHz and 8 A100 GPUs.)

torch==1.13.1
atorch==0.1.3
torchvision==0.14.1
mmcv-full==1.7.1
mmsegmentation==0.30.0
mmcls==0.25.0
timm==0.6.13
gdal==3.4.0
scikit-image==0.19.3

Step1. Install the above packages and clone antmmf framework:

git clone https://github.com/alipay/Ant-Multi-Modal-Framework.git antmmf/

Step2. Download the pretraining datasets in Zenodo and orgnize them as follows:

pretrain_datasets
β”œβ”€β”€ dynamic-mm                          # multi-modal dynamic-mm datasets
β”‚   β”œβ”€β”€ images_hr                       # hr images
β”‚   β”œβ”€β”€ images_s2                       # sentinel-2 images
β”‚   β”œβ”€β”€ images_s1                       # sentinel-1 images
β”‚   β”œβ”€β”€ labels                          # segmentation annotations
β”‚   β”œβ”€β”€ dynamic-mm_train.json           # train list file
β”‚   └── dynamic-mm_val.json             # val list file
β”œβ”€β”€ fbp                                 # single-modal fbp datasets
β”‚   β”œβ”€β”€ images                          # input gaofen-2 images
β”‚   β”œβ”€β”€ labels                          # segmentation annotations
β”‚   β”œβ”€β”€ fbp_train.json                  # train list file
β”‚   └── fbp_val.json                    # val list file
└── ......                       

The <dataset>_<train/val>.json is used to read information for training and validation, with a unified organizational format:

[
  {
    "hr_path": "dataset_name/images_hr/<img_name>.png", // hr info c,h,w
    "s2_path": ["dataset_name/images_s2/<img_name>_20240101.npz", "dataset_name/images_s2/<img_name>_20240103.npz"], // s2 c,h,w
    "s1_path": ["dataset_name/images_s1/<img_name>_20240104.npz", "dataset_name/images_s1/<img_name>_20240108.npz"], // s1 c,h,w
    "target_path": "dataset_name/labels/<img_name>.png", // annotation info
    "type": "dataset_name", // dataset_name
    "classes": [            // Included categories
            0,
            2,
            4,
            5
        ]
  },
  {
    ...
  }
]

Step3. Download the pretraining weights of SkySense here and move it to pretrain/

Step4. Run the pretrain code on 4 nodes (each node with 8 A100 gpus):

bash tools/run_pretrain.sh <node_rank:0-3> <master_ip_address>

For example, if the ip adress of master node is 192.168.112.10, the command for node 1 is:

bash tools/run_pretrain.sh 1 192.168.112.10

Downstream 1-shot application

Requirments

To run our code, please install dependency packages. ( Instalazation takes about 10 minutes on a sever with Intel(R) Xeon(R) Platinum 8369B CPU @ 2.90GHz and 2 A100 GPUs.)

torch==1.13.1
atorch==0.1.3
torchvision==0.14.1
mmcv-full==1.7.1
mmcls==0.25.0
mmsegmentation==0.30.0
timm==0.6.13
gdal==3.4.0
scikit-image==0.19.3

Run steps

step1. Clone antmmf framework. and install the above packages:

git clone https://github.com/alipay/Ant-Multi-Modal-Framework.git antmmf/

step1. Download the flood-3i dataset (Images.zip/Semantic_mask.zip at here, val.txt at here. Testing dataset should be organized as follows:

eval_datasets/
└── flood3i/
    β”œβ”€β”€ Images/
    β”‚   β”œβ”€β”€ 10165_0_2.jpg
    β”‚   β”œβ”€β”€ 10165_1_0.jpg
    β”‚   └── ...
    β”œβ”€β”€ Semantic_mask/
    β”‚   β”œβ”€β”€ 10165_lab_0_2.png
    β”‚   β”œβ”€β”€ 10165_lab_1_0.png
    β”‚   └── ...
    └── val.txt

step2. Using the above pretraining wieights or download the pretrained model weights here.

step3. Run the script for evaluating 1-shot performance on flood-3i:

bash tools/run_1shot.sh <gpu_idx> flood-3i(dataset_name)

Downstream finetuning application

Requirments

We build our fine-tuning application code on the openmmlab framework.

To run our code, please install dependency packages. ( Instalazation takes about 10 minutes on a sever with Intel(R) Xeon(R) Platinum 8369B CPU @ 2.90GHz and 2 A100 GPUs.)

torch==1.13.1
torchvision==0.14.1
mmcv-full==2.1.0
mmpretrain==1.2.0
mmsegmentation==1.2.2
mmdetection==3.3.0
timm==0.6.13
gdal==3.4.0
scikit-image==0.19.3

Run steps

Step1. Install the mmsegmentation framework under the instrction in here

Step2. Download the evaluation datsets. We take Atlantic dataset for deforestation segmentation as an example. Download the Atlantic dataset at here. Spliting json files of evaluation framwork here.

../rs_datasets/deforestation_atlantic/
--
β”œβ”€β”€ deforestation_atlantic_test.json
β”œβ”€β”€ deforestation_atlantic_train.json
β”œβ”€β”€ deforestation_atlantic_val.json
β”œβ”€β”€ Test/
β”‚   β”œβ”€β”€ image/
β”‚   └── label/
β”œβ”€β”€ Training/
β”‚   β”œβ”€β”€ image/
β”‚   └── label/
└── Validation/
    β”œβ”€β”€ image/
    └── label/

Step3. Use your pretrained model weights or download the model weights: here

Step4. Run the finetuning script. We take the Atlantic dataset as an example:

bash tools/run_finetune.sh configs/atlantic.py

Acknowledgments

This projects are mainly built on the following projects:

License

The pre-trained model weight and pre-training code are only available for the non-commercial research. For any commercial use or cooperation, please contact Yansheng Li at Wuhan University (e-mail: yansheng.li@whu.edu.cn).

Citation

If you find our repo useful, please consider giving a star and citation:

@article{wu2025semantic,
  author       = {Wu, Kang and Zhang, Yingying and Ru, Lixiang and Dang, Bo and Lao, Jiangwei and Yu, Lei and Luo, Junwei and Zhu, Zifan and Sun, Yue and Zhang, Jiahao and Zhu, Qi and Wang, Jian and Yang, Ming and Chen, Jingdong and Zhang, Yongjun and Li, Yansheng},
  title        = {A semantic‑enhanced multi‑modal remote sensing foundation model for Earth observation},
  journal      = {Nature Machine Intelligence},
  year         = {2025},
  doi          = {10.1038/s42256-025-01078-8},
  url          = {https://doi.org/10.1038/s42256-025-01078-8}
}

@inproceedings{guo2024skysense,
    author    = {Guo, Xin and Lao, Jiangwei and Dang, Bo and Zhang, Yingying and Yu, Lei and Ru, Lixiang and Zhong, Liheng and Huang, Ziyuan and Wu, Kang and Hu, Dingxiang and He, Huimei and Wang, Jian and Chen, Jingdong and Yang, Ming and Zhang, Yongjun and Li, Yansheng},
    title     = {SkySense: A Multi-Modal Remote Sensing Foundation Model Towards Universal Interpretation for Earth Observation Imagery},
    booktitle = {Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR)},
    month     = {June},
    year      = {2024},
    pages     = {27672-27683}
}

@inproceedings{zhu2025skysenseo,
  title={Skysense-o: Towards open-world remote sensing interpretation with vision-centric visual-language modeling},
  author={Zhu, Qi and Lao, Jiangwei and Ji, Deyi and Luo, Junwei and Wu, Kang and Zhang, Yingying and Ru, Lixiang and Wang, Jian and Chen, Jingdong and Yang, Ming and others},
  booktitle={Proceedings of the Computer Vision and Pattern Recognition Conference},
  pages={14733--14744},
  year={2025}
}

@article{luo2024skysensegpt,
  title={Skysensegpt: A fine-grained instruction tuning dataset and model for remote sensing vision-language understanding},
  author={Luo, Junwei and Pang, Zhen and Zhang, Yongjun and Wang, Tingzhu and Wang, Linlin and Dang, Bo and Lao, Jiangwei and Wang, Jian and Chen, Jingdong and Tan, Yihua and others},
  journal={arXiv preprint arXiv:2406.10100},
  year={2024}
}

Star History

Star History Chart