解决方案

  1. 基础模型采用UNet++网络模型,backbone采用ImageNet预训练好的timm-efficientNet-b8和efficientNet-b7,并在模型中添加scse注意力机制。
  2. 训练好4个模型进行结果融合。
  3. 采用FastAI框架进行代码编写。
  4. 4个融合模型中包含一个3通道数据训练模型。
  5. 4个模型分别为,(1)4通道,数据增强,b7,不加注意力(2)4通道,原始数据,b7,不加注意力(3)3通道,数据增强,b7,不加注意力(4)4通道,数据增强,b8,注意力。
  6. 操作系统版本:Linux version 5.8.0-29-generic (buildd@lgw01-amd64-039) (gcc (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0, GNU ld (GNU Binutils for Ubuntu) 2.34) #31~20.04.1-Ubuntu SMP Fri Nov 6 16:10:42 UTC 2020
  7. python版本:3.7.9

数据处理

  1. 对原始数据随机提出3000张作为测试集不参与训练。
  2. 对原始标签值进行减1。
  3. 对urban_area、countryside、construction、grass和bareland类别数据较少的数据进行随机crop扩充。
  4. 利用FastAI自带的数据增强库对训练数据进行增强。
  5. 划分20%作为验证集。

训练策略

  1. 采用fit_flat_cos训练模式训练80轮。
  2. 采用混合精度训练。
  3. 采用Adam优化器。
  4. 在训练过程中保存miou最好成绩的模型。

复现流程

  1. 执行train文件夹下的data.py文件,将数据和标签分开。
  2. 执行train文件夹下的crop_img.py文件,对数据进行crop扩充和划分。
  3. train.sh和test.sh中都加入了运行data.py和crop_img.py文件,只需要执行一次。
  4. 根据模型需要,修改train文件下的train.py文件,进行训练。
  5. 由于采用模型融合,需要得到每个模型中的每一类别的权重,首先记录下每个模型测试A榜的miou结果。
  6. 执行test文件夹下的test.py文件,每个模型在3000张测试集上进行测试,保存每个模型每个类别的miou结果,以A榜miou结果占0.6,测试结果占0.4进行miou结果融合,利用最终的miou结果进行模型融合,得到最终的测试结果,预测结果需加1。