我正在尝试创建一个 iOS 应用程序,当从设备相机获取图像时,它能够识别从 0 到 9 的数字。我从检测数字开始,在我的情况下,它总是在一个蓝色圆圈中。我设法使用 OpenCV 进行了非常准确的圆形检测。应用程序将在此时拍摄图像,扫描蓝色圆圈,将其剪切到圆圈所在的部分,将其变为黑白和更高的对比度,以便只有纯黑色(背景)和纯白色(数字)。结果是一个非常清晰的数字图像。最后一步是使用简单的图像分类器识别图像。
所以我试图重新创建这样的“黑色背景上的白色数字” - 数据集的图像。我使用具有相同字体的数字图像,就像在现实中一样,添加随机对比度、随机亮度、随机比例,添加一个蓝色圆圈并将其提供给 OpenCV 中的函数,然后返回一个图像,我保存在我的硬盘。我创建的数据集每个数字有超过 10.000 张图像(因此总共超过 100.000 张)。然后,我使用 CreateML 为该数据集训练图像分类器。然而,实际应用程序中带有此类数字的实际照片的准确性非常差。
所以我尝试了不同的方法。这个想法是改变除了数字之外的所有图像,以便模型学习相似之处。我通过向图像添加随机的白色和黑色像素、旋转和缩放它来做到这一点。最后,我应用了来自 OpenCV 的相同黑白滤镜,并将图像保存在我的硬盘上。这个模型比上面的还要糟糕。
您可以在此处找到两个数据集的示例图像: https ://1drv.ms/f/s!Ao1FRfDXc7vKklCxq3n7NC6APImP
所以这是我的问题:
1)创建一个能够高精度识别数字的机器学习模型不是很容易吗?
2) 在这种情况下,我的数据集应该是什么样子,以优化模型的准确性?
3)您会推荐每个数字多少张图像用于训练?