DeblurGANv2多epoch训练性能不升反降的参数优化咨询
DeblurGANv2多epoch训练性能不升反降的参数调整方案
针对你使用DeblurGANv2、基于6000张图像数据集、以batch size=1开展训练,10/30/50epoch后PSNR/SSIM/FID指标无提升甚至下降的问题,可从以下方向调整参数:
一、数据集与数据增强优化
- 关闭验证集的数据增强:当前配置中
val段的corrupt继承了训练集的增强操作,这会导致验证结果无法反映模型对真实模糊场景的恢复能力。把val里的corrupt: *CORRUPT改成corrupt: [],用真实的模糊-清晰对做评估。 - 精简训练集数据增强:当前训练集的
corrupt包含8种增强操作,过多过杂的增强会让训练数据偏离真实模糊分布,干扰模型学习。只保留和你的数据集模糊类型匹配的增强(比如如果是运动模糊就留motion_blur),删除其余无关项。 - 确保遍历全量训练数据:当前
train_batches_per_epoch=1000,每个epoch只训练1000张图,6000张的数据集需要6个epoch才能遍历一次,容易导致模型重复学习部分数据而过拟合。把这个值改成训练集的实际数量(4800,对应bounds: [0, .8]),让每个epoch覆盖全量训练数据。
二、模型结构与损失函数调整
- 调整内容损失类型:当前用纯
perceptual损失,更侧重感知质量,但和像素级指标(PSNR/SSIM)对齐度差。可以换成pixel(L1/L2)损失,或者混合损失(比如content_loss: perceptual+pixel),让模型兼顾像素精度和感知效果。 - 优化对抗损失配置:
adv_lambda=0.001权重过低,对抗损失的作用难以发挥;但权重过高又容易过拟合。可以尝试调整为0.005或0.01,同时将disc_loss从ragan-ls换成hinge或普通lsgan,提升判别器训练的稳定性。 - 减小模型规模避免过拟合:
g_name: fpn_inception搭配blocks:9模型参数过多,6000张图+batch size=1的场景下容易过拟合。可以把blocks改成6,或者换成更轻量的生成器(比如unet),减少模型容量。 - 关闭Dropout:当前
dropout: True,在训练数据量不算极大的情况下,Dropout会降低模型的学习能力。改成dropout: False,提升模型的特征提取能力。
三、训练策略与优化器调优
- 用梯度累积模拟大batch:batch size=1会导致梯度噪声大,训练不稳定。可以在代码中实现梯度累积,每累积4个batch再更新一次参数,等效于batch size=4,让梯度更新更平滑。
- 提前启动学习率衰减:当前
scheduler的start_epoch=50,意味着前50epoch都用固定lr=0.0001,后期学习率过高容易导致模型震荡。把start_epoch改成20,或者将scheduler: name换成cosine(余弦退火),让学习率衰减更平滑,利于后期收敛。 - 加入早停机制:如果训练到30epoch后验证指标开始下降,说明已经过拟合。添加早停逻辑,当验证loss连续5epoch不下降时停止训练,保存最优模型,无需硬训到50epoch。
四、其他检查项
- 确认模糊图与清晰图的配对完全正确,无错误配对或低质量图像混入数据集;
- 验证评估时用的是无增强的原始图像,确保指标反映真实性能。
内容的提问来源于stack exchange,提问作者송민지
相关产品推荐
相关产品推荐

