图像分类:数千个类的重度不平衡数据

时间:2018-04-03 01:50:53

标签: tensorflow deep-learning classification

我有一个由大约5000种图像组成的数据集,但每个类别的图像数量从20到2000不等,这是非常不平衡的。此外,图像的数量远远不足以从头开始训练模型。我决定对预训练模型进行微调,比如Inception模型。

但我不确定如何处理不平衡的数据。有几种可能的方法:

  1. 过采样:过度采样少数类别。但即使采用积极的图像增强技术,我们也可能无法处理过度适应 另外,如何从如此多类别的不平衡数据集生成平衡批次?您对TensorFlow的管道机制有什么想法吗?
  2. SMOTE:我认为它对于像图像这样的高维信号并不那么有效。
  3. 在每批中重视交叉熵损失。这可能对单批次有用,但不能处理整体不平衡。
  4. 有关于此的任何想法?任何反馈将不胜感激。

2 个答案:

答案 0 :(得分:1)

从预先训练过的ImageNet图层开始,添加自己的最终图层(根据需要进行适当的卷积,删除和展平图层)。冻结除最后几个ImageNet图层之外的所有图层,然后训练您的数据集。

对于不平衡数据(通常是小型数据集),使用数据扩充来创建更多训练图像。 Keras内置了此功能:Building powerful image classification models using very little data

答案 1 :(得分:1)

使用tf.losses.softmax_cross_entropy并为每个班级设置与其训练频率成反比的权重,以达到"平衡"优化。