这里写目录标题
- 赛题分析
- 数据分析
- 思路介绍
- 整体思路
- 数据处理
- 模型训练
- 模型预测
- 连通性后处理
- 结果对比
- 总结
赛题分析
地块分割本质上是个语义分割的问题,初赛考虑7类结果的平均IOU,复赛加入了对水体和道路类的连通性评判指标。IoU是一种测量在特定数据集中检测相应物体准确度的一个标准。只要是在输出中得出一个预测范围(bounding boxex)的任务都可以用IoU来进行测量
数据分析
类别总共有**(0)建筑、(1)耕地、(2)林地、(3)水体、(4)道路、(5)草地、(6)其他**
数据集中存在类别不均衡现象,(0)建筑、(4)道路和(5)草地类较少,(1)耕地、(2)林地和(3)水体类较多。
根据统计,只有分别约7%、/10%、/13%的图片满足建筑/道路/草地面积占比大于1%,有约71%、36%、31%的图片满足耕地/林地/水体大于1%
数据存在极度类别不均衡现象,常规的方法不适于训练。
尽管建筑类数据较少,但由于其地貌容易辨识,分类结果较准确;而道路和草地类则因为与其他类存在相似性,但训练数据不足,结果较差。提升模型分类能力(MIOU)的关键是解决类别不均衡问题,尤其是道路类和草地类。
思路介绍
整体思路
(1)直接的方式是使用针对IOU设计的损失函数进行re-weighting(如Lovasz-Softmax Loss、 Focal Loss等),但训练较慢,结果收敛不稳定。
(2)其次是可以针对特殊类设计模块,但结构复杂且周期长。
(3)最终我们借鉴了Adaboost的思想,用不同概率分布的训练数据训练一系列弱分类器,并通过投票融合得到强分类器。
这里之所以用类似,是因为与Adaboost不同,我们这里的数据并不是每轮增加错误样本权重,弱分类器的“弱”也是指特殊类别上弱,融合权重根据准确率与连通性需求人为规定。
数据处理
(1) 划分道路草地类正负样本(负样本指不包含该类的样本),多阶段逐步增加负样本比例(借鉴Bengio的curriculum learning的思想由简单到复杂训练,结果更好收敛);
(2) 在原数据的基础上,对道路草地类样本re-sampling,为了避免过拟合,对重采样数据进行多种数据增强(水平翻转+垂直翻转+放缩为0.75/0.875/1.125/1.25倍),与re-weighting相比,简单直接效果好;
(3) 针对建筑/道路/水体类转换处理得到二分类训练数据(同样进行数据增强并加入随机旋转90/180/270度),训练特殊的二分类器,加强模型对特殊类别的前景后景区分能力。在数据增强时,我们还进行了阈值筛选,仅对面积占比较大的图像进行相应处理,直觉上这些数据对训练更友好。
多分类模型只能识别笔直的道路,部分弯曲的道路难以识别。而二分类模型可以很好地识别弯曲的道路,并且连通性也更好。
模型训练
有了这些数据,我们训练了一系列以HRNet和OCRNet为backbone的模型。并且我们探索了SE、CBAM、scSE等attention module,最后是采用了提升效果最多的SE attention。
模型预测
在测试时,我们进行了多种数据增强,包括尺度放缩、水平/垂直翻转、90度倍数旋转(实际上,原图+水平翻转+垂直翻转+180度旋转足矣,更多的TTA提升效果很小)。得到这些预测后,我们不是进行softmax分数求和的软投票,而是逐像素少数服从多数的硬投票,并且用二分类预测逐优先级覆盖多分类预测,人为地规定了道路>水体>建筑>其他的优先级。这里我们利用多进程+numpy矩阵运算,大大减小了投票花费的时间。
连通性后处理
最后我们使用形态学处理进一步提高了连通性。
首先是用闭运算去连接断裂处以及中值滤波去除毛刺;
其次用面积和长度筛选阈值孤立像素团,用左边像素类别进行替换去除;
第三是设计了骨架连通性增强方案,提取出某类的骨架,并适当地膨胀腐蚀,保证连通的同时不会过度超出原始预测区域;
最后是设计了一个动态优先级算法,动态地进行不同类别的覆盖(主要考虑水体与道路类覆盖优先级)
膨胀:扩大图像中的物体,求局部最大值的操作,将图像与核进行卷积,计算核B覆盖区域的像素点的最大值,并把这个最大值赋值给参考点指定的元素。这样就会使图像中的高亮区域逐渐增长。
腐蚀:缩小图像中的物体,求局部最小值的操作,腐蚀操作会使图像中的高亮区逐渐减小。
开运算:先腐蚀运算,再膨胀运算
开运算总结:
(1)开运算能够除去孤立的小点,毛刺和小桥,而总的位置和形状不便。
(2)开运算是一个基于几何运算的滤波器。
(3)结构元素大小的不同将导致滤波效果的不同。
(4)不同的结构元素的选择导致了不同的分割,即提取出不同的特征。
闭运算:先膨胀运算,再腐蚀运算
闭运算总结:
(1)闭运算能够填平小湖(即小孔),弥合小裂缝,而总的位置和形状不变。
(2)闭运算是通过填充图像的凹角来滤波图像的。
(3)结构元素大小的不同将导致滤波效果的不同。
(4)不同结构元素的选择导致了不同的分割。
结果对比
最终的结果输出如上图右所示,可以看到最终的预测图更加平滑,类别噪点大大减少,并且保证了道路和水体较好的连通性。这里融合的结果更多考虑了连通性,因而可能存在“误判”的结果,实际环境下可考虑准确性和连通性的权衡,调整阈值和权值。
总结
方案最大的特点是将连通性问题转换为二分类问题解决,结果出奇地好,传统图像形态学后处理仍然可靠。无须针对性设计loss和module,分类器可用多种小模型,实际环境下并行处理也更快。来了新的类别,大可以训练二分类器简单投票,数十个迭代即可得到较强的分类器。