【发布时间】:2017-11-14 06:08:39
【问题描述】:
我有一个分类问题,其中感兴趣的类别仅占数据集的 7%,而整个群体大约有 1200 个观察值。
我了解 Keras 的 ImageDataGenerator 有助于在训练模型之前增加数据以增加观察次数,但是是否可以只增加一个类,例如添加噪声、模糊或仅对少数执行转换上课?
【问题讨论】:
标签: python machine-learning computer-vision keras convolution
我有一个分类问题,其中感兴趣的类别仅占数据集的 7%,而整个群体大约有 1200 个观察值。
我了解 Keras 的 ImageDataGenerator 有助于在训练模型之前增加数据以增加观察次数,但是是否可以只增加一个类,例如添加噪声、模糊或仅对少数执行转换上课?
【问题讨论】:
标签: python machine-learning computer-vision keras convolution
您可以尝试平衡 fit() 函数中的 class_weight 参数,该函数将字典映射到权重值。你甚至可以使用 sklearn 来计算适当的类权重。请参阅此处的 PScs 答案:https://datascience.stackexchange.com/questions/13490/how-to-set-class-weights-for-imbalanced-classes-in-keras
或者您可以使用带有 flow_from_directory() 的 Keras ImageDateGenerator 并使用 save_to_dir 参数将图像增强运行保存到目录,从而生成更多代表性不足的类示例:https://keras.io/preprocessing/image/#imagedatagenerator
对于该虚拟运行,您只需提供您想要更多样本的类的样本。
然后,您将平衡的训练和验证数据用于实际训练。
【讨论】:
有一个机器学习工具包可让您对图像进行增强,包括变换、缩放/拉伸、噪声和模糊。
图像增强器可以在这里找到: https://github.com/codebox/image_augmentor
【讨论】: