返回列表

23rd place solution

454. G2Net Gravitational Wave Detection | g2net-gravitational-wave-detection

开始: 2021-06-30 结束: 2021-09-29 物理与天文 数据算法赛
第23名解决方案

第23名解决方案

作者: Vlad Yelisieiev 及其团队
排名: 第23名

首先,我要感谢我的团队成员 @vladimirsydor@zekamrozek@yakuben@uulott 的辛勤工作,同时感谢组织者和 Kaggle 社区为我们带来了如此精彩的比赛体验。

太长不看版 (TL;DR)

融合了 6 个 2D CNN 和 3 个 1D CNN 模型:包含 1 个 EfficientNet_b0、3 个 EfficientNet_b3、2 个 EfficientNet_b5,以及 2 个带有 Transformer 头的 1D ResNet 和 1 个基础 1D CNN。

详细细节

带通滤波器 对于本次数据至关重要,我们进行了大量实验并尝试了不同的设置,以下参数显示的结果优于我们尝试的其他方案:
fmin=20
fmax=1024fmax=500fmax=600(具体取决于模型),
hop_length=4
bins_per_octave=12
filter_scale=0.5
pad=10

对于图像输入,我们仅使用了 CQT,并未尝试 CWT。

有效的数据增强:

  1. 波形增强:
    • 随机通道偏移 +-30;
    • 波形的“硬” MixUp:new_wave = (wave1 + wave2) / 2new_target = max(target1, target2)
    • 添加标准差较小的高斯噪声。

模型
在比赛的大部分时间里,我们都在训练 EfficientNets,直到最后 1-2 周才开始尝试 1D 模型。

我们发现,增加输入图像尺寸可以提高性能,即使是对于 EfficientNet_B0 也是如此,因此我们对此进行了更多尝试。对我们来说,最好的结果是在输入形状不变的情况下,使用 stride=(1,2) 代替默认的 (2,2)。这允许模型在频率轴上自行“拉伸”输入,从而产生向网络输入更高分辨率图像的效果。

我们的 2D 模型在最初的几个 Epoch 中受到 BatchNorm 层梯度破坏的影响,为了克服这个问题,我们采用了两种方法。第一个有效的方法是将整个模型中的 BatchNorm 替换为 InstanceNorm。第二个有效的方法是冻结除 BatchNorm 以外的所有编码器层,在最初的 2 个 Epoch 中仅训练它们以及 Linear 头。

如前所述,我们较晚开始研究 1D 模型,主要是简单的堆叠 Conv 层,但在与 @uulott 合并后,他带来了一个非常有前景的 1D ResNet 模型,其表现与我们最好的 2D 模型水平相当(LB 约为 0.879)。

最后,当我们开始在较小的学习率下对模型进行微调,并关闭数据增强进行多个 Epoch 时,所有模型都从中受益。这将我们的 LB 分数提升到了 0.88 以上,并让我们保持在银牌区,随着我们微调和融合的模型越来越多,LB 排名也在不断上升。

集成
对于集成,我们使用了直接的 hyperopt 融合。加入任何 1D 模型都能提升我们所有的融合效果。

最终融合 由 6 个 2D-CNN 和 3 个 1D-CNN 组成:

  1. EfficientNet-B5,成功的增强,冻结 2 个 Epoch,CQT 后归一化;
  2. 相同的 B5,但进行了微调;
  3. 微调后的 EfficientNet-B3,所有成功的增强,冻结 2 个 Epoch,CQT 后归一化;
  4. 微调后的 EfficientNet-B3,初始 stride=(1,2),GaussNoise 增强,冻结 2 个 Epoch,CQT 后归一化;
  5. 微调后的 EfficientNet-B3,初始 stride=(1,2),GaussNoise 增强,冻结 2 个 Epoch,CQT 后归一化;
  6. 微调后的 EfficientNet-B0,InstanceNorm 代替 BatchNorm,CQT 后归一化;
  7. 1D ResNet + Transformer 头,滤波器阶数 8 和 CosineAnnealing;
  8. 1D ResNet + Transformer 头,滤波器阶数 5 和 ReduceLROnPlateau;
  9. 微调后的 6 层 CNN1d 配合 MLP 头,MixUp 和 GaussNoise,线性预热和余弦衰减。

附言。我们尝试过但未能进入最终融合的其他方法:

  • 微调前丢弃置信度为 1 的样本;
  • InceptionTime 用于 1D + Transformer 头;
  • 8 层自定义 1D CNN;
  • rexnet_100;
  • EfficientNet-B2 及其他模型;
  • 将 CQT 图像调整为 (512,512) 或 (256, 256)。

我们停止使用的增强方法:

  • 2D 模型中的图像通道混洗;
  • 图像的水平翻转
同比赛其他方案