好的数字识别数据集是什么样的

时间:2018-12-27 16:44:55

标签: machine-learning coreml createml

我正在尝试创建一个iOS应用,当从设备相机获取图像时,该应用能够识别0到9之间的数字。我从检测到数字开始,在我的情况下,该数字始终是一个蓝色圆圈。我使用OpenCV设法获得了相当准确的圆圈检测。该应用程序此时将拍摄图像,将其扫描为蓝色圆圈,将其切成该圆圈所在的部分,将其变为黑白并提高对比度,这样就只有纯黑色(背景)和纯白色(数量)。结果是仅显示数字的清晰图像。最后一步是使用简单的图像分类器识别图像。

因此,我尝试重新创建这样的“黑色背景上的白色数字”-数据集的图像。我使用了具有相同字体的数字图像,实际上,添加了随机对比度,随机亮度,随机比例,添加了蓝色圆圈并将其提供给OpenCV中的函数,然后返回了图像,并将其保存在我的硬盘。我创建的数据集每个数字有10.000张图像(因此总数超过100.000)。然后,我使用CreateML为该数据集训练图像分类器。然而,在实际应用中使用此类数字的实际照片的准确性非常差。

所以我尝试了另一种方法。想法是更改除编号以外的所有图像,以便模型学习相似之处。为此,我向图像添加了随机的白色和黑色像素,然后对其进行旋转和缩放。最后,我使用了来自OpenCV的相同的黑白滤镜,并将图像保存在硬盘上。这个模型比上面的还要糟糕。

您可以在此处找到两个数据集的样本图像: https://1drv.ms/f/s!Ao1FRfDXc7vKklCxq3n7NC6APImP

这是我的问题:

1)创建能够高精度识别数字的机器学习模型不是很容易吗?

2)在这种情况下,我的数据集应该是什么样的,以优化模型的准确性?

3)您会建议每个号码多少张图像进行训练?

1 个答案:

答案 0 :(得分:0)

我认为应该在OpenCV问题网站(http://answers.opencv.org/questions/)上提出问题,这里有一些提示和帮助。

0)首先进行更多研究。这是一个非常标准的问题,经常被现有技术用作介绍。以下是一些线索/示例

1)也许可以,但是您必须探索非opencv领域。

2)大,装满了样品,经过分类/标记并在可能的情况下进行了扩充。

3)这是一个主要的经验领域。您的验证集有多少种?应用程序将在受控环境中运行吗?噪音真的是个问题吗?

尝试从一个小的数据集(如MNIST等10.000个图像)开始,检查精度并从那里建立。