在许多的DL应用中,我们经常遇到其中一种类型的数据比其他类型的数据可能被看到更多的数据集。例如,在一个识别交通标志任务中,停车标志会比限速标志多。因此,在这些任务中,我们需要确保训练后的model不会偏向于拥有更多数据的那类。例如,考虑一个数据集,里面有5个限速标志和20个停止标志。如果模型预测所有标志均为停车标志,则其准确率为80%。此外,这种模型的f1分数是88%。因此,该模型很有可能偏向停车标志类。在这类任务中,可以生成其他的数据使数据集的大小相似。
收集更多数据的一种方法就是从不同角度给相同的交通标志拍照。在OpenCV中,可以通过应用仿射变换轻松完成此操作,如旋转、平移和剪切。仿射变换是指变换之前的平行线在变换之后保持平行的变换。
下面将介绍一个可用于生成抖动图像的函数。原始图片输入函数,进行随机角度的翻转,随机平移和随机裁剪并返回一个抖动后的图像。当函数从这些范围制定的均匀分布中选择真实的变换值时。
现在,使用Keras的图像生成器可以实现相同的技术。然而,此处提供的transform_image()函数将帮助您使用参数并查看实际情况。