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