首页 > 解决方案 > ImageDataGenerator 获取水平数据集?

问题描述

每个标签的图像数量我有一个相当不均匀的数据集(最大的是 700,最小的是 30)。

所以我认为我可以使用 ImageDataGenerator 为具有最少图像数量的标签生成更多图像,并逐步使用其余标签,直到达到每个标签的图像数量的水平。后来,他将进行培训。

我一直在考虑通过几个循环和使用 ImageDataGenerator 进行转换来获得每个标签大致相同数量的图像,但我不知道我是否做得对,因为我认为可能有更简单的方法,或者我得到了获得良好培训的错误策略。

标签: python-3.xtensorflowkerasscikit-learndeep-learning

解决方案


ImageDataGenerator 不会创建新图像,它只是对您的图像进行批处理,并可以对它们应用一些增强以创建稍微多样化的数据集。你可以做的就是这个链接。您可以遍历存储图像的目录,并使用 openCV 来扩充它们,然后再次保存它们。它可以轻松地增加您使用它的任何类的数量。

这是一个示例,其中将每个图像旋转您想要的任意度数并保存

from PIL import Image
import os

os.chdir('/path/to/image/directory')
names = os.listdir()
for i in names:
    os.chdir('/path/to/image/directory') #chdir to location of images
    img = Image.open(i).rotate(180) #90,180,270
    
    #Where you want to save to
    os.chdir('path/to/save/location')
    
    img.save(i)
    os.rename('%s' % i, '180_%s' % i)

您可以复制上面的代码或使用此repo


推荐阅读