代码和报告均为本人自己实现(实验满分),只展示主要任务实验结果,如果需要详细的实验报告或者代码可以私聊博主,接实验技术指导1对1
实验要求布置链接http://t.csdnimg.cn/T2hS9
Model 实现说明
代码实现了一个基于生成对抗网络(
SRGAN
)的图像超分辨率模型。总体来说,
SRGAN
由两个主要组件组成:生成器(
Generator
)和判别器(
Discriminator
),
它们相互对抗并共同演进以生成更高质量的图像。以下是这个模型的总体实现说
明:
生成器(Generator):
生成器的任务是从低分辨率的输入图像(例如,随机噪声)生成高分辨率的图像。生成器由一系列卷积层、残差块和上采样层组成。首先,通过一个卷积层将输入映射到特征图。然后,通过多个残差块来逐步增加深度,帮助生成更真实的图像。接下来,使用卷积层对特征图进行处理。
最后,使用卷积层输出生成的高分辨率图像。
判别器(Discriminator):
判别器的任务是将输入的图像分类为真实图像(来自训练数据集)或伪造图像(由生成器生成)。
判别器包括多个卷积层和下采样层,逐渐减小输入图像的分辨率。通过这些层,判别器学会识别图像的特征,以便能够准确分类真实和伪造图像。最后,判别器输出一个介于 0
和
1
之间的概率值,表示输入图像是真实的概率。
TruncatedVGG19
(截断的
VGG19
网络):
这个网络用于计算生成的图像与真实图像之间的均方误差(
MSE
)损失。它包括 VGG19
网络的前面的卷积层,用于提取图像的特征。这些特征用于衡量生成的图像在特征空间上与真实图像的相似性。
训练过程:
在训练过程中,生成器和判别器相互竞争。生成器试图生成越来越逼真的图像,以欺骗判别器。
判别器尝试区分真实图像和伪造图像。训练过程中,通过最小化生成器和判别器的损失来不断改进它们的性能。生成器的损失包括生成的图像的均方误差损失和判别器的输出误差。判别器的损失包括正确分类真实图像和伪造图像的误差。
训练策略
G1D1:
每个周期中,
G
训练一次,
D
训练一次,一共训练
10
个周期
G1D2
:
每个周期中,
G
训练一次,
D
训练两次,一共训练
10
个周期
G2D1
:
每个周期中,
G
训练两次,
D
训练一次,一共训练
10
个周期
G10G1D1
:
先预训练
G10
个周期,再进行
G
和
D
交替训练一共
10
周期
G1D1_clr
:
在
G1D1
的基础上把学习率从
1e-3
变为
1e-4
,同时
batch_size
从
16
改为
8
运行
具体运行结果如下所示
G1D1 训练结果
从测试的图片可以看出除了第一张狒狒的鼻子上有马赛克以外,
set5
测试集的
5 张图片都效果不错。
G1D2 训练结果
除了最后一张的小宝宝图片空白处有小部分马赛克区域外,其他图片都效果不错
G2D1 训练结果
在第三张小孩的头发处和第五张鹦鹉身体处还有最后一张小孩衣服上均有不同程度的马赛克,效果不太好
G10G1D1 训练结果
小孩头发处和鹦鹉背部区域出现马赛克,效果一般
G1D1_clr 训练结果
在小孩头发上和鹦鹉腹部有马赛克,效果一般
实验总结:
以 PSNR,SSIM 值为基准评价的话是 G10G1D1 的训练方式最好,但 是我们可以看到测试图片效果反而不是最好的。所有训练策略后的测试图片均出 现了不同程度的马赛克区域,但是相比之下 G1D2 的训练方式效果相对更好,只 出现在最后一张小宝宝白色背景处有一点马赛克,其他图都是效果很不错。 在改进参数方面后发现测试集实际效果也不太好,还不如原始代码运行出的效果
好