687. CSIRO - Image2Biomass Prediction | csiro-biomass
首先,我们要感谢竞赛主办方的 Kaggle 工作人员组织了这场出色的竞赛。
下面,我将介绍我的解决方案。
| 项目 | 描述 |
|---|---|
| 模型 | DINOv3 ViT-L/16 蒸馏版(微调:回归头 + 最后两个 Transformer 块) |
| 输入 | 图像调整为 768×1536 |
| 输出 | 5 个目标变量 + 辅助损失特征(高度、NDVI,以及物种是否为黑麦草 (Ryegrass_Clover)) |
| 损失函数 | 与评估指标权重相同的 Huber 损失 + 辅助损失 |
| 预处理 | - 检查后移除了 8 个疑似标签噪声的样本 - 标准化目标变量 |
| 交叉验证 (CV) | 按 State - Sampling-Date 分组,然后手动审查并合并相似组。使用贪婪方法分为 5 折,使每个目标变量的分布在各折之间相似。 CV 和 LB 似乎相关,所以我尝试同时改进两者。 |
| 稳定性措施 | 数据增强以复现训练集中存在的非自然伪影(红点伪影和右下角的日期戳) |
| 集成 | 训练了 3 个模型(有/无辅助损失)并平均它们的预测 |
| 其他 | - 指数移动平均 (EMA) - 测试时增强 (TTA)(水平翻转) |
我使用了 DINOv3 ViT-L/16 蒸馏版。图像调整为 768×1536 并输入模型。模型输出包含五个目标变量加上可选的辅助损失特征,最终预测是三个具有不同输出配置的模型的平均值。
| 模式 | 输出配置 |
|---|---|
| 1 | 5 个目标变量 |
| 2 | 5 个目标变量 + 高度 + NDVI |
| 3 | 5 个目标变量 + 高度 + NDVI + 物种(二元分类:是否为黑麦草 (Ryegrass_Clover)) |
对于 State=WA 且 Sampling_Date=2015-08-21 的样本,标签显示 Dry_Green_g = 0。然而,检查图像后,明显存在除了三叶草以外的植物。因此,我将这些视为标签错误,并从训练数据中移除了以下 8 个样本:
- ID681680726.jpg
- ID697718693.jpg
- ID40849327.jpg
- ID230058600.jpg
- ID1403107574.jpg
- ID1337107565.jpg
- ID1139918758.jpg
- ID1761544403.jpg
这使得 CV 得分提高了 +0.01,Public 得分提高了 +0.01,Private 得分提高了 +0.01。
(我修正了它,因为我之前犯了一个错误。)
训练数据包含以下非自然伪影,所以我应用数据增强来复现它们:
这对 CV 或 Public 没有帮助,但将 Private 得分提高了 +0.01。当我单独测试它们时,日期/时间增强并没有提高 Public 得分,这表明 private 集可能包含一些红点伪影。
如果您有任何问题,欢迎提问。
感谢阅读!