687. CSIRO - Image2Biomass Prediction | csiro-biomass
感谢 Kaggle 和赞助商举办如此精彩且引人入胜的比赛。这是一场激烈的竞赛,我很激动我们能够在激烈的竞争中守住位置。这对我来说是一次宝贵的学习经历。现在,让我带您了解我们的方法:
我在比赛 midway 阶段加入团队,并在队友建立的优秀 baseline(LB 0.67)基础上构建我的工作。我的队友稍后将提供 baseline 操作的更详细分解。
我的解决方案遵循两阶段流程:阶段 1 涉及初始训练,随后是阶段 2,由在线伪标签和测试时训练(TTT)组成。
单流版本:
@shanzhong8 DINOv3-Large + 单流:在训练和推理期间预测所有五个组件,使用带有 Softplus 激活的回归头。在训练过程中,前 80% 的参数被冻结。整体框架遵循共享特征提取器 + 特定任务头的范式,实现了参数效率并在相关回归任务间共享归纳偏置。输入分辨率 1024×2048, accommodating 超高分辨率图像。单模型 5 折, without TTA 和 TTT 可达到 0.76 公共 LB 和 0.65 私有 LB。
双流版本:
DINOv3-Large + 双流:在训练期间,模型在所有五个组件上进行监督。然而,在推理时,它仅预测 Dry_Green_g、Dry_Dead_g 和 Dry_Clover_g,而 GDM_g 和 Dry_Total_g 通过后计算得出(使用 Softplus 激活头)。在训练过程中,前 80% 的参数被冻结。
r^2 loss
使用 StratifiedGroupKFold,以 'sampling date' 为组,'stat' 为标签。由于原始三个日期不足以进行 5 折分割,我将 WA 数据细分为七个虚拟日期。 across 1000 万个种子进行了多线程暴力搜索,以识别在所有五个折中分布最平衡的分割。
Resize(单流:1024*2048; 双流:1024^2), HorizontalFlip, VerticalFlip, RandomBrightnessContrast, 和 ColorJitter。
由于缺乏 DINOv3 以外的模型异质性来进行集成,并且剩余的推理时间余地很大,我决定实施测试时训练(TTT)。
首先,我执行了单流和双流模型的集成推理(带或不带 TTA)。为了优化效率,我实施了双 GPU 并行推理,其中一个 GPU 处理 5 折单流模型,而另一个处理 5 折双流模型。这显著加速了推理过程。
初始预测随后经过后处理——例如,将 clover 乘以 0.8,并将任何低于 0.2 的组件值归零。这些处理后的结果被用作伪标签,使用 combined full training 和 test sets 训练最佳单流折(基于 LB/CV)。此 TTT 阶段持续 12 个 epochs,在最后 4 个 epochs 期间应用 SWA(简单权重平均)以防止过拟合并提高泛化能力。所有其他训练配置与阶段 1 保持一致。
此外,我尝试在单独的 GPU 上并行对单流和双流模型进行 TTT,但这没有产生任何明显的性能增益。最终结果是阶段 1 和 TTT 预测的加权混合:0.2 * 阶段 1 + 0.8 * 阶段 2。
无效的方法:
在这场比赛中,找到能提供稳定提升的想法 incredibly difficult。最后,感谢大家——很荣幸能与你们一起竞争!