这个仓库是earth-insights团队在ISPRS2024第一技术委员会多模态遥感应用算法智能解译大赛中的解决方案,我们的决赛结果在所有团队的全部提交中精度排名第一,总成绩排名第三。
我们在比赛中使用Python 3.8和Pytorch1.8.1, 您可以使用pip install -rrequirements.txt安装环境。
我们使用CLIP方法预训练的ConvNeXt模型,以convnext-large为例,预训练权重下载地址为https://huggingface.co/laion/CLIP-convnext_large_d_320.laion2B-s29B-b131K-ft-soup/tree/main. 您可以将它们下载(.bin文件)并手动存放于pretrain目录下面。
您也可以使用百度网盘下载我们使用到的预训练权重:
链接:https://pan.baidu.com/s/13DVT5JIFPPd7yCwWeUZyuQ?pwd=wj92 提取码:wj92
您可以依照自己的需求任意的指定数据集的存放路径,并在train_all_data.py或其他train代码中修改数据集路径。例如以下路径:
dataset_tmp
├── T1
│ ├── xxx第二期影像.tif
│
├── T2
| ├── xxx第三期影像.tif
|
├── gt
| ├── xxx.tif
在比赛中,我们实验了五折交叉验证和全部数据训练两种方式:
train.py 👉 仅训练五折中的第一折
train_kfold.py 👉 五折训练
train_all_data.py 👉 不划分训练和测试集,直接训练全部的数据(保存train loss最低的权重)
# Run the training script
bash code/train.sh
我们同样探索了多模型集成策略,实验表明,使用hrnet w48和convnext large融合后可以取得较高的精度。您可以通过修改训练代码中的load_model方法来更改需要训练的模型
您可以尝试更多的backbone,只要它们被0.6.12版本中的timm库支持。您可以使用tools/get_timm_list.py来模糊查找支持的backbone。
我们将本次比赛使用的权重上传至百度网盘,您可以直接下载它们进行推理:
链接:https://pan.baidu.com/s/1q2D81M6cdNGysOd6zWTx3A?pwd=ycv4 提取码:ycv4
# Run the testing script (docker)
python run.py /input_path /output_path
# Run the testing script (local)
python infer.py
后处理在本次比赛中能够带来微小的涨点,我们使用了去除离群图斑来优化结果。但是该策略在决赛中会影响时间分数,因此它的使用需要取舍。您可以在infer.py或run.py中最下方修改注释掉的部分来决定是否使用后处理。
如果您觉得本代码有用,可以考虑引用我们的工作:
@article{opencd,
title = {{Open-CD}: A Comprehensive Toolbox for Change Detection},
author = {Li, Kaiyu and Jiang, Jiawei and Codegoni, Andrea and Han, Chengxi and Deng, Yupeng and Chen, Keyan and Zheng, Zhuo and
Chen, Hao and Zou, Zhengxia and Shi, Zhenwei and Fang, Sheng and Meng, Deyu and Wang, Zhi and Cao, Xiangyong},
journal= {arXiv preprint arXiv:2407.15317},
year={2024}
}