基于UNet的中风病灶二分类任务:模型无有效收敛求助
问题描述
我正在基于UNet开展中风病灶二分类任务,按病灶面积大小划分:大面积为1,小面积为0。标签为自行标注,准确性有待提升。训练20个epoch后,模型准确率始终在0.5左右波动,损失维持在0.6上下,表现近乎随机猜测。
使用的UNet代码
import keras_unet def define_unet(n_filters=neuron, n_layers=4, dropout_rate=0.25): model_unet = keras_unet.models.custom_unet(input_shape=(img_size, img_size, 3), activation='relu', use_batch_norm=True, upsample_mode='deconv', dropout=dropout_rate, dropout_type='spatial', filters=n_filters, num_layers=n_layers, output_activation='linear' ) GAP = keras.layers.GlobalAveragePooling2D()(model_unet.output) outputs = keras.layers.Dense(1,activation = 'sigmoid')(GAP) model_unet = keras.Model(inputs = model_unet.input, outputs = outputs) #bce is just the binary crossentropy model_unet.compile(optimizer=adam, loss=bce_loss,metrics=['accuracy']) model_unet.summary() return model_unet
超参数设置
learning_rate = 0.0001 epochs = 20 dropout_rate = 0.2 batch_size = 16 kernel_size = 3 neuron = 8 adam = keras.optimizers.Adam(learning_rate=learning_rate)
数据集与训练情况
数据集包含1000张图像,按8:2划分为训练集与验证集,使用batch_size=16训练。
准确率曲线:
损失曲线:
已尝试调整多种学习率,但问题仍未解决,恳请提供优化建议,感谢!
优化建议
1. 优先排查数据与标签问题
- 标签准确性校验:随机抽取30-50张图像重新核对标注,自行标注的标签若存在大量错误,模型无法学习到有效特征,必然只能随机输出。
- 类别分布统计:统计训练/验证集中两类样本的数量,若存在严重失衡(如9:1),会导致模型训练方向偏差,可采用过采样少类样本、欠采样多类样本,或使用加权交叉熵损失(给少类样本更高权重)。
2. 调整模型结构适配分类任务
- 修正UNet输出逻辑:UNet原生是为分割任务设计,输出为同尺寸特征图,直接接全局平均池化会丢失病灶局部细节。建议:
- 方案一:移除GAP,将UNet最后一层特征图通过1x1卷积降维为单通道,再接sigmoid输出;
- 方案二:改用ResNet、EfficientNet等原生分类模型,这类模型在二分类任务上的效率和效果更适配。
- 提升模型容量:初始卷积核设为8,模型容量过小,难以捕捉中风病灶的复杂特征,建议将
neuron调整为32或64,逐步增加模型表达能力。 - 优化Dropout设置:当前代码中函数参数与超参数的dropout_rate不一致,需统一;同时spatial dropout在小模型上可能过度抑制特征,可暂时移除dropout,观察模型是否能拟合。
3. 优化训练策略
- 确认损失函数正确性:确保
bce_loss是标准的二元交叉熵(如keras.losses.BinaryCrossentropy()),自定义损失函数出错会直接导致训练失效。 - 增加训练轮数并加入早停:20个epoch可能不足以让模型学到有效特征,可提升至50-100个epoch,同时添加
EarlyStopping回调,当验证损失连续5-10个epoch无下降时停止训练,避免过拟合。 - 使用动态学习率:除了固定学习率,可尝试
ReduceLROnPlateau调度器,当验证损失停滞时自动降低学习率;或采用余弦退火学习率,帮助模型后期精细调整。 - 加入数据增强:针对中风病灶图像,添加随机翻转、旋转、缩放、亮度调整等增强操作,提升样本多样性,帮助模型泛化。
4. 规范数据预处理
- 图像归一化:确保输入图像完成正确归一化(如缩放到0-1或-1到1),未归一化的图像会导致模型难以收敛。
- 增强病灶对比度:若原始图像中病灶占比极小,可采用医学图像常用的窗宽窗位调整,凸显病灶区域,降低模型特征提取难度。
内容的提问来源于stack exchange,提问作者Garland Xu
相关产品推荐
相关产品推荐

