实验7:图像超分辨率

本文介绍了概率图模型在描述世界分布中的作用,探讨了玻尔兹曼机、受限玻尔兹曼机以及能量模型。接着,讨论了深度信念网络和对抗生成网络的概念。重点在于SRGAN,它利用生成对抗网络提升图像的分辨率,通过训练流程和损失函数实现超分辨率。实验结果显示,不同block数量的生成器有不同的效果,对抗生成的思想在图像处理中有广泛应用。
摘要由CSDN通过智能技术生成

实验7:图像超分辨率

概率图模型(Probabilistic Graphical Models)

简述:概率图模型(PGMs)的目的是如何使用整体概率分布去描述和再现这个世界的某种实际分布(规律)

玻尔兹曼机

image-20230624113758931

受限玻尔兹曼机

image-20230624113833269

能量模型

image-20230624113935498

清醒-睡眠算法:其实就是 先对样本做采样 ,然后把采样好的hidden固定,然后用采样好的hidden对生成的样本节点做采样,如图:image-20230624114152319

深度信念网络

因为前面的算法网络都不是很深,貌似都是一层隐层。深度信念网络采用了多个RBM来做隐层,不断的做上下采样(训练)

image-20230624114603364

对抗生成网络

相当于两个人进行博弈,生成器要骗过判别器,判别器要识别出生成的图片,直到判别器网络将生成器网络的生成结果判别为真

(一开始想这个应该是可以用分类网络做,但是,在生成任务中,可能也没有极为正确的样本,换句话来说我们没有真实样本的分布,所以不能用分类网络来做)

零和博弈

image-20230624114947757

SRGAN

模型架构

image-20230624115753704

SRGAN训练流程是 先有一张高分辨率(real)的一张低分辨率(fake)的,先把低分辨率的给生成器生成图片,然后把real的给判别器训练,然后把fake给判别器然后求损失。具体的实现SRGAN做了几个loss相加,其中一个比较有意思的是先做resize等操作后用vgg19来提取特征,比较VGG进行特征提取后的空间内距离算loss。

sr_imgs = convert_image(sr_imgs, source='[-1, 1]', target='imagenet-norm', device=device)
sr_imgs_in_vgg_space = truncated_vgg19(sr_imgs)
hr_imgs_in_vgg_space = truncated_vgg19(hr_imgs).detach()

sr_discriminated = discriminator(sr_imgs)

content_loss = content_loss_criterion(sr_imgs_in_vgg_space, hr_imgs_in_vgg_space)

实验结果

8个black块的效果 ()

  • ​ test结果:

image-20230624092521380

super_resolution结果

image-20230624092627863

16 个black块的效果

  • Test

    • image-20230624162935728
  • SR

    • image-20230624161133713
  • Test

实验总结

生成器16个block的只训练了3个epoch 但是好像比8个block的还要好,可能是我参数没调好 一开始模型就陷入局部最优了吧 但是效果感觉还可以,就是有点感觉曝光,回头看看源码,如果老师您看到了,也麻烦您告诉一下原因。
这个实验很有趣,知道修复老旧电影和一些老的演唱会是咋回事了,GAN这种生成对抗的思想很有趣,有点像博弈的思想,双方都会做出最优的操作(因为都是梯度下降,只是初始的随机值不一样),看到了一种新的网络,目标函数设计的非常的厉害,每次看到这种精妙的公式就感觉很美。然后这个UpSampleBlock感觉也很有意思,直接从低维映射到高维(低通道特征->高通道特征)。把像素重排之前的那个图看看,打印一下。
 def forward(self, x):
        x = self.conv(x)
        x_numpy = x.detach().numpy()
        plt.imshow(x_numpy)
        plt.show()
        x = self.pixel_shuffle(x)
        x_numpy = x.detach().numpy()
        plt.imshow(x_numpy)
        plt.show()
        x = self.prelu(x)
        return x

参考文献/博客/github:

1.https://zhuanlan.zhihu.com/p/101494234

2.https://github.com/tensorlayer/SRGAN/blob/master/train.py

3.Ledig C, Theis L, Huszár F, et al. Photo-realistic single image super-resolution using a generative adversarial network[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2017: 4681-4690.

4.https://zhuanlan.zhihu.com/p/538486178

5.https://zhuanlan.zhihu.com/p/101494234

6.https://www.zhihu.com/tardis/bd/art/543845338?source_id=1001

p/538486178

5.https://zhuanlan.zhihu.com/p/101494234

6.https://www.zhihu.com/tardis/bd/art/543845338?source_id=1001

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值