[第4名] 绝对是过拟合了公共 LB
[第4名] 绝对是过拟合了公共 LB。(0.948->0.930)
作者:Johnny Lee
比赛排名:第4名
绝对是过拟合了公共 LB(Public Leaderboard)。但对我来说,单人金牌已经足够好了。也许对我来说这是最好的结果,因为不需要提交我那乱糟糟的源代码 :)
祝贺这次比赛中的每一个人。我们从中学到了很多。
以下是我的方案简介。
■ 使用 Tensorflow 和 TPU
■ 数据准备
- 将 DCT(512x512x16) 保存为 png 格式存入 .tfrec 文件(无损)。
- 将质量因子保存到 .tfrec 文件中。
- 将有效载荷草稿保存到 .tfrec 文件中。(如果 8x8 区域内有任何变化,则计为 1)
- 在训练时以 TF 的方式将 DCT 转换为 YCbCr。通过这种方法,我可以在 15~20 分钟内完成 Effnet B0/B1 的一个 epoch 训练,B6/B7 则需要 30~45 分钟。使用 YCbCr 的原因见这里。
■ 数据增强
所有的数据增强都是以 TF 的方式实现的。(也许这里有些问题)
- 左右/上下翻转(Flip LR/UD)
- +/- 翻转(IMO 使用 YCbCr 是可行的)
- 乘以随机数(0.98~1.02)。(我们在检测小波的变化)
- 随机打乱 24x24 / 32x32 / 40x40 的块。IMO(我认为)这可以让模型关注块的小波而不是图像的内容。保留边界(16像素)因为 UERD 总是改变这个区域。
- 没有使用 Rot90,因为量化表不是对角对称的。(也许我错了)
■ 模型
在 DCT 中改变一个像素 +/-1 会导致 YCbCr 中 8x8 块的变化,有很多模式需要学习,所以我尝试了 B6/B7/B8,最终结果是它们的集成。最佳单模型是 B6(本地/公共/私有分数:0.940/0.940/0.929)
- 多分类(4) + 辅助损失(payload, mae)
- 质量因子作为输入,而非目标。
- 在最后阶段使用较小的学习率。
- TTA(测试时增强): LR/UD/+-, 每张图 8 次。(见数据增强部分)
■ 训练
我只专注于一个折(fold)并在所有数据上进行了微调。遗憾的是,这对公共 LB 造成了过拟合。通过观察公共/私有 LB,我认为除了获胜者之外,许多人都和我一样。再次祝贺大家。
如果我训练更多的折也许我可以…… :) (这需要很长时间,现在就算了)
■ 更新
7/22 添加了最佳单模型的链接。