为 TF 对象检测增强人工图像以使其看起来像真实图像

Augment Artificial Images to look like real Images for TF Object Detection

我正在使用来自 Tensorflow 对象检测 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):

我的想法是我的图像与真实世界的图像不够接近,因此,后者的分类不起作用。另一个想法是,我的数据集没有包含足够的 "normal"(没有大量增强图像,没有用大量高斯噪声、旋转、缩放等增强)训练图像。 有什么想法可以让我的训练图像更真实吗?也欢迎任何其他意见。

我们公司也做过类似的事情。一般来说,这是一个坏主意,只有在没有其他方法可以获取此类数据时才应使用。事实上,花一周时间注释真实世界的数据会给你带来更好的结果。

但是,如果您希望采用这种方法,以下是我们认为有用的提示:

  • 尽量巧妙地放置你的人造物体,所以使用接近其亮度、锐度等的背景,这样看起来更自然一些
  • 将标志放在适当的位置,比如墙上,而不是路上
  • 冻结你的特征提取器网络
  • 使用较小的学习率(类似于 5e-07)。

这些只是针对过度拟合的建议。

此外,我可以看到训练集和测试集的分辨率有很大不同。在将图像输入模型之前手动调整测试集的大小。