生成对抗网络实现超分

生成式对抗网络(GAN, Generative Adversarial Networks )是一种深度学习模型,是近年来复杂分布上无监督学习最具前景的方法之一。模型通过框架中(至少)两个模块:生成模型(Generative Model)和判别模型(Discriminative Model)的互相博弈学习产生相当好的输出。原始 GAN 理论中,并不要求 G 和 D 都是神经网络,只需要是能拟合相应生成和判别的函数即可。但实用中一般均使用深度神经网络作为 G 和 D 。一个优秀的GAN应用需要有良好的训练方法,否则可能由于神经网络模型的自由性而导致输出不理想。

最近参加了PaddleGAN的生成对抗网络七日打卡营,感觉收货颇丰。对于刚刚入门的我来说可能还不能将所有的知识消化吸收,但是还是可以从最基本的原理开始入手。我对GAN的基本原理理解如下:

我们有两个网络,G(Generator)和D(Discriminator)。它们的功能分别是:

  • G是一个生成图片的网络,它接收一个随机的噪声z,通过这个噪声生成图片,记做G(z)。
  • D是一个判别网络,判别一张图片是不是“真实的”。它的输入参数是x,x代表一张图片,输出D(x)代表x为真实图片的概率,概率介于0-1之间,越接近1代表越真实,越接近0代表越可能是假的。

经过这几天的学习,相信大家对GAN已经有了一定的了解了,也在前面的作业中体验过GAN的一些应用了。那现在大家是不是想要升级一下难度,自己动手来训练一个模型呢?需要自己动手训练的大作业来啦,大作业内容为基于PaddleGAN中的超分模型,实现卡通画超分。

import os
import cv2
import numpy as np
import matplotlib.pyplot as plt
# 训练数据统计
train_names = os.listdir('PaddleGAN/data/animeSR/train')
print(f'训练集数据量: {len(train_names)}')

# 测试数据统计
test_names = os.listdir('PaddleGAN/data/animeSR/test')
print(f'测试集数据量: {len(test_names)}')

# 训练数据可视化
img = cv2.imread('PaddleGAN/data/animeSR/train/Anime_1.jpg')
img = img[:,:,::-1]
plt.figure()
plt.imshow(img)
plt.show()

 

找到你需要的模型的配置文件,修改模型参数,一般修改迭代次数,num_workers,batch_size以及数据集路径。

有能力的同学也可以尝试修改其他参数,或者基于现有模型进行二次开发,模型代码在/home/aistudio/PaddleGAN/ppgan/models目录下。

以LESRCNNN为例,这里将配置文件lesrcnn_psnr_x4_div2k.yaml中的

参数total_iters设置为50000

参数dataset:train:num_workers设置为4

参数dataset:train:batch_size设置为16

参数dataset:train:gt_folder改为data/animeSR/train

参数dataset:train:lq_folder改为data/animeSR/train_X4

参数dataset:test:gt_folder改为data/animeSR/test

参数dataset:test:lq_folder改为data/animeSR/test_X4

参数periods: [… , … , … , …]periods的数字总和要等于 total_iters 的数值

%cd /home/aistudio/PaddleGAN/
!python -u tools/main.py --config-file configs/lesrcnn_psnr_x4_div2k.yaml

 

测试模型

cd /home/aistudio/PaddleGAN/
!python tools/main.py --config-file configs/lesrcnn_psnr_x4_div2k.yaml --evaluate-only --load /home/aistudio/pretrained_model/ESRGAN_PSNR_50000_weight.pdparams

 

 

 

图像是指将低辨率的图像通过计算机算法提升到高辨率的过程,这在计算机视觉领域非常重要。GAN(Generative Adversarial Networks)是一种深度学习模型,在图像处理中广泛应用。下面简要介绍一下如何用GAN网络实现图像。 GAN网络由生成器(Generator)和判别器(Discriminator)两个部组成。在训练过程中,生成器通过生成高辨率图像来欺骗判别器,而判别器则试图区真实图像和生成图像。通过不断迭代训练,生成器可以生成越来越真实的图像。 下面是用GAN网络实现图像的步骤: 1. 准备数据集,包括低辨率图像和高辨率图像。低辨率图像是输入,高辨率图像是标签。 2. 构建生成器网络,将低辨率图像作为输入,输出高辨率图像。生成器通常由卷积层、反卷积层、残差块等组成。 3. 构建判别器网络,将生成器生成的图像和真实图像作为输入,输出一个二元类结果。判别器通常由卷积层、全连接层等组成。 4. 定义损失函数,用于衡量生成器生成的图像和真实图像之间的差异。损失函数通常包括像素差损失(Pixel Loss)、感知损失(Perceptual Loss)和对抗损失(Adversarial Loss)等。 5. 进行训练,通过不断迭代优化生成器和判别器的参数,使生成器生成的图像越来越接近真实图像。 6. 在训练过程中,可以使用一些技巧来提高模型的性能,比如使用残差块、增加噪声等。 7. 最后,用训练好的模型来对新的低辨率图像进行处理,得到高辨率图像。 以上是用GAN网络实现图像的基本步骤,具体实现中还需根据具体情况进行调整和优化。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值