图像分类模型

2024-09-28 22:23:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我的目标是建立一个花卉图像分类模型。数据RAR文件由一个名为train data的文件夹组成,该文件夹由大约16000个标记为0-16000的图像组成。同样,也有一个测试数据文件夹

除此之外,还有两本csv工作簿。第一个csv工作簿由两个属性组成-label&;花班。有104个标签和104个花卉类别。第二个工作簿还包括两个属性-id&;花班。该数据集与列车数据相对应,具有与列车数据文件夹相同的数据点数量(约16000个)

例如,假设train data文件夹中标记为10的图像是向日葵。因此,在(第二个)工作簿中,id=10对应的flower类条目是向日葵

我发现第一步是将不同花卉类的图像存储到不同的目录中。我已经创建了104个文件夹,但我正在努力重命名我的图像。只有在重命名后,我才能将它们移动到各自的目录中

数据可在此处获取https://www.kaggle.com/ianmoone0617/flower-goggle-tpu-classification

dire = r'C:\Users\Ben\Desktop\Flower classification\flower_tpu\trial_2\\'

for i in range(0,7,1):
    fl_name = flowers_idx['flower_cls'][flowers_idx['id'] == i].iloc[0]
    for count, filename in enumerate(os.listdir(dire)):
        dst = fl_name + ' ' + str(count) + ".JPEG"
        src = dire + filename 
        dst = dire + dst
        os.rename(src, dst)

这是我尝试根据csv查询的flower类名重命名的结果。但它将所有的花重新命名为最后一朵花的名字


Tags: csv数据标记图像文件夹iddata属性
1条回答
网友
1楼 · 发布于 2024-09-28 22:23:33

欢迎来到这个社区。您不需要将图像重新组织到不同的文件夹中。 使用pandas读取两个CSV文件

import pandas as pd

label_csv = pd.read_csv("flowers_label.csv")
flowers_csv = pd.read_csv("flowers_idx.csv")

现在,您可以在flowers_csv中循环,并将图像作为numpy数组加载。 这是代码窃贼

from PIL import Image

X = [] #images
y = [] # labels

base_url = "flowers_google/"

row = 0;
for idx in range(len(flowers_csv)):
  # get the flower row
  flower = flowers_csv.iloc[idx]
  # create flower path
  path = f"{base}{flower.id}.jpeg"
  #load image
  img = Image.open(path)
  # convert to numpy
  img = np.array(img)
  #save to X
  X.append(img)

  # get label
  label = label_csv[label_csv['flower_class'] == flower.flower_cls].label.values[0]
  # save to y
  y.append(label)

您还可以创建自己的自定义Keras数据集类

相关问题 更多 >