473. PetFinder.my - Pawpularity Contest | petfinder-pawpularity-score
感谢 Kaggle 和 Petfinder 举办了这场精彩的比赛。构建模型来帮助宠物既有趣又有意义。我的解决方案结合了我分享的讨论帖子和 Notebook。
在最后的两次提交中,我选择了我最好的 LB 分数(CV 17.15, LB 17.64)和我最好的 CV 分数(CV 16.98, LB 17.78)。我最好的 CV 分数在公共排行榜上仅排第 120 名。选择它让人感到害怕,但我最终获得的私人 LB 第 6 名正是这个最好的 CV 提交!
至少有两种方法可以调整模型图像的大小。我们可以将原始图像挤压成正方形(扭曲纵横比),或者我们可以进行正方形裁剪(并保留纵横比)。我使用随机正方形裁剪来训练模型。这不仅创建了与 Petfinder 网站上显示方式相匹配的自然外观图像,而且还通过在训练期间使用随机裁剪提供了数据增强(这有助于我们的模型泛化)。这提升了 CV 和 LB。
训练 CNN 以获得良好的 CV LB RMSE 分数比训练 Transformer 更困难,它需要冻结主干网络来训练头部(和/或冻结前 66% 的主干网络来训练最后 33% 的主干网络加头部)。冻结所有 batchnorm 层也很重要。(这一点在这里演示并在这里解释)。有许多公开 Notebook 展示了 CNN 训练,例如这里、这里和这里。我最好的单一 CNN 模型是带有 RAPIDS SVR 头部的 EfficientNetB2。它达到了 CV 17.55
有几十种图像 Transformer。要查看所有可用的预训练图像 Transformer,只需输入 import timm; timm.list_models(pretrained=True)。你会看到 beit, cait, convit, crossvit, deit, levit, pit, swin, vit, xcit!接下来你可以复刻公开的 fastai notebook 这里 并运行这些模型!为了评估哪个最好,你必须用 metrics=AccumMetric(func=petfinder_rmse) 修正 RSME 指标,正如这里解释的那样(否则 CV 分数是无意义且错误的)。
我最好的单一模型是 BeIT(不是 Swin)。这是一个经过 BERT 预训练的 Transformer。研究论文在这里。单个 BeIT transformer 取得了我最好的 CV 17.42 和最好的 Private LB 17.00,这足以进入私人 LB 前 50 名!
我训练了图像尺寸为 224、384、512 的模型。多种图像尺寸的优势在这里解释。对于较大的图像尺寸,需要更多的增强。当使用图像尺寸 512 时,应用了以下增强:随机正方形裁剪、水平翻转、垂直翻转、转置、亮度、对比度、色调、饱和度、旋转、随机擦除。一些