349. Understanding Clouds from Satellite Images | understanding_cloud_organization
大家好,祝贺所有获奖者,也感谢 Kaggle 提供了这么精彩的比赛。
在这里,我将给出问题的通用解决方案,我会谈谈那些有帮助的技术以及那些没有奏效的想法。
最近,我参加了 Kaggle 的分割竞赛 SIIM-ACR 气胸分割 和 Severstal: 钢材缺陷检测。因此,我在解决此类问题方面积累了相当丰富的经验。我已经有了一个大概的概念,知道什么可能行得通,什么行不通。
观察数据时,我发现图像的尺寸为 1400x2100,直接将这样的数据输入网络并不是一个好主意。当然,可以将图像缩小 2 倍或 4 倍,但显然我们肯定会丢失数据中的一些信息。
我想出了一个折衷方案。使用一个小型网络——压缩器,从数据中提取显著特征并减小图像尺寸。结构大致如下:

为了构建模型,我使用了 Keras 2、Tensorflow 1.4 和库 https://github.com/qubvel/segmentation_models(非常感谢 Pavel Yakubovskiy)。
为了构建有效的集成模型,我们必须使用预测之间相关性尽可能低的模型。我决定使用以下模型参数组合:

所有模型都使用了 Unet 解码器。
训练参数:
优化器:Adam
损失函数:FocalLoss
批次大小:4
强力数据增强:
Hflip(水平翻转), VFlip(垂直翻转), Equalize(直方图均衡化), CLAHE(对比度受限的自适应直方图均衡化), RandomBrightnessContrast(随机亮度对比度), RandomGamma(随机伽马), Cutout(遮挡)
ShiftScaleRotate(平移缩放旋转), GridDistortion(网格畸变), GaussNoise(高斯噪声)
在双周期学习率策略下训练 30 个 Epoch。大致形状如下:

为了训练模型,我使用了 2xP3.2 Amazon 实例。
后处理。
对所有模型的预测结果取平均 -> 得到原始概率图。
所有基于 DICE 指标的对象分割任务对假阳性错误都非常敏感。在某些情况下,训练一个单独的分类器模型来检测图像中是否存在掩码非常有帮助。在我的例子中,分类器帮助不大,我使用了“三重规则”方法,这是我第一次在 SIIM-ACR 气胸分割 比赛的第一名解决方案中看到的。
非常感谢 Aimoldin Anuar 提供的想法 https://www.kaggle.com/sneddy。该方法的描述可以参考这里:Kaggle SIIM-ACR 气胸挑战赛 - 第1名解决方案 - Anuar Aimoldin。
三重规则参数(threshold1, minsize, threshold2)是通过全局优化方法搜索得到的。
基本上,这就是解决问题所有有帮助的内容。
没有