0
点赞
收藏
分享

微信扫一扫

第二届中国“高分杯”美丽乡村大赛第一名总结


​​第二届中国“高分杯”美丽农村大赛​​实验阶段从2019年1月底到2019年3月中旬。从我公布第一个baseline版本 ,2019年1月29日)到最后,已经通过大量实验,将精度由最初的0.2686提升到了0.4861,位于第三,与精度第一名的团队差0.0004。

比赛4月中旬结束,最终获得第一名。2020年2月10日补充部分理论。🤣

方案关键点

1. 波段选择和归一化

本次实验选择波段8、5、1进行波段组合,并由ArcGIS直接导出为RGB颜色,这样的话就得到一副RGB彩色图像,其归一化范围为0~255。本步骤可以代码实现,包括值的百分比截断和Gamma拉伸等。

第二届中国“高分杯”美丽乡村大赛第一名总结_归一化

2. 异常检测添加“其他”类别样本

采用了异常检测的思想,使用孤立森林(iForest、Isolation Forest)模型,将其他类当作“异常”类,从而增加第四类样本。我们以三类训练样本中心点取得大小为7x7x3的数据参与模型训练,在训练的高分影像数据上随机选点,并将预测值等于1也就是异常的样本加入训练集。该步骤选择了3000个“其他”类别地物样本。

第二届中国“高分杯”美丽乡村大赛第一名总结_归一化_02


选取过程中,其他/所有=3000/(3000+3104)=0.4945

第二届中国“高分杯”美丽乡村大赛第一名总结_归一化_03

3.构建分类模型

用了深度学习构建了浅层的CNN模型,在训练过程中,我们根据四类共5372个样本点生成批量数据,并做了裁剪、上下翻转、左右翻转、仿射变换等数据增强。此过程没有对颜色值等进行变换,因为颜色值是区分农作物的一个重要特征。

需要说明的是采样窗口的大小。农作物地物一般成块状、方体。采样窗口过大,会引入更多的其他类信息或噪声,造成精度的下降;采样窗口过小,则不能包含充分的如农田边界等信息。所以,根据实验效果和先验知识,最终选用了25x25x3的特征窗口作为卷积网络的输入。

第二届中国“高分杯”美丽乡村大赛第一名总结_归一化_04


第二届中国“高分杯”美丽乡村大赛第一名总结_数据_05


红框大小为25x25,可见已经较为充分的涵盖地物信息。

第二届中国“高分杯”美丽乡村大赛第一名总结_归一化_06

4.多进程全图预测

第二届中国“高分杯”美丽乡村大赛第一名总结_数据_07


1处表示采样窗口大小为size=25,2处表示左上角步长step,3处表示中心点的移动步长step。比如当step等于3时,中心点(center_x,center_y)每次移动步长也为3,此时我们标注[center_x - 1,center_y - 2)的区域。这样减弱了逐像素标注缓慢(即步长为1),以及大块标注出现的边缘锯齿现象。

5.分类后处理

实验仅仅使用ArcGIS提供的“空间分析工具-邻域分析-焦点统计”,统计类型为众数。可用代码实现,即众数滤波。

实验结果

第二届中国“高分杯”美丽乡村大赛第一名总结_数据_08


表6.3 焦点统计邻域大小与精度折线图,0表示没有进行焦点统计即原始预测输出。

第二届中国“高分杯”美丽乡村大赛第一名总结_异常检测_09


图6.5 焦点统计大小为151处理结果,局部

总结

这次比赛持续时间较长,我们的主要工作是在寒假。除了本文的方法,我们基于八个波段数据、使用了三分类+阈值的方法(如上文提到的baseline),分类效果并不好,我们认为这主要是因为缺少其他类的信息,模型不能学习有别与其他类的特征。在八波段的实验中,我们使用过深度方向的可分离2D卷积(SeparableConv2D)用于学习未归一化数据特征,效果并未有明显改善。由于数据的不平衡,我们使用了smote算法进行样本过采样,发现影响不大,大概是因为本实验的样本不平衡并不是很严重。除了IForest进行异常检测生成其他类别样本,我们也尝试过OneClassSVM和AutoEncoder,最终选择了表现更好的孤立森林。在我们面向对象的分类实验中,精度很快达到0.4526,但后处理优化提升空间不足。除此之外,我们还做过其他实验,限于篇幅,不再说明。

原始的训练影像有明显的拼接痕迹,在不同的区域有色彩差异,训练样本每类1000左右,在局部小区域的样本更容易被模型“忽略”。所以,使用特征提取+距离度量(如KNN)的方式进行实验似乎效果更好。我们使用了小型的卷积神经网络模型,模型训练表现出不稳定,收敛有时会到一个不好的极值,我们通过多次运行并选取F1值 较好的模型。事实上,虽然小型网络的损失函数的局部极小值更少,也比较容易收敛到这些局部极小值,但是这些最小值一般都很差,损失值很高。相反,大网络拥有更多的局部极小值,但就实际损失值来看,这些局部极小值表现更好,损失更小。因此,更合理的方法是使用较复杂的网络和一些减少过拟合(如正则化)的方法。

感谢主办方以及所有提供过帮助的人。

完整代码:https://github.com/lsh1994/tianchiorgame/tree/master/dianshi_gaofenbei_1901


举报

相关推荐

0 条评论