Tensorflow 图像分类:数千个类别上的严重不平衡数据

Tensorflow 图像分类:数千个类别上的严重不平衡数据,tensorflow,deep-learning,classification,Tensorflow,Deep Learning,Classification,我有一个数据集,由大约5000个图像类别组成,但每个类别的图像数量从20到2000不等,这是相当不平衡的。此外,图像的数量远远不够从头开始训练模型。我决定对预先训练好的模型进行微调,比如《盗梦空间》模型 但我不确定如何处理不平衡的数据。有几种可能的方法: 过采样:对少数类别进行过采样。但即使采用积极的图像增强技术,我们也可能无法处理过度拟合。 另外,如何从这么多类别的不平衡数据集中生成平衡批次?你对TensorFlow的管道机制有什么想法吗 斯莫特:我认为它对像图像这样的高维信号不是很有效 将重

我有一个数据集,由大约5000个图像类别组成,但每个类别的图像数量从20到2000不等,这是相当不平衡的。此外,图像的数量远远不够从头开始训练模型。我决定对预先训练好的模型进行微调,比如《盗梦空间》模型

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

  • 过采样:对少数类别进行过采样。但即使采用积极的图像增强技术,我们也可能无法处理过度拟合。
    另外,如何从这么多类别的不平衡数据集中生成平衡批次?你对TensorFlow的管道机制有什么想法吗
  • 斯莫特:我认为它对像图像这样的高维信号不是很有效
  • 将重量放在每批的交叉熵损失上。这可能对单个批次有用,但不能处理总体不平衡
    有什么想法吗?任何反馈都将不胜感激

    从预先训练好的ImageNet层开始,添加您自己的最终层(根据需要使用适当的卷积、退出和展平层)。冻结除最后几层以外的所有ImageNet层,然后在数据集上进行训练


    对于不平衡的数据(通常是小数据集),使用数据扩充来创建更多的训练图像。Keras内置此功能:

    使用
    tf.loss.softmax\u cross\u entropy
    并为每个类设置与其训练频率成反比的权重,以“平衡”优化。

    感谢您的回复!我将在Inception\u Resnet\u v2上尝试您的方法。另外,您对处理不平衡数据有什么想法吗?对不起,我没有注意到您对不平衡数据的评论。我正在尝试使用图像增强来使用增强器和imgauge库来增强少数类。我将在完成模特训练后报告我的结果。另外,我从少数民族班级采集了过多的图像来补偿不平衡。嗨@TongShen,你知道了吗?你能帮我一下吗?我现在的处境和你一样。这是个好主意,我以前也想过。我有大约5000个班级,有些班级有2000多张图片,而有些班级只有20张。如果我将此规则应用于单个批次,少数类中的某些图像将乘以100,而批次大小仅为20。我认为这一批中其他班级的培训将被摧毁。你觉得这个问题怎么样?如果你能将你的模型推广到一个只有20个训练样本的类,我会非常惊讶。有没有其他方法可以说明你的问题?例如,您是否可以使用“混合”标签来代替5000个独立标签(例如,类别1具有标签[1 0…0 1…0 1]等等)?这是问题的难点。我无法将我的模型推广到少数族裔。另外,我并不期望我的模型得到完美的结果,80%的准确率就好了。对于你的想法,我不认为使用混合标签有什么好处,你能解释一下吗?考虑到上下文,80%仍然是一个相当高的数字。你想过我的问题重述评论吗?是的,我想过。你的意思是使用混合标签而不是一个热标签吗?例如,在三个类的情况下,一个热标签将是[1 0]、[0 1 0]、[0 0 1]。使用混合标签,它可以类似于[1 10]、[0 1 1]、[1 0 1]。任何三个线性独立的向量都可以工作。如果是这样的话,我想不出这如何帮助我解决数据集的不平衡。你能给我一个更详细的解释吗?