初赛名次:第42名
复赛名次:第22名
队伍名:把球给我
两名队员全部来自中国科学院大学
首先手工标记第一阶段2015年和2017的图像里的建筑物,将大图像划分成小图像,训练多个模型,识别出图像中的建筑物,不对测试集(第二阶段的图像)进行任何标注,直接在图像上预测,分别识别出2015和2017的建筑物,再将所得的两张建筑物图像相减,对结果文件进行边缘平滑和散点去除即可得出最后的结果。
-
切割成160*160、224*224、256*256大小的小图片训练模型
-
基于第一阶段的训练数据,分别训练了deeplabv2、resnet_fcn两个模型,分别在3种大小的图像上训练得到了5个模型(由于resnet最小图像限制为197,只用了224和256两种大小的图像),设定输出概率大于0.5判定为建筑物,小于0.5则为非建筑物
-
未在测试数据上进行建筑物标注,线下建筑物识别准确率82%左右,经过标注,建筑物识别准确率能达到90%。
-
复赛初始提交,泛化成绩0.742。经过数据标注和再训练,最终成绩0.829。
-
数据增强用于模型训练阶段,数据后处理是对预测结果进行散点消除和边缘腐蚀,用到Python的OpenCV模块的erdoe函数
- data_160、data_224、data_256分别存放对应大小的图像
- logs目录存放训练出的模型和验证集的图片预测输出,方便直接预览模型输出效果
- labels目录存放手工标记的第一阶段的建筑物标签,将大图像切割成960*960的小图像更清晰方便标记
- label_image.py:Python脚本标记建筑物
- utils.py:训练图像数据增广
- HazeRemoval.py:图像去雾,消除原图像中云雾的干扰
- data_process.py:数据预处理
- resnet50.py、model.py:基于resnet的FCN模型
- deeplabv2.py:deeplabv2模型
- train.py:训练模型
- evaluate.py:本地测试评测
- inference.py:预测测试数据
- pred_2017_building:线下建筑物识别结果文件
特别说明:
为了提高效率,我们将各个阶段得到的中间数据保存下来,在需要的时候可以直接读取,因此代码不能完整运行,需要根据实际情况分步运行。
由于包含数据的源文件太大,不方便上传,因此删掉了图像数据,只保留了代码文件。
- 该目录下需要有各个阶段的原始图像数据,运行data_process.py文件,切分图像。
- 根据需要修改data_process.py和train.py中的参数训练模型。
- 当正确格式的测试数据生成之后,直接运行inference.py可以得到预测结果命名为submit.tiff。