我正在使用来自Tensorflow Object Detection API的Faster R-CNN Inception ResNet v2模型来训练CNN以进行安全标志检测。由于我没有真实的图像数据集,因此我编写了一个代码,该代码创建了一个人工数据集,该数据集由来自公共可用数据集(GTSDB,KITTI等)的计算机绘制的标志图像和真实世界的背景图像组成。虽然训练有素的模型在看不见的人造图像上效果很好,但在我用iPhone 5SE拍摄的真实测试图像上效果不佳。
我已经有了来自imgaug(https://imgaug.readthedocs.io/en/latest/index.html)的各种数据增强技术,并在互联网上寻找解决方案,但对于现实世界的图像却没有成功。
将测试图像调整为接近训练图像的大小并将其转换为.png也没有任何作用。
我用于训练的一幅人工图像(尺寸:640x480,格式:.png):
以及其中一张用于测试模型的真实测试图片(尺寸:3024x4032,格式:.JPG):
我的想法是我的图像与真实世界的图像距离不够近,因此,对真实世界的图像分类不起作用。另一个想法是,我的数据集没有包含足够的“正常”(不是经过大量增强的图像,没有经过大量的高斯噪声,旋转,缩放等增强)训练图像。 有什么想法可以使我的训练图像更加真实吗?也欢迎任何其他输入。
答案 0 :(得分:1)
我们在公司做了类似的事情。一般来说,这是一个坏主意,只有在没有其他方法可以获取此类数据时才应使用此方法。确实,花一周时间注释现实世界的数据将为您带来更好的结果。
但是,如果您希望采用这种方法,以下是我们发现有用的提示:
这些只是针对过度拟合的建议。
此外,我可以看到火车和测试仪上的分辨率差异很大。在将图像输入模型之前,手动调整测试集的大小。