返回列表

5th place solution(single segmentation model private lb 0.66806)

349. Understanding Clouds from Satellite Images | understanding_cloud_organization

开始: 2019-08-16 结束: 2019-11-18 气象预报 数据算法赛
第5名解决方案(单分割模型 私有LB 0.66806)

第5名解决方案(单分割模型 私有LB 0.66806)

作者: langzi
发布时间: 2019-11-19

祝贺本次比赛的所有获胜者!这是我获得的第一枚金牌,我感到非常高兴。

我的解决方案是由3个分割模型组成的集成模型。

数据增强

在本次比赛中,我发现图像增强非常重要。我尝试了许多不同的增强组合,最终找到了一组对我效果很好的方案。我使用 albumentation 库来进行图像增强。

aug = Compose([
        ShiftScaleRotate(scale_limit=0.5, rotate_limit=0, shift_limit=0.1, p=0.6, border_mode=0),
        OneOf([
            ElasticTransform(p=0.5, alpha=50, sigma=120 * 0.02, alpha_affine=120 * 0.02),
            GridDistortion(p=0.5),
            OpticalDistortion(p=0.5, distort_limit=0.4, shift_limit=0.5)
        ], p=0.8),
        RandomRotate90(p=0.5),
        Resize(352, 544),
        VerticalFlip(p=0.5),
        HorizontalFlip(p=0.5),
        OneOf([
            IAASharpen(alpha=(0.1, 0.3), p=0.5),
            CLAHE(p=0.8),
            GaussNoise(var_limit=(10.0, 50.0), p=0.5),
            #GaussianBlur(blur_limit=3, p=0.5),
            ISONoise(color_shift=(0.01, 0.05), intensity=(0.1, 0.5), p=0.3),
        ], p=0.8),
        RandomBrightnessContrast(p=0.8),
        RandomGamma(p=0.8)])

模型

模型1:

编码器: efficientnet-b1
解码器: unet
图像输入尺寸: 416x608
TTA (测试时增强): 水平翻转, 垂直翻转, 多尺度: [(352, 544), (384, 576), (448, 640), (480, 672)] 
阈值: 标签阈值 = [0.85, 0.92, 0.85, 0.85], 像素阈值 = [0.21, 0.44, 0.4, 0.3]
得分: 9折交叉验证 = 0.66002, 公开LB = 0.67070, 私有LB = 0.66806

模型2:

编码器: efficientnet-b3
解码器: fpn
图像输入尺寸: 352x544
TTA: 水平翻转, 垂直翻转, 多尺度: [(320, 512), (384, 576)]
阈值: 标签阈值 = [0.85, 0.9, 0.9, 0.85], 像素阈值 = [0.35, 0.4, 0.42, 0.42]
得分: 9折交叉验证 = 0.65646, 公开LB = 0.66426, 私有LB = 0.66687

模型3:

编码器: resnet50
解码器: unet
图像输入尺寸: 352x544
TTA: 水平翻转, 垂直翻转, 多尺度: [(320, 512), (384, 576)]
阈值: 标签阈值 = [0.9, 0.92, 0.87, 0.82], 像素阈值 = [0.35, 0.51, 0.31, 0.3]
得分: 9折交叉验证 = 0.65715, 公开LB = 0.66541, 私有LB = 0.65973

所有模型均使用 bcedice loss(二元交叉熵骰子损失)和 Adam 优化器。运行阈值搜索以获取标签阈值和像素阈值。

模型集成

我利用交叉验证和公开LB分数来粗略设定模型权重,并运行阈值搜索以获取阈值。

模型权重: 模型1, 模型2, 模型3 = [4, 1, 2]
阈值: 标签阈值 = [0.84, 0.9, 0.