Keras 图像回归:正方形的宽度

Keras 图像回归:正方形的宽度,keras,regression,image-recognition,cnn,Keras,Regression,Image Recognition,Cnn,我有一个包含很多图片的数据集,每个图片都显示了一个具有一定宽度的矩形。我现在的任务是通过图像识别自动检测这些矩形的宽度,我已经训练了一个CNN进行图像回归,如下面的代码所示 然而,CNN给了我非常糟糕的值,即在4000000范围内的MSE,以及对实际宽度的非常不精确的估计。在我的实验中,我甚至暂时将训练数据集用作测试数据集,但即使在这里,CNN似乎也没有学到任何有用的东西 你知道我会做错什么吗?有没有可能是我在阅读这些图片时,以某种方式扭曲了图片本身 我对机器学习还比较陌生,所以我很高兴你给我的

我有一个包含很多图片的数据集,每个图片都显示了一个具有一定宽度的矩形。我现在的任务是通过图像识别自动检测这些矩形的宽度,我已经训练了一个CNN进行图像回归,如下面的代码所示

然而,CNN给了我非常糟糕的值,即在4000000范围内的MSE,以及对实际宽度的非常不精确的估计。在我的实验中,我甚至暂时将训练数据集用作测试数据集,但即使在这里,CNN似乎也没有学到任何有用的东西

你知道我会做错什么吗?有没有可能是我在阅读这些图片时,以某种方式扭曲了图片本身

我对机器学习还比较陌生,所以我很高兴你给我的每一个输入信息

这就是模型:

def create_model():
  model = Sequential()
  model.add(Convolution2D(32, (3, 3), input_shape=(64, 64, 3), activation='relu'))
  model.add(Flatten())
  model.add(Dense(64, activation="relu"))
  model.add(Dense(1))
  model.compile(loss="mse", optimizer="adam")
  return model
这是培训代码:

classifier = create_model()

// Getting image id and its corresponding square width
data = pd.read_csv('../data/data.csv')
id_width = data[['id', 'width']]

// Training the model
train_datagen = ImageDataGenerator() 
training_set = train_datagen.flow_from_dataframe(dataframe=id_width,     directory='../data/images', 
                                          x_col="id", y_col="width", has_ext=True, 
                                          class_mode="raw", target_size=(64, 64), 
                                          batch_size=32)


 classifier.fit_generator(
    training_set,
    epochs=50,
    validation_data=training_set)