前言
大家好,我们是“0.4441警告”,很高兴在论坛和大家交流“华为云杯”2020人工智能创新应用大赛的比赛心得。我们团队的三名成员都来自西安交通大学电信学部信通学院的三名研究生。
本次比赛的任务是对遥感图像进行道路的语义分割,下面是我们将从网络框架、数据处理、模型训练、实验结果四个方面阐述我们的解决方案。
一、网络框架介绍
本次比赛中,我们队伍选用的网络为Unet的变体,主要改动有两个方面:
backbone也即encoder部分使用了在ImageNet上预训练的resnet34网络,decoder部分沿用原unet的部分;
bridge部分增加了输入和输出通道均为512的残差+BN+ReLU模块。
二、数据预处理
本次比赛中,我们的数据处理部分主要也是分为两部分,具体如下:
使用大赛baseline中cut_data.py文件将两张大图进行有重叠的剪裁,得到xxx张1024×1024的小图,stride(128),也即重叠1/8;
把1中得到的全黑的图片(无目标)以及全白的标签(无目标)删除,接着对标签进行反转,即将路的像素值变为255 ,背景像素值变为0。这样做的目的是:之后进行旋转和平移等图像增强时,不会让标签旋转而引入噪声(原黑色部分为道路)。
三、训练策略
训练方面我们主要采用主要从数据增强和模型调优两个方面说明:
1. 数据增强
本次比赛中我们使用了多种数据增强方式,主要有以下几种:
高斯模糊
我们使用了模糊核大小为11的高斯模糊,以0.5的概率对图像进行模糊处理;Gamma变换
我们观察发现,由于光照等因素的影响,不同遥感图像之间的对比度存在一定的差异,因此我们采用max(0.65, random(0,1)*2)的方式,以0.5为概率对图像进行gamma变换,结果发现此增强手段对模型性能提升很有帮助;色彩变换
对图像的HSV通道进行一定程度的扰动;垂直、水平翻转,90度旋转
为了适应遥感图像中道路目标具有旋转不变性,因此有必要进行一定的旋转和翻转变换;归一化处理
最后,我们将通过增强的图像归一化到-1.6 - 1.6的范围之间,这样处理可使后面训练更加便捷。
2. 模型训练
此次比赛我们的训练策略主要分为两个阶段,分别时粗训练和最优模型微调两部分,详细方式如下:
粗训练
训练集:前文第二部分数据预处理所得到的1789张训练图片
验证集:前文第二部分数据预处理所得到的386张训练图片
训练设备:华为云,v100
Batch_size: 16
训练epoch:80
初始学习率和更迭策略:1e-3,每5epoch衰减为原来的0.9倍
优化器:Adam
Loss:0.5dice loss + 0.5bce loss
训练结果选择:根据训练结果大致选择epoch 60左右的结果,根据规律在验证集和训练集loss相同的附近的局部最优点为最佳结果。
最优模型微调
训练集:前文第二部分数据预处理所得到训练集+验证集图片,一共1789+386=2175张
验证集:前文第二部分数据预处理所得到的386张验证集
训练设备:本地,2080ti
Batch_size: 4
训练epoch:10
初始学习率和更迭策略:1e-5,每5epoch衰减为原来的0.9倍
优化器:Adam
Loss:0.5dice loss + 0.5bce loss
训练结果选择:根据规律在验证集和训练集loss相同的附近的局部最优点为最佳结果。
四、测试增强
本次比赛中,为了提高模型推理的效果,我们还进行了测试增强策略,主要包括以下三个部分,具体如下:
滑动步长选择
由于推理文件中图片也需要进行裁剪,此处我们选择使用896步长来进行图片的裁剪。使用原图的8种不同变换进行推理
此处将原图与其旋转90°的图进行翻转,镜像等操作得到一共8种图片,使用同一模型进行预测,得到8组结果;结果的阈值选择
对于前文得到的8组结果,我们首先对图片进行sigmoid归一化;然后对于滑动中重叠的图片部分取每个像素点的最大值作为该点的值;最后使用阈值1进行二值化处理。
本文首发 AI Gallery: https://marketplace.huaweicloud.com/markets/aihub/modelhub/detail/?id=8fe51502-0373-4acf-ab89-e9efd53c0b76
本赛事赛题:https://competition.huaweicloud.com/information/1000041322/circumstance
决赛获奖选手分享集锦:https://competition.huaweicloud.com/information/1000041322/share
