加载图像组并标记它们

loading groups of images and labeling them

我有一个猫狗数据库,我需要对它们进行 class 验证。我想加载我的数据集文件夹中的所有图像并根据 class 生成标签,例如:

Group 1/
       Pets 1/
          cats/
            breeds_1_cats001.jpeg
            breeds_1_cats002.jpeg
     
           dogs/
            breeds_1_dogs001.jpeg
            breeds_1_dogs002.jpeg
      Pets 2/
          cats/
            breeds_2_cats001.jpeg
            breeds_2_cats002.jpeg
     
          dogs/
            breeds_2_dogs001.jpeg
            breeds_2_dogs002.jpeg
Group 2/
      Pets 1/
          cats/
            breeds_3_cats001.jpeg
            breeds_3_cats002.jpeg
           
          dogs/
            breeds_3_dogs001.jpeg
            breeds_3_dogs002.jpeg
      Pets 2/
          cats/
            breeds_4_cats001.jpeg
            breeds_4_cats002.jpeg
           
           dogs/
            breeds_4_dogs001.jpeg
            breeds_4_dogs002.jpeg
Group 3/
       Pets 1/
          cats/
            breeds_5_cats001.jpeg
            breeds_5_cats002.jpeg
           
          dogs/
            breeds_5_dogs001.jpeg
            breeds_5_dogs002.jpeg
      Pets 2/
          cats/
            breeds_6_cats001.jpeg
            breeds_6_cats002.jpeg
           
          dogs/
            breeds_6_dogs001.jpeg
            breeds_6_dogs002.jpeg
              

我想做的是将数据集中的每张图像加载到一个数组中,然后为每只宠物创建一个 y 标签。

我想要实现的是拥有一个数组 Y,它具有关于 X 的图像标签,以找到的顺序保存图像标签,示例:

Y = [1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0].

但是,由于我拥有的图像数量众多,手动创建此标签并不实用,我该如何实现此结果?

试试这个,首先读取数据集文件夹中的所有文件并遍历文件路径。如果路径包含 cats,则附加猫标签,如果不包含,则附加狗标签:

import glob

images_paths = []
labels = []

files = glob.glob('./Dataset/**/*.jpeg', recursive=True)

for file_path in files:
    if 'cats' in file_path:
        labels.append(1)
    else:
        labels.append(0)

标签 0 - 狗 标签 1 - 猫