返回列表

5th place solution (best single model, private LB 0.71443)

567. Google Research - Identify Contrails to Reduce Global Warming | google-research-identify-contrails-reduce-global-warming

开始: 2023-05-10 结束: 2023-08-09 双碳与可持续发展 数据算法赛
第五名解决方案(最佳单模型,私有榜 0.71443)

第五名解决方案(最佳单模型,私有榜 0.71443)

作者:Johnny Lee
队友:Ilya Makarov
发布日期:2023年8月10日
竞赛排名:第5名
得票:41票

感谢组织者举办了这场精彩的比赛。同时也感谢我的队友:Ilya Makarov。我从中获得了很多乐趣,也学到了很多知识。

我很乐意分享我们的解决方案以及从这场比赛中学到的东西,希望能对大家有所帮助。

我的解决方案概述

模型

我使用了5个模型,具体如下:

  • 单帧模型1:EfficientNetV2L + UNet,512x512,训练时裁剪至480x480
  • 单帧模型2:EfficientNetV2L + UNet,768x768,训练时裁剪至512x512
  • 多帧模型1:EfficientNetV2L + 自定义3D UNet 1,256x256,使用全部8帧
  • 多帧模型2:EfficientNetV2L + 自定义3D UNet 2,512x512,训练时裁剪至480x480,仅使用5帧
  • 多帧模型3:EfficientNetV2L + 自定义3D UNet 3,512x512,训练时裁剪至480x480,仅使用5帧
    (最佳单模型,延迟提交,私有榜:0.71443,公开榜:0.70803)

自定义3D UNet结构

3D UNet结构图

  • 对每一帧应用相同的编码器(骨干网络)
  • 在每个层级上通过Conv3D组合编码器输出。ConvLSTM2D也有效,但速度更慢
  • 使用UNet作为解码器以获得最终输出

数据增强

  • 左右翻转、上下翻转、旋转90度(用于TTA8)
  • 通道噪声、像素噪声
  • 随机丢弃帧(仅多帧模型)
  • 随机裁剪

在比赛初期,我注意到如果不使用翻转和rot90,模型会很快过拟合。但如果使用翻转和rot90,结果反而变得更差。这个问题困扰了我很久。最终,我找到了原因。正如其他讨论中提到的,图像和掩码没有对齐。掩码略微向右下方偏移。因此,如果使用翻转或rot90,我们需要对它们进行对齐。我使用的偏移参数是:x = 0.408,y = 0.453。

尝试过但未奏效的方法:

  • 随机旋转
  • CoarseDropout
  • 通道Dropout

目标与损失函数

我使用了两个目标:

  • 目标1:Sigmoid输出1个通道,权重75%(human_pixel_masks.npy)
  • 目标2:Softmax输出5个通道,权重25%(human_individual_masks.npy。0表示无航迹云,1表示25%标注者,2表示50%标注者,3表示75%标注者,4表示100%标注者)

损失函数为加权二元交叉熵 + dice损失。
使用Lion优化器。(Lion:https://github.com/keras-team/keras/blob/v2.13.1/keras/optimizers/lion.py

预测

  • 通过5个模型集成,使用TTA8(左右翻转、上下翻转、旋转90度)
    TTA8非常重要,可以将分数提高0.005~0.01

最佳结果是公开榜:0.71243,私有榜:0.71756。但很遗憾,我们未将其选为最终提交。

其他实验

  • 我尝试使用了所有波段,可以带来0.000x的提升。但这会使提交过于复杂,耗时太长。因此最终提交中未使用。
  • UNet + Transformer(256, 128:UNet,64, 32:Transformer)。使用Transformer获取其他帧的信息。虽然有效,但不如UNet好。可能是因为Transformer未经过预训练。

更新记录

  • 2023年8月11日:添加了最佳单模型的延迟提交分数
同比赛其他方案