keras
ImageDataGenerator
可用于"通过实时数据增量生成批量张量图像数据"(https://keras.io/preprocessing/image/)
教程在
https://blog.keras.io/building-powerful-image-classification-models-using-very-little-data.html
演示了如何使用ImageDataGenerator扩充小而平衡的数据集.是否有一种简单的方法可以使用此生成器来增加严重不平衡的数据集,从而使得生成的生成数据集得到平衡?
这不是处理不平衡数据的标准方法.我也不认为它是真的有道理 - 你将显着改变你的类的分布,其中较小的类现在变化较小.较大的类具有丰富的变化,较小的类似图像具有小的仿射变换.它们将生活在图像空间中比大多数类更小的区域.
更标准的方法是:
model.fit中的class_weights参数,您可以使用该参数使模型从少数类中学习更多.
减少大多数班级的规模.
接受不平衡.深度学习可以解决这个问题,它只需要更多的数据(真正的解决方案).
前两个选项实际上是一种黑客攻击,这可能会损害您处理现实世界(不平衡)数据的能力.两者都没有真正解决低变异性的问题,这是数据太少所固有的.如果在模型训练之后应用于真实世界数据集并不是一个问题,并且您只想在所拥有的数据上获得良好的结果,那么这些选项都很好(并且比为单个类生成生成器要容易得多).
如果您有足够的数据,第三种选择是正确的方法(例如,谷歌最近关于检测糖尿病视网膜病变的论文在阳性病例介于10%和30%之间的数据集中实现了高准确度).
如果你真的想为一个类生成各种增强图像而不是另一个类,那么在预处理中这样做可能是最容易的.获取少数类的图像并生成一些增强版本,并将其称为数据的所有部分.就像我说的,这一切都很糟糕.