我有一个数据集,其中图像文件是单独给出的,该图像文件的标签在单独的 csv 文件中给出,第一列是图像文件名,第二列是其各自的标签。
|图片|标签| |123.jpeg|标签名称|
123.jpeg 真实图像在另一个文件夹(train)中
如何像这样输入数据集并训练我的机器学习模型,以便我有另一个图像文件夹(测试),其中存在用于测试的图像,并且这些图像名称在另一个单独的 test.csv 中给出,只有图像名称
|图片|标签| |13.jpg| ? |
我必须为哪个图像预测标签。如果有人可以用代码结构来解释这一点,那么它会很好理解,因为我是新手。谢谢
最佳答案
您必须先将 csv 文件加载到包含您的标签的数据框中。
import pandas as pd
train = pd.read_csv(path_to_train_csv_file)
test = pd.read_csv(path_to_test_csv_file)
这将加载包含您的 image_name 和分配给它的相应标签的 csv 文件。确保标签名称是字符串,并且测试数据框不会有任何标签列。
然后定义你的train文件夹所在的路径。
train_folder = path_to_train_folder
test_folder = path_to_test_folder
现在您可以使用 tensorflow keras api 加载数据。首先定义一个Data generator
import tensorflow as tf
import tensorflow.keras as keras
from tensorflow.keras.preprocessing.image import ImageDataGenerator
# Define your data generator
train_gen = ImageDataGenerator(
rotation_range=45,
rescale=1./255,
horizontal_flip=True
)
test_gen = ImageDataGenerator(rescale = 1.255)
请注意,测试生成器仅缩放而不增加任何内容,而在训练生成器中应用 horizontal_flip 和旋转范围等增强技术。
创建数据生成器后,我们必须获取数据
train_data = train_gen.flow_from_dataframe(dataframe = train,
directory = train_folder, x_col = name of your column with image,
y_col = name of column of your labels, seed = 42,
batch_size = size of your batch, shuffle = True,
class_mode="categorical",target_size = (height of image, width of image))
test_data = test_gen.flow_from_dataframe(dataframe = test,
directory = test_folder, x_col = name of your column with image,
y_col = None,
batch_size = size of your batch, shuffle = False,
class_mode=None,target_size = (height of image, width of image))
请注意在 test_data 中,y_col 和 class_mode 是 None 的,因为它没有定义并且缺失并且必须被预测。
您可以检查它们是否正确加载。
imgs, lbl = next(iter(train_data))
您可以可视化您的 imgs,这是您的图像批处理,类似地,lbl 是您的标签批处理。
这就是您加载训练数据和测试数据以进行训练的方式
关于machine-learning - 如何使用给出图像数据集的数据集训练模型,并在单独的 csv 文件中给出该图像的标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62218611/