使用 imgaug 增加数据集大小

Increasing dataset size using imgaug

我正在将包含图像的两个不同数据集合并到一个数据集中。其中一个数据集包含训练集中的 600 张图像。另一个数据集仅包含 90-100 张图像。我想通过使用 imgaug library 来增加后一个数据集的大小。这些图像存储在 class 名称下的文件夹中。因此,训练集中 "cake" 图像的路径将是 ..//images//Cake//cake_0001。我正在尝试使用此代码来扩充此数据集中的图像:

path = 'C:\Users\User\Documents\Dataset\freiburg_groceries_dataset\images'

ia.seed(6)

seq = iaa.Sequential([
    iaa.Fliplr(0.5),
    iaa.Crop(percent=(0, 0.1)),
    iaa.Affine(rotate=(-25,25))
], random_order=True)

for folder in os.listdir(path):
    try:
        for i in os.listdir(folder):
            img = imageio.imread(i)
            img_aug = seq(images=img)
            iaa.imshow(img_aug)
            print(img_aug)
    except:
        pass

现在没有输出,即使我输入 print(img)imshow(img) 或任何东西。如何确保为该数据集获取更多图像?另外,增强图像的最佳位置是什么?增强图像存储在哪里,我如何查看生成了多少新图像?

因为folder不是您要查找的目录路径。 您应该将 for i in os.listdir(folder): 更改为 for i in os.listdir(path+'\'+folder):。然后它会在 path\folder 目录中查找文件。

问题不清楚。因此,对于问题 2:error in saving file and not able to visualize using imshow().

第一:在第二个循环代码块

img = imageio.imread(i)
img_aug = seq(images=img)
iaa.imshow(img_aug)
print(img_aug)

第一个错误是:i 不是文件路径。要解决此问题,请将 imageio.imread(i) 替换为 imageio.imread(path+'/'+folder+'/'+i)

第二个错误是:iaa doesn't have the property imshow()。 要修复此问题,请将 iaa.imshow(img_aug) 替换为 iaa.imgaug.imshow(img_aug)。这修复了可视化和完成循环执行的错误。

其次:如果您在保存图像时遇到任何问题,请使用PIL。 即,

from PIL import Image
im = Image.fromarray(img_aug)
im.save('img_aug.png')`