CNN模型测试集表现差求助:人体卧床朝向识别精度不足50%
我的CNN模型测试集表现不佳问题
问题背景
- 任务目标:判断卧床人员的朝向,设置3个类别:仰卧、朝左、朝右
- 数据情况:训练集含4800张裁剪后图像(仅保留卧床人员,包含深色/白色背景),验证集含1500张图像
- 测试结果:测试精度低于50%,损失值≥1.0
数据处理相关代码
输入形状定义:INPUT_SHAPE = (250,150,1)
数据生成器配置:
traindata = ImageDataGenerator(rescale=1./255, shear_range=0.2,width_shift_range=0.1, height_shift_range=0.1, zoom_range=0.2,rotation_range=45, horizontal_flip=False, vertical_flip=False, brightness_range=[0.3,2.0]) valdata = ImageDataGenerator(rescale=1./255)
数据集加载:
training_set = traindata.flow_from_directory(TRAIN_DIR, target_size=INPUT_SHAPE[:-1], shuffle=True,batch_size=BATCH_SIZE, color_mode='grayscale', class_mode='categorical') validation_set = valdata.flow_from_directory(VAL_DIR, target_size=INPUT_SHAPE[:-1], shuffle=False,batch_size=BATCH_SIZE, color_mode='grayscale', class_mode='categorical')
模型与训练代码
模型结构:
model = Sequential() model.add(Conv2D(64, (3,3), activation='relu', padding='same', input_shape=INPUT_SHAPE)) model.add(Conv2D(64, (3,3), activation='relu', padding='same')) model.add(MaxPooling2D((2,2),strides=1)) model.add(Dropout(0.5)) model.add(Conv2D(32, (3,3), activation='relu', padding='same')) model.add(Conv2D(32, (3,3), activation='relu', padding='same')) model.add(MaxPooling2D((2,2),strides=1)) model.add(Dropout(0.5)) model.add(Flatten()) model.add(Dense(128, activation="relu")) # model.add(Dense(512, activation="relu")) # model.add(Dropout(0.5)) model.add(Dense(units=3, activation="softmax")) model.compile(optimizer=Adam(lr=0.001),loss='categorical_crossentropy',metrics=['accuracy'])
训练执行:
history = model.fit(training_set, epochs = 100, validation_data = validation_set, callbacks=[tensorboard, earlyStop] )
训练曲线


已尝试的解决方案(禁止使用预训练模型)
- 调整不同的神经网络结构组合
- 添加
batchnormalization和regularization - 修改图像尺寸
- 扩充训练数据量
- 更换不同优化器及调整学习率
内容的提问来源于stack exchange,提问作者mango orange
相关产品推荐
相关产品推荐

