首页 > 解决方案 > 如何将图像及其对应值(.csv)输入到 python 中的回归模型?

问题描述

我有一个图像数据集和一个 .csv 文件,其中包含这些图像的名称以及与每个图像关联的一些值(范围为 1-5)。例如图像数据集,该值给出降雨量,范围从 1(最低)-5(最高)。这些值甚至可以是小数,例如 2.5。

我已经开发了一个图像分类模型,我对图像值进行了四舍五入,并将整个数据集分为 5 个类,并将 5 个文件夹输入到模型中。

|data folder1 (training)

 |train_data_dir

  |class1
   |image1.jpg
   |..
   | image100.jpg

  |class2
   |image1.jpg
   |..
   | image100.jpg

  |class5
   |image1.jpg
   |..
   | image100.jpg

|data folder2 (test) similar as above


*model description*
 x = Dense(1024, activation="relu")(x)<br>
 x = Dropout(0.5)(x) <br>
 ... 

 *train_generator = train_datagen.flow_from_directory(train_data_dir,   target_size=(img_height, img_width), batch_size=batch_size, class_mode="categorical")*

现在我想为同样的问题设计一个回归模型。我想知道如何输入图像(例如 image.jpeg)及其对应的值(保存在 data.csv 中)文件并将其作为输入发送到神经网络?

|data folder1 (training)

 |images folder
   |image1.jpg
   |..
   | image500.jpg

 |data.csv
   |image name
   |rainfall amount (1-5) including fractions

|data folder2 (test) similar as above

标签: pythonimagecsvtensorflowregression

解决方案


您似乎正在尝试通过生成器从训练集中加载图像以训练 TensorFlow 模型。您几乎掌握了方法论,但您可能不太了解实现。TensorFlow 在使用时需要以下目录结构flow_from_directory

|-data
  |-train
    |-class_1
      |-img1.png
      |-img2.png
    |-class_2
      |-img1.png
      |-img2.png
  |-test
    |-img1.png
    |-img2.png

如您所见,这个特定的实现需要一个类。据我所知,它不适合回归任务。但是,您可以使用flow_from_dataframe相当类似的方法来完成此操作。您将需要构建一个 pandas DataFrame,其中一列引用文件路径,另一列引用您的回归目标。您的生成器大约是:

train_data_gen = image_generator.flow_from_dataframe(dataframe=train_df,
                                                     x_col='filename',
                                                     y_col='regression_val',
                                                     batch_size=BATCH_SIZE,
                                                     shuffle=True,
                                                     target_size=(IMG_HEIGHT, IMG_WIDTH))

推荐阅读