返回列表

38th Place - ZoneMix - A domain specific augmentation

363. Bengali.AI Handwritten Grapheme Classification | bengaliai-cv19

开始: 2019-12-19 结束: 2020-03-16 计算机视觉 数据算法赛
第38名 - ZoneMix - 一种特定领域的增强方法

第38名 - ZoneMix - 一种特定领域的增强方法

作者: Dipam Chakraborty (dipamc77) | 比赛: Bengali.AI Handwritten Grapheme Classification | 排名: 38th

非常感谢所有分享想法的出色参与者。@haqishen @hengck23 @bibek777 @machinelp @quandapro 以及许多其他优秀的用户,如果没有他们的建议,我会完全迷失方向。同时也要非常感谢 Bengali.AI 的组织者举办这场关于我母语的竞赛,从这次竞赛中学到的经验教训也将适用于印度次大陆的其他语言,如印地语、奥里亚语、泰卢固语等。

老实说,我在一月底才加入比赛,大部分时间我都在尝试通过简单的增强、模型或超参数调整来提高分数。而且只有 Google Colab 可用于训练对此也没有帮助。如果我继续那条路,我肯定不会进入任何奖牌区。非常感谢我的队友 Ram 指出了组织者关于“未见字形”的重要讨论。随后还有 Qishen Ha 关于在未见字形上进行验证的帖子。

在意识到模型在未见字形上的表现有多糟糕后,只剩下 10 天时间了。特别是——组合较少的类别(超过一半的字形根属于此类),以及辅音 3 和 6——泛化能力最差。(可以查看这里的组合计数内核)。

我使用这里描述的方法探测了其中一些类别的分数。从差距中,我确信会有巨大的排名变动。

在阅读了顶级解决方案后,我受到启发去追求基于机器学习的方法来提高泛化能力,而不是我在下面描述的基于规则的方法;我仍然想分享它。

ZoneMix - 按区域分割字形以应用 Cutmix

作为一名孟加拉语母语者,我可以说通常字形可以根据组合分割成特定的区域。下面是区域示意图。

区域示意图

对于某些组合必须制定一些额外的规则,这在代码编写上有点痛苦,让我甚至质疑自己为什么要在这个乏味的想法上工作 😭。我肯定会分享代码,只是现在代码还一团糟。

每个组合占据其中一些区域,根据字符的边界框按区域坐标进行切割,可以大致得到组件。这是一个例子:

好例子

当然——现实世界的数据并不总是遵循规则,失败案例很常见:

坏例子

一旦提取了区域数据,就可以通过根据新的区域坐标调整大小将它们放置在其他图像上。这可以产生非常逼真的图像,但也可能产生不逼真的图像。

好的混合示例 坏的混合示例

当所有设置完成后,我大约还有 3 天时间用这种方法进行训练。遗憾的是它没有直接起作用,我认为是因为错误和不逼真的图像造成的噪声太大,模型难以处理。

我通过以下技巧降低了噪声——字形根区域在大多数情况下大致正确,而元音和辅音区域则偏差较大。我认为既然字形根和辅音 3 和 6 是要解决的主要类别,我应该专注于这些。

使用 ZoneMix,我训练了一个只预测字形根的模型,这减少了来自元音和辅

同比赛其他方案