Skip to content

sunwillz/tianchi_land_monitor

Repository files navigation

说明文档

1 队伍简介

初赛名次:第42名

复赛名次:第22名

队伍名:把球给我

两名队员全部来自中国科学院大学

2 算法思路

首先手工标记第一阶段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函数

3 目录和文件说明

  1. data_160、data_224、data_256分别存放对应大小的图像
  2. logs目录存放训练出的模型和验证集的图片预测输出,方便直接预览模型输出效果
  3. labels目录存放手工标记的第一阶段的建筑物标签,将大图像切割成960*960的小图像更清晰方便标记
  4. label_image.py:Python脚本标记建筑物
  5. utils.py:训练图像数据增广
  6. HazeRemoval.py:图像去雾,消除原图像中云雾的干扰
  7. data_process.py:数据预处理
  8. resnet50.py、model.py:基于resnet的FCN模型
  9. deeplabv2.py:deeplabv2模型
  10. train.py:训练模型
  11. evaluate.py:本地测试评测
  12. inference.py:预测测试数据
  13. pred_2017_building:线下建筑物识别结果文件

特别说明

为了提高效率,我们将各个阶段得到的中间数据保存下来,在需要的时候可以直接读取,因此代码不能完整运行,需要根据实际情况分步运行。

由于包含数据的源文件太大,不方便上传,因此删掉了图像数据,只保留了代码文件。

  1. 该目录下需要有各个阶段的原始图像数据,运行data_process.py文件,切分图像。
  2. 根据需要修改data_process.py和train.py中的参数训练模型。
  3. 当正确格式的测试数据生成之后,直接运行inference.py可以得到预测结果命名为submit.tiff。