【问题标题】:How to oversample image dataset using Python?如何使用 Python 对图像数据集进行过采样?
【发布时间】:2018-07-09 23:12:40
【问题描述】:

我正在处理具有不平衡图像数据集(不同类别)的多类分类问题。我尝试了imblearn 库,但它不适用于图像数据集。

我有一个属于 3 类的图像数据集,即 A、B、C。 A 有 1000 个数据,B 有 300 个,C 有 100 个。我想对 B 类和 C 类进行过采样,这样可以避免数据不平衡。请告诉我如何使用 python 对图像数据集进行过采样。

【问题讨论】:

  • 欢迎来到 StackOverflow。请阅读并遵循帮助文档中的发布指南。 on topichow to ask 在这里申请。特别要详细说明您的尝试(“我尝试过 imblearn 库”过于笼统)以及出了什么问题(“它不工作”不是问题规范)。当我们不知道您必须完成什么、您做了什么以及出了什么问题时,我们就无法解决问题。 Minimal, complete, verifiable example 适用于此。
  • 感谢@Prune 让我知道指南。您能否让我知道如何对图像数据进行过采样。我有一个属于 3 类的图像数据集,即 A、B、C。 A 有 1000 个数据,B 有 300 个,C 有 100 个。我想对 B 类和 C 类进行过采样。这样可以避免数据不平衡。请告诉我。再次感谢您尝试帮助我。

标签: python-3.x machine-learning deep-learning computer-vision imblearn


【解决方案1】:

感谢您的澄清。通常,您不要使用 Python 进行过度采样。相反,您预处理您的数据库,复制人手不足的类。在您引用的情况下,您可能会复制 B 类中的所有内容,并将 C 类中的所有内容复制 5 份。这为您提供了 1000:600:500 的新平衡,可能更适合您的训练程序。您现在将 2100 张随机播放,而不是原来的 1400 张图片。

这能解决你的问题吗?

【讨论】:

    【解决方案2】:

    实际上,imblearn.over_sampling 似乎只对 2d dims 输入重新采样。因此,通过此库对图像数据集进行过采样的一种方法是与它一起使用重塑,您可以:

    • 重塑您的图像
    • 过采样
    • 再次将新数据集重塑为 第一个暗淡

    假设您有一个size (5000, 28, 28, 3) and dtype of nd.array 的图像数据集,按照上述说明,您可以使用以下解决方案:

    # X : current_dataset
    # y : labels
    
    from imblearn.over_sampling import RandomOverSampler
    reshaped_X = X.reshape(X.shape[0],-1)
    
    #oversampling
    oversample = RandomOverSampler()
    oversampled_X, oversampled_y  = oversample.fit_resample(reshaped_X , y)
    
    # reshaping X back to the first dims
    new_X = oversampled_X.reshape(-1,28,28,3)
    

    希望对您有所帮助!

    【讨论】:

      猜你喜欢
      • 2019-05-09
      • 1970-01-01
      • 2021-09-21
      • 2020-04-28
      • 2020-12-30
      • 2015-01-31
      • 2020-09-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多