GAN 用于图像增强

工程需求,临时学一下gan的原理和基于图像增强的实现

原理

论文链接

Generative Adversarial Nets

我们提出了一个通过对抗过程来估计生成模型的新框架,其中我们同时训练两个模型:捕获数据分布的生成模型G和估计样本来自训练数据而不是G的概率的 判别模型D。G的训练过程是最大化D犯错的概率。这个框架对应于一个min-max two-player game。在任意函数G和D的空间中,存在一个唯一解,G恢复训练数据分布,D处处等于1/2。在G和D由mlp定义的情况下,整个系统可以通过反向传播进行训练。在训练或生成样本过程中,不需要任何马尔可夫链或展开近似推理网络。通过对生成的样本进行定性和定量评估,实验证明了该框架的潜力。

之前的方法总是想构造一个分布函数,然后提供参数给函数学习,把分布学出来,但是计算量巨大;Gernerative machine就是学模型来近似想要的结果,虽然算起来容易,但是不知道想要的结果

组件

  1. 生成器 (Generator)(是MLP)

    • 输入是随机噪声(通常是从Gaussian Distribution或均匀分布中采样的向量)。
    • 输出是与真实数据分布尽可能接近的生成样本(如图像、音频、文本等)。
    • 目标是“欺骗”判别器,使其无法分辨生成样本和真实样本。
  2. 判别器 (Discriminator)(是MLP)

    • 输入是生成器的输出样本和真实样本。
    • 输出是样本为真实数据的概率(通常在 [0, 1] 之间)。
    • 目标是正确区分真实样本和生成样本。

任务

Gernerative fake,Discriminative 判断,二者互相对抗,最后期望G赢

判别器目标:最大化区分真实样本和生成样本的能力

判别器的目标是 最大化 上述公式,即:

  • 提高对真实数据 x 的识别准确度(log⁡D(x))。
  • 提高对生成数据 G(z)的拒绝能力(log⁡(1−D(G(z)))

 鼓励判别器在面对真实数据 x 时输出高概率,即更准确地判断数据为真实。

鼓励判别器在面对生成样本 G(z)时输出低概率,即更准确地判断数据为生成的。

生成器目标:最小化被判别器正确区分生成样本为假的概率

生成器希望“欺骗”判别器,让判别器认为生成样本 G(z)是真实的

拟合过程↑ 绿色是z映射的均值,蓝色线是辨别器,总之就是把随机分布映射成真实分布的一个过程

 命题

论文中的命题和证明,这里暂时不展开

统计意义是 two-sample test

迭代过程

先更新Discriminator再更新Generator

总体来说这一版收敛不太稳定

降噪任务

参考视频第1.1节-GAN与图像降噪-基础篇_哔哩哔哩_bilibili

cnn--encoder-decoder, residual learninig 需要成对的训练数据,真实数据难以获得

GAN-CNN based blind denoiser GCBD,无监督上采样模型

看了一下效果还可以

经典应用

DANet*

  • 任务类型:分割任务中的特征增强
  • DANet 实际上是一种用于语义分割任务的注意力机制网络,而非纯粹的 GAN。
  • 引入了空间注意力 (Spatial Attention)通道注意力 (Channel Attention) 机制,旨在增强特征表达,关注目标区域的细节。

EnlightenGAN

  • 任务类型:低光照图像增强
  • EnlightenGAN 是一种用于增强低光照图像的生成对抗网络。
  • 它可以改善图像在低光照条件下的亮度和对比度,同时保留细节和自然感

SRGAN*

  • SRGAN 是一种用于图像超分辨率(Super Resolution)的 GAN,目的是从低分辨率图像生成高分辨率图像。
  • 它通过生成器网络提高图像分辨率,并通过对抗判别器保证生成的高分辨率图像更自然、更逼真。

Generator 

前面是残差模块不改变图像分辨率

Pixelshuffer 是基于亚像素卷积的上采样模块

亚像素卷积

用channel换space

Discriminator

通道数不断增加的卷积层每次特征通道数增加一倍时,特征分辨率降低为原来的一半

内容损失也叫感知损失

训练心得

就是说还是吃数据集的,在通用数据集作为预训练权重的情况下针对医学图像表现并不好

通用数据集表现↑

医学数据集表现↑ 

以及discriminator经常比generator强很多...大概就能对应文中的收敛不稳定吧

改进:ESRGAN

Esrgan:Enhanced super-resolution gene!ative adversaria networks

--引入Residual-in-Residual Dese Block(RRDB)增强生成器能力

--使用激活前的VGG特征来改善感知损失

(激活之后的特征过于稀疏)

--RaGAN模型相对判别器,relativistic average discriminatol

others

CycleGAN:如果需要对某一领域图像(如医学图像)进行特定增强,也可以使用无监督训练方式。

DeblurGAN

### GAN用于图像增强的代码实现 对于利用GAN进行图像增强的任务,可以参考AugGAN框架中的具体实践。以下是简化版的基于PyTorch的GAN模型训练过程的一部分,该部分展示了如何定义生成器和判别器以及基本的损失计算逻辑: ```python import torch from torch import nn class Generator(nn.Module): def __init__(self, input_channels=3, output_channels=3, num_filters=64): super(Generator, self).__init__() model = [ nn.Conv2d(input_channels, num_filters, kernel_size=7, stride=1, padding=3), nn.InstanceNorm2d(num_filters), nn.ReLU(inplace=True) ] # 添加更多层... self.model = nn.Sequential(*model) def forward(self, x): return self.model(x) class Discriminator(nn.Module): def __init__(self, input_channels=3, num_filters=64): super(Discriminator, self).__init__() layers = [] layers.append(nn.Conv2d(input_channels, num_filters, 4, 2, 1)) layers.append(nn.LeakyReLU(0.2, inplace=True)) current_dim = num_filters # 定义后续卷积层... self.model = nn.Sequential(*layers) def forward(self, x): x = self.model(x) return x def train_gan(generator, discriminator, dataloader, criterion, optimizer_G, optimizer_D, epochs): for epoch in range(epochs): for i, (imgs, _) in enumerate(dataloader): valid = torch.ones((imgs.size(0), *patch)) fake = torch.zeros((imgs.size(0), *patch)) # 训练生成器 optimizer_G.zero_grad() gen_imgs = generator(imgs) g_loss = criterion(discriminator(gen_imgs), valid) g_loss.backward() optimizer_G.step() # 训练判别器 optimizer_D.zero_grad() real_loss = criterion(discriminator(imgs), valid) fake_loss = criterion(discriminator(gen_imgs.detach()), fake) d_loss = (real_loss + fake_loss) / 2 d_loss.backward() optimizer_D.step() ``` 上述代码片段仅作为概念验证,并未完全展示整个网络结构及参数设置[^2]。 为了完成完整的图像增强流程,在训练完成后还需要调用`imshow()`来预览增强效果并使用`imwrite()`保存结果图片[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值