【问题标题】:Classify images with different number of data for each class为每个类使用不同数量的数据对图像进行分类
【发布时间】:2017-02-15 15:34:19
【问题描述】:

我有 7 类图像需要分类。每个类都有不同数量的样本。

  1. 75 张图片
  2. 70 张图片
  3. 98 张图片
  4. 182 张图片
  5. 146 张图片
  6. 197 张图片
  7. 150 张图片

我最终删除了所有课程中的所有图像,减少到 70 张图像(50 张训练和 20 张验证)。使用 Keras 和生成器以及 flow_from_directory 方法,我能够对所有这些进行分类,但很明显我不会得到很好的准确性。我也有计划在以后增加数据。

我的问题是,我可以使用 flow_from_directory 方法为每个班级使用不同数量的训练数据吗?这种方法有什么潜在的缺点吗?

例如:

  1. 55 次培训 - 20 次验证
  2. 50 次培训 - 20 次验证
  3. 78 次培训 - 20 次验证
  4. ......

谢谢

【问题讨论】:

  • 我相信不同数量的样本会起作用,但你的模型会偏向于更频繁的类。按照你的比例,这应该不是问题。
  • @AlexandrePassos 我听说有偏分类出现了,当你的批次大小与类的数量和它们在批次中出现的概率相比变得很小时。例如。如果您在示例中拥有 7 个类,但一批中只有 10 个图像,那么您很有可能无法在一批中表示某些类。我听说你可以通过让你的批次足够大来容纳所有类的图像来避免这个问题,例如在上面的示例中,batch_size=150 图像。你会说我报告的声明是有效的吗?

标签: tensorflow keras keras-layer


【解决方案1】:

可以,但最好使每个类中的训练样本数量相等,否则分类器可能倾向于将图像分类到训练样本最多的类中。

说,也许你可以将第 2 类的训练样本加倍(通过复制和粘贴)?

对于数据增强,您可以为训练样本添加噪声,例如添加高斯噪声、裁剪和调整图像大小等。通过这样做,模型将更加健壮。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-06
    相关资源
    最近更新 更多