450. SETI Breakthrough Listen - E.T. Signal Search | seti-breakthrough-listen
感谢主办方、所有参赛者以及 Kaggle 再次提供了一个很棒的学习机会。
在大多数实验中,我使用了 efficientnet_b0。在最后几天,我加入了 efficientnetv2s、efficientnetb1 和 efficientnetb2 进行集成,采用的是不同运行结果的几何平均值。
(我错过了一个技巧,那就是没有添加更大的模型)。
在我的大多数实验中,我使用了按时间堆叠的所有 6 个输入,并将其调整为 512x512 或 768x512。
对于大多数实验,原始堆叠图像用作通道 0,频率归一化图像用作通道 1,第 3 个通道则根据输入部分是 ON target 还是 OFF target 设置为 0 或 1。
我广泛使用配置文件和 hydra 来管理实验。使用 Weights and biases 进行日志记录和监控。使用 Pytorch lightning 处理样板训练代码。大部分代码都经过了 flake8 检查,并由 black 自动格式化。非常感谢 https://github.com/ashleve/lightning-hydra-template 提供了很好的入门代码库。感谢所有这些库的开发者!
我的所有代码可在此处获取:https://github.com/mohsinkhn/seti-kaggle-tezdhar
包含 off 通道对我的一些早期模型在 CV 上有轻微提升,但在 LB 上提升更大(0.1-.2)。这可以通过 on-off 通道中存在的窄带漂移信号(在测试数据中更多)来解释。
Untied mixup(https://openreview.net/pdf?id=SkgjKR4YwH)。基本思想是让输入和目标的混合分布不同。对于输入,我使用 alpha=1.0, beta=1.0 的 beta 分布,而对于目标,我使用 alpha=1.0, beta=0.5 的 beta 分布。
数据增强:为了检测未知类别,我想强制执行信号只应存在于 ON 通道而不是 OFF 输入中的条件。为此,我将输入中的数据滚动 1 步([A0, B, A1, C, A2, D] --> [D, A0, B, A1, C, A2])并将目标设为 0。输入 0 中的图像变为输入 1 中的图像,输入 1 中的图像变为输入 2 中的图像,依此类推。这样做,连同 SpecAug,我能够成功预测测试数据中的新类别。
除了上述增强外,我还使用了 hflip、roll、specAug、meanshift、verticalshift(2 步,因为 6 个输入图像无法垂直翻转)。
我尝试了许多归一化技术,平均绝对偏差缩放、sigmoid 缩放、最小-最大缩放后的随机幂等等,但没有一个带来显著的提升。
最后尝试了仅使用置信预测的伪标签,但没能获得太大收益。
虽然以 1 名之差错失单人金牌让人感觉糟糕,但这对我来说确实是一次非常好的学习经历,尤其是我的实验流程有了显著改进。