图像分类模型

时间:2020-04-06 06:11:51

标签: python

我的目标是建立花朵的图像分类模型。数据RAR文件由一个名为Train data的文件夹组成,该文件夹包含大约16000张从0到16000标记的图像。同样,还有一个用于测试数据的文件夹。

除此之外,还有两个csv工作簿。第一个csv工作簿包含两个属性-label和flower类。有104个标签和104个花卉类别。第二本工作簿还包含两个属性-id和flower类。该数据集与火车数据相对应,并且具有与火车数据文件夹相同的数据点数(大约16000)

例如,假设火车数据文件夹中标记为10的图像是向日葵。因此,在第二本工作簿中,对应于id = 10的花类条目是向日葵。

我已经知道,第一步是将单独的花朵类的图像存储到单独的目录中。我已经创建了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查询的花朵类名称重命名。但是它将所有花朵重命名为最后一个花朵的名字。

1 个答案:

答案 0 :(得分:0)

欢迎来到这个社区。您无需将图像重新组织到其他文件夹中。 使用熊猫读取两个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数据集类。