You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何加载含多回归值的图像数据集用于神经网络训练?

解决flow_from_dataframe加载多回归标签的问题

flow_from_dataframe完全支持加载多个回归值,核心是设置class_mode='raw'参数,同时把多个回归列名以列表形式传给y_col。以下是具体实现步骤:

1. 确认CSV结构

你的annotation.csv需要包含图像文件名和两个回归值列,示例结构如下:

filename,x_cord,y_cord
img1.jpg,120.5,340.2
img2.jpg,98.1,276.8
...

2. 使用flow_from_dataframe生成多标签数据

直接通过指定y_col为两个回归列名,class_mode='raw'来生成包含图像和双回归值的批量数据:

import pandas as pd
from tensorflow.keras.preprocessing.image import ImageDataGenerator

# 读取标注文件
df = pd.read_csv('annotation.csv')

# 初始化数据生成器(可根据需求添加数据增强)
datagen = ImageDataGenerator(rescale=1./255)

# 生成训练数据生成器
train_gen = datagen.flow_from_dataframe(
    dataframe=df,
    directory='./your_image_directory',  # 替换为你的图像存储路径
    x_col='filename',  # 图像文件名对应的列名
    y_col=['x_cord', 'y_cord'],  # 两个回归值的列名,用列表传入
    target_size=(224, 224),  # 匹配你的模型输入尺寸
    batch_size=32,
    class_mode='raw',  # 关键参数:返回原始数值数组,支持多输出
    shuffle=True
)

3. 构建适配多回归输出的模型

模型的输出层需要设置为Dense(2),对应两个回归值的预测:

from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Conv2D, Flatten, Dense

# 示例回归模型(可根据需求修改)
model = Sequential([
    Conv2D(32, (3,3), activation='relu', input_shape=(224,224,3)),
    Flatten(),
    Dense(64, activation='relu'),
    Dense(2)  # 输出2个回归值
])

# 回归任务用MSE作为损失函数
model.compile(optimizer='adam', loss='mean_squared_error')

# 开始训练
model.fit(
    train_gen,
    epochs=10,
    steps_per_epoch=len(df) // train_gen.batch_size
)

注意事项

  • 确保CSV中的文件名和图像文件夹中的文件名完全一致(包括后缀名)
  • 如果需要验证集,同样用flow_from_dataframe生成,注意设置shuffle=False
  • class_mode='raw'适用于所有需要返回原始数值标签的场景,不止双回归,多回归/多标签都能用

内容的提问来源于stack exchange,提问作者niva naik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 21:10:26