图像分类模型



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

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

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

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

此处提供数据https://www.kaggle.com/ianmoone0617/flower-goggle-tpu-classification

dire = r'C:UsersBenDesktopFlower classificationflower_tputrial_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中查询的花类名称进行重命名。但它将所有的花重新命名为最后一朵花的名字。

欢迎来到这个社区。您不需要将图像重新组织到不同的文件夹中。使用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数据集类。

最新更新