-2

我正在尝试创建一个 iOS 应用程序,当从设备相机获取图像时,它能够识别从 0 到 9 的数字。我从检测数字开始,在我的情况下,它总是在一个蓝色圆圈中。我设法使用 OpenCV 进行了非常准确的圆形检测。应用程序将在此时拍摄图像,扫描蓝色圆圈,将其剪切到圆圈所在的部分,将其变为黑白和更高的对比度,以便只有纯黑色(背景)和纯白色(数字)。结果是一个非常清晰的数字图像。最后一步是使用简单的图像分类器识别图像。

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

所以我尝试了不同的方法。这个想法是改变除了数字之外的所有图像,以便模型学习相似之处。我通过向图像添加随机的白色和黑色像素、旋转和缩放它来做到这一点。最后,我应用了来自 OpenCV 的相同黑白滤镜,并将图像保存在我的硬盘上。这个模型比上面的还要糟糕。

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

所以这是我的问题:

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

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

3)您会推荐每个数字多少张图像用于训练?

4

1 回答 1

0

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

0)从做更多的研究开始。这是一个非常标准的问题,并且经常被现有技术用作介绍性问题。这里有一些线索/例子

1)也许,但你必须探索非opencv领域。

2) 大、充满样本、分类/标记良好并尽可能增加。

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

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

于 2018-12-28T16:00:21.887 回答