OCR的有效数据增强

9db64e08b54f450a45a2ff8763f0ee86.png

背景

我面临着需要尽可能准确识别手写金额的挑战。难点在于保持误判率低于0.01%。由于数据集中样本数量固定,因此数据增强是合乎逻辑的选择。快速搜索未发现针对光学字符识别(OCR)的现成方法。因此,我挽起袖子,亲自创建了一个数据增强例程。它在训练过程中被使用,并帮助我的模型实现了目标。继续阅读以了解详情。

通过每次训练图像时引入小的变化,模型不太可能过拟合,更容易泛化。我将其与TROCR一起使用,但任何其他模型也应该受益。

测试设置

由于无法分享来自专有数据集的图像,我原本想使用IAM手写数据库的样本,但我未收到使用权限的回复。因此,我为演示创建了一些自己的示例。

我将使用OpenCV和albumentations库进行三种类型的修改:形态学、噪声和变换。

OpenCV是一个众所周知的计算机视觉库。Albumentations是一个相对较新的Python库,用于进行简单但功能强大的图像增强。

还有一个不错的演示网站,你可以在其中尝试albumentations的功能。但由于无法使用自己的图像进行测试,因此我创建了一个Jupyter笔记本,用于在本文中渲染所有增强的图像。请随时在Colab中打开并进行实验。

我们将首先展示单独的修改,附有一些解释,然后讨论将它们结合在一起的技术。我将假设所有图像都是灰度的,并已经进行了对比度增强(例如,CLAHE)。


第一种增强技术:形态学修改

这些与结构的形状有关。简单来说:它们可用于使文本行看起来像用细或粗笔写的。它们被称为腐蚀和膨胀。不幸的是,这些目前还没有包含在albumentations库中,因此我必须借助opencv来实现。

为了产生像是使用宽线宽度笔的效果,我们可以膨胀原始图像:

114c95e408a4386d47287266703852a3.png

另一方面,腐蚀(顺便说一下)模拟了使用细笔写的效果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值