Skip to content

实验报告

一、生成器和判别器训练方式说明

1. 两阶段训练策略

阶段一:生成器预训练

  • 使用MSE损失函数进行预训练
  • 仅训练生成器,不涉及判别器
  • 目的:让生成器初步学习从LR到HR的映射
  • 训练轮数:4个epoch

阶段二:SRGAN对抗训练

  • 使用完整的感知损失函数:
    • VGG特征损失(内容损失)
    • 对抗损失
  • 生成器和判别器交替训练
  • 损失函数权重:β = 1e-3 由于时间关系和内存GPU,从100轮缩减到50 在缩减到10最后到4,导致模型的精度会极大下降

2. 训练优化措施

  • 混合精度训练:使用AMP减少显存占用,加快训练速度
  • 早停机制:预训练patience=8,SRGAN训练patience=5(没用上)
  • 学习率调整:每5-6个epoch学习率减半
  • 数据增强:随机裁剪、翻转、旋转等

二、模型最佳参数和测试结果

模型参数配置

python
# Generator参数
large_kernel_size = 9
small_kernel_size = 3  
n_channels = 16
n_blocks = 8

# Discriminator参数
kernel_size = 3
n_channels = 8
n_blocks = 4
fc_size = 256

# 训练参数
batch_size = 8
pretrain_lr = 3e-4
srgan_lr = 3e-4
beta = 1e-3

测试集结果汇总

数据集图片数量平均PSNR平均SSIM
Set5525.6090.692
Set141424.5130.623
B10010024.1880.591
Urban10010022.3370.588
DIV2K验证集10025.2860.642
总体平均31924.3870.627

三、Set5测试集图片生成结果

从测试结果可以看出:

  • PSNR指标:在Set5上达到25.609,表现良好
  • SSIM指标:0.692,表明生成图像在结构相似性方面表现不错
  • 视觉质量:根据测试代码中的可视化功能,可以观察到SRGAN生成的图像在细节恢复和纹理保持方面优于传统的双三次插值

四、所做的尝试和改进

1. 训练策略改进

  • 两阶段训练:避免了GAN训练的不稳定性
  • 学习率调度:动态调整学习率提高收敛性
  • 早停机制:防止过拟合,节省训练时间

2. 技术优化

  • 混合精度训练:显著减少显存占用,允许使用更大batch_size
  • 数据加载优化:使用多进程数据加载,提高IO效率
  • 内存管理:添加显存清理和优化配置

3. 代码结构优化

  • 模块化设计:将训练、验证、测试功能分离
  • 配置文件:使用EasyDict管理超参数
  • 检查点保存:定期保存模型,支持训练恢复

五、结果如下

![[Pasted image 20251109224505.png]] ![[Pasted image 20251109224534.png]]

4. 遇到的挑战和解决方案

挑战1:显存不足

  • 问题:SRGAN训练时CUDA内存溢出
  • 解决方案:
    • 使用混合精度训练
    • 减小batch_size
    • 添加显存优化配置

挑战2:训练不稳定性

  • 问题:GAN模式崩溃
  • 解决方案:
    • 采用预训练策略
    • 调整损失函数权重
    • 使用更稳定的优化器

六、结论

本实验成功实现了基于SRGAN的图像超分辨率系统,主要成果包括:

  1. 模型性能:在多个测试集上取得了良好的PSNR和SSIM指标
  2. 训练稳定性:通过两阶段训练策略解决了GAN训练的不稳定性问题
  3. 代码质量:实现了模块化、可配置的训练框架
  4. 技术创新:结合了混合精度训练、早停机制等现代深度学习技术

知识如风,常伴吾身