345. Kuzushiji Recognition | kuzushiji-recognition
首先,我要感谢我的队友 @ollieperree 和 @tikutiku,虽然我们在一起工作的时间不多,但这段经历和结果都非常棒!
同时祝贺获胜者 @tascj0、@lopuhin、@knjcode、@linhui、@seesee。@kmat2019 你的 kernel 非常棒!
当然还要感谢主办方!@tkasasagi、@sohier 和 @anokas,这次比赛非常完美!我认为 Kaggle 应该重新考虑奖牌机制。我们没有获得奖牌,而且只有293支队伍……我认为大家来这里参赛是因为丰厚的奖金和挑战本身,而不是为了奖牌 :) 就我们而言,最大的阻碍是 GPU 配额……
无论如何,我将解释我们的方法。请查看 Notebook:Kuzushiji Recognition Starter,我们将更新推理代码以及用于训练分类器的 256x256 图像公共数据集。
从一开始,@ollieperree 就在使用两阶段方法。我们的检测方法直接受到 K_mat 的 kernel 的启发,主要思路是预测一个显示字符中心的热力图。最初,我们使用带有 resnet18 骨干网络的 U-Net 来预测热力图,该热力图由放置在字符中心的椭圆组成,椭圆的半径与边界框的宽度和高度成比例,模型输入是页面 1024x1024 像素的裁剪区域并调整为 256x256 像素。然后通过选取局部极大值来获得中心点的预测(注意,没有预测边界框的宽度和高度)。将椭圆改为恒定半径的圆后,性能得到了提升。
我们尝试使用 focal loss 和二进制 cross-entropy 作为损失函数,但使用均方误差为我们带来了最干净的预测(尽管需要更多的 epoch 才能得到看起来合理的预测)。
使用页面 1024x1024 裁剪区域作为输入的一个问题是输入边缘周围的“伪影”。我们尝试了几种方法来解决这个问题,例如以小于 1024x1024 的步幅在页面上移动滑动窗口,然后通过检测同一类的两个预测点是否在一定距离内来去除重复预测。然而,这些方法并没有在 LB(Leaderboard)上带来提升——我们认为在验证集上调整这些方法的参数以及选取热力图中极大值的参数可能导致了我们“过拟合”。
这些伪影与绘图