如何对手写数字进行分割

3

我正在解决手写数字识别的问题。基本上,我们需要识别文件中的某些字段,如金额、帐号、手机号等。

手写数字识别可以分为两个步骤:

  1. 数字分割
  2. 分割后数字的识别

对于步骤2,我们可以使用一些预训练的MNIST模型,但问题是如何分割数字。我尝试了OpenCV轮廓,但它只有在数字之间用空白像素分离时才有用,即当数字彼此不接触时,但经常用户写连续连接的数字。

有人可以针对这个任务提出一些基于深度学习或非深度学习的方法吗?

示例图片

enter image description here

enter image description here

enter image description here

1个回答

3

针对基于深度学习的方法,您可以使用Mask RCNN。这是一种非常强大的方法,可用于检测、定位和分割。该算法足够强大,即使类别之间非常接近,也能识别出不同的类别。

它将在数字周围生成边界框并对其进行分类。

请查看此存储库,因为我的解释可能无法充分表达相同的意思。

它还包含一些示例供您学习。唯一可能会减慢您速度的是,您需要标注您的图像。但是,使用迁移学习,您可以减少实际用于训练的数据量。

以下是其他相关链接:

在您自己的数据集上训练MaskRCNN

在您自己的数据集上实现

了解更多MaskRCNN

迁移学习

当然,关于上述主题的更好文章肯定有很多,但这些是我使用过的。希望其他人也会向您推荐它们。


你好 @zibbyboo,感谢你的建议。你的意思是我应该使用类似 Mask-RCNN 的对象检测模型来训练一个能够识别0-9这10个数字(10个对象类)的模型,并准备标记好的数据集。 - Atinesh
是的,因为MNIST图像中只有一个类别,当你测试它们时,你只需输入一个数字就能得到输出。把你的问题看作是从单个图像中识别多个类别。在完成所有类别的预测后,你可以将结果从左到右拼接起来得到输出。举个例子来说明。你的模型会将图像中的类别识别为4、4、2、0、0、0,然后你需要添加一些算法来简单地给出442000的结果。关于/和-,你也可以将它们作为类别添加进去,这样如果检测到它们,就可以忽略或合并它们。 - curse
1
我会尝试一下,一旦数字被目标检测模型检测到,就可以使用边界框的x坐标进行排列。 - Atinesh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接