这个仓库是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中最下方修改注释掉的部分来决定是否使用后处理。
如果您觉得本代码有用,可以考虑引用我们的工作:
TODO