自然场景数字识别的深度学习解决方案

spa*_*del 5 python ocr image-recognition mnist deep-learning

我正在解决一个问题,我想自动读取图像上的数字,如下所示:

在此输入图像描述

在此输入图像描述

可以看出,图像非常具有挑战性!这些线不仅在所有情况下都不是相连的,而且对比度也相差很大。我的第一次尝试是在经过一些预处理后使用 pytesseract。我还在这里创建了一个 StackOverflow 帖子。

虽然这种方法在单个图像上效果很好,但它并不通用,因为它需要太多的手动信息进行预处理。到目前为止,我拥有的最好的解决方案是迭代一些超参数,例如阈值、侵蚀/膨胀的过滤器大小等。但是,这在计算上是昂贵的!

因此我开始相信,我正在寻找的解决方案必须基于深度学习。我在这里有两个想法:

  • 在类似任务上使用预先训练的网络
  • 将输入图像分割成单独的数字,并以 MNIST 方式自行训练/微调网络

关于第一种方法,我还没有找到好的东西。有人对此有什么想法吗?

关于第二种方法,我首先需要一种方法来自动生成单独数字的图像。我想这也应该是基于深度学习的。之后,我也许可以通过一些数据增强取得一些好的结果。

有人有想法吗?:)

yak*_*hyo 2

关于你的第一种方法,

有两个综合准备的数据集可用:

  1. 文本识别数据由 900 万张图像组成。
  2. SynthText in the Wild由 800 万张图像组成。

我已使用上述数据集对平板图像进行文本识别。图像相当具有挑战性,但现在我的准确率达到了 90% 以上。我已经实现了以下模型来解决此任务。这些都是:

  1. 文本本地化的工艺
  2. 用于文本识别的深度文本识别

如果您正在与在此输入图像描述仅限各种图像,我强烈鼓励您尝试深度文本识别。它是4阶段框架。 在此输入图像描述

  1. 对于转换,您可以选择TPSNone。有了TPS,它就表现出了更高的性能。他们实施了空间变压器网络

  2. 在特征提取阶段,您将有选择:ResNetVGG

  3. 对于顺序阶段,BiLSTM

  4. AttnCTC用于预测阶段。

他们在TPS-ResNet-BiLSTM-Attn版本上实现了最佳准确率。您可以轻松地微调该网络,我希望它可以解决您的任务。使用上述数据集训练的模型。