生成对抗网络GAN中超分辨率应用?
4 个回答
你所说的原始高清分辨率图像必须要有的,不然就训练不了。现在的研究一般做法是人为地把现有的图像下采样制作低分辨率的图像,然后再去训练模型将它恢复到高分辨率的图像。。最近整理了用GAN做超分的数十篇论文,也附带下载地址,欢迎有兴趣的同学看看23333
GAN相关阅读:
- GAN整整6年了!是时候要来捋捋了!
- 强数据所难!SSL(半监督学习)结合GAN如何?
- 新手指南综述 | GAN模型太多,不知道选哪儿个?
- 天降斯雨,于我却无!GAN用于去雨如何?
- 有点夸张、有点扭曲!速览GAN如何夸张漫画化人脸!
- 脸部转正!GAN能否让侧颜杀手、小猪佩奇真容无处遁形?
- 容颜渐失!GAN来预测?
- 弱水三千,只取你标!AL(主动学习)结合GAN如何?
- 异常检测,GAN如何gan?
- 虚拟换衣!这几篇最新论文不来GAN GAN?
- 脸部妆容迁移!速览几篇用GAN来做的论文
- 【1】GAN在医学图像上的生成,今如何?
- 01-GAN公式简明原理之铁甲小宝篇
- 数百篇GAN论文已下载好!搭配一份生成对抗网络最新综述!
引言
这日,你伸着懒腰,打着呵欠,对着窗外,正感慨时光已逝,红了樱桃绿了芭蕉……忽然,桌面上的手机传来了微信的振动声,你极其不耐烦地走过去。
“老猪,我在超市看到了一个气质佳人!”
面对老铁这未见世面的无措,你弹指键飞:
“你还能见到啥佳人?再说,就你审美???”
“稍等!……”
“你要干嘛……”
很快,对面传来一幅图:
“你偷拍人家真的好吗。。再说脸呢??……”
这时手机又亮起:
“我刚刚把无关的截了一下,再截个脸吧~
”
你:“???……”
“隔得有点远,可能拍的有点小,好像看不清……”
正文引言
摘自SRGAN: The highly challenging task of estimating a highresolution (HR) image from its low-resolution (LR) counterpart is referred to as super-resolution (SR).
图像超分辨率,简称超分SR,一般指放大分辨率,例如把256X256变到512X512的分辨率,这时的放大倍数scale为2。显然,这是一个无中生有、去补全像素的ill-posed问题,没有唯一解。图像超分,应用场景自然是广泛的。一般的方法是将低分辨率的图像LR作为方法的输入,进行处理得到高分辨率的HR图像。
但值得注意的是,在现实场景中,匹配成对的数据集是极其难以获取得到的。如今相当多的论文,都是自制这种LR-HR图像对去作为训练集。比如先将原图HR通过下采样得到LR,再进行LR到HR的映射学习。但真正应用到实际中,LR和HR之间的关系是不是我们自以为是的“下采样”的关系呢?这恐怕是未知、难以模拟的,人为的下采样或其他人工方法不过是一厢情愿罢。在医学图像SR上可能更需谨慎。
今天整理的是结合GAN生成对抗网络的图像超分。首先总结两篇极具代表意义的、大名鼎鼎的超分GAN即SRGAN和ESRGAN,并大概提一下一篇用网络去收集小分辨率的数据的论文,最后给出70多篇结合GAN做超分的论文!!!希望给有志这方面探索、了解的同学一个参考!
(70多篇论文已经下载打包好,获取方式关注下图,回复【超分GAN】即可)
1. (2017-05-25) (SRGAN)Photo-Realistic Single Image Super-Resolution Using a Generative Adversarial Network
https://arxiv.xilesou.top/pdf/1609.04802.pdf
尽管使用更快、更深的卷积神经网络实现单图像超分辨率在准确性和速度上都有突破,仍然存在一个焦点问题在很大程度上未解决:当在较大的放大倍数上去获取超分辨率图像时,如何恢复更精细的纹理细节?以往的工作主要集中在均方差重建上,在结果评估时使用PSNR等,但通常缺乏高频细节,并且在视觉上难以令人满意。在本文提出SRGAN,第一个用于图像超分辨率(SR)的生成对抗网络(GAN),能够推断出4倍逼真的自然图像。为了实现这一目标,提出了一种感知损失函数,包括对抗损失和内容损失。使用基于感知相似性的内容损失摈弃了在像素空间进行相似性衡量。平均意见分数(MOS)表明了方法卓越的性能。
如下图所示,放大4倍的超分方法对比。第一个是双立方插值,第二个是基于均方差损失驱动的卷积神经网络,第三个是本文SRGAN,最后是参考原始图。
优化:
损失函数:
生成器损失(原文作者把整个生成器损失叫感知损失:内容损失+生成器对抗损失+):
内容损失:
生成器对抗损失:
作者做了蛮多一些消融探究的,此不述。
最后是实验结果其一。堪称大型SSIM和PSNR打脸现场。SRGAN在PSNR和SSIM上的表现不如SRResNet但在MOS、也就是人眼观察上吊打前者足矣。
2. (2018-09-17) ESRGAN Enhanced Super-Resolution Generative Adversarial Networks
https://arxiv.xilesou.top/pdf/1809.00219.pdf
SRGAN是具有开创性的工作。但细节之处仍然难令人满意,为此进一步研究了SRGAN的三个关键组成部分:网络架构,对抗损失和感知损失,并将其改善得到增强型SRGAN(ESRGAN)。特别地,引入了无BN批归一化的残差密集块Residual-in-Residual Dense Block(RRDB)作为基本的网络构建单元。而且,借用相对GAN 的思想让判别器进行预测相对真实性。最后,通过使用在激活之前的特征去进行感知损失计算,来达到在亮度一致性和纹理恢复方面提供更强的监督的目的。受益于这些改进, ESRGAN相比SRGAN,具有更好的视觉质量、更逼真的自然纹理并赢得PIRM2018-SR挑战赛的第一名。
网络结构上的改进:
由于BN在比如粗粒度任务分类等中具有积极效果,但对于类似于风格迁移这种单幅图像具有鲜明特点的任务中,不宜使用批量的统计量,否则容易弱化单图像固有的本身细节信息。于是作者尝试去掉BN,但这又容易导致网络训练的困难,于是采用Dense block这种更易提升网络性能的结构。
对抗方式的改进:
参考了相对GAN的设计思路。
对抗损失:
大致推导一下:
原始GAN:
感知Loss的改进:
使用relu激活之前的特征进行损失计算。这样的特征可以包含更丰富和细节的响应信息。
使用网络插值:
GAN过于“自由胡来”,有一些细节可能不太自然。而以往基于MSE优化的卷积网络偏向平滑模糊丢失细节。于是网络插值提出综合两者网络的方法:先训练一个常规的超分网络,在这个网络的基础上再fine-tuning得到GAN的生成器,然后把两个网络的参数加权相加:
如下图所示,通过调节α可以找到一个更偏好或平衡的的中间效果。
3. (2018-07-30) To learn image super-resolution use a GAN to learn how to do image degradation first
https://arxiv.xilesou.top/pdf/1807.11458.pdf
在前面提到,超分的训练里,通过简单的双线性下采样(少数情况下是先模糊后下采样)人工生成的低分辨率的图像,然后将它们进行超分处理。但在现实生活中,这种方法并不能产生很好的效果。
为此提出一个两阶段的过程,首先训练一个High-to-Low GAN来学习如何对高分辨率图像进行下采样,在训练过程中,只需要非配对的高分辨率和低分辨率图像。实现了这部分后,该网络的输出可以用来训练一个Low-to-High GAN来实现超分辨率重建,这次利用配对的低分辨率和高分辨率图像。我们的主要结果是,这个网络可以有效地提高真实世界低分辨率图像的质量。本文将这种方法应用于人脸超分辨率的问题,并验证其有效性,方法也可能适用于其他图像对象类别。
实验结果:
001 (2020-03-4) Turbulence Enrichment using Generative Adversarial Networks
https://arxiv.xilesou.top/pdf/2003.01907.pdf
002 (2020-03-2) MRI Super-Resolution with GAN and 3D Multi-Level DenseNet Smaller Faster and Better
https://arxiv.xilesou.top/pdf/2003.01217.pdf
003 (2020-02-29) Joint Face Completion and Super-resolution using Multi-scale Feature Relation Learning
https://arxiv.xilesou.top/pdf/2003.00255.pdf
004 (2020-02-21) Generator From Edges Reconstruction of Facial Images
https://arxiv.xilesou.top/pdf/2002.06682.pdf
005 (2020-01-22) Optimizing Generative Adversarial Networks for Image Super Resolution via Latent Space Regularization
https://arxiv.xilesou.top/pdf/2001.08126.pdf
006 (2020-01-21) Adaptive Loss Function for Super Resolution Neural Networks Using Convex Optimization Techniques
https://arxiv.xilesou.top/pdf/2001.07766.pdf
007 (2020-01-10) Segmentation and Generation of Magnetic Resonance Images by Deep Neural Networks
https://arxiv.xilesou.top/pdf/2001.05447.pdf
008 (2019-12-15) Image Processing Using Multi-Code GAN Prior
https://arxiv.xilesou.top/pdf/1912.07116.pdf
009 (2020-02-6) Quality analysis of DCGAN-generated mammography lesions
https://arxiv.xilesou.top/pdf/1911.12850.pdf
010 (2019-12-19) A deep learning framework for morphologic detail beyond the diffraction limit in infrared spectroscopic imaging
https://arxiv.xilesou.top/pdf/1911.04410.pdf
011 (2019-11-8) Joint Demosaicing and Super-Resolution (JDSR) Network Design and Perceptual Optimization
https://arxiv.xilesou.top/pdf/1911.03558.pdf
012 (2019-11-4) FCSR-GAN Joint Face Completion and Super-resolution via Multi-task Learning
https://arxiv.xilesou.top/pdf/1911.01045.pdf
013 (2019-10-9) Wavelet Domain Style Transfer for an Effective Perception-distortion Tradeoff in Single Image Super-Resolution
https://arxiv.xilesou.top/pdf/1910.04074.pdf
014 (2020-02-3) Optimal Transport CycleGAN and Penalized LS for Unsupervised Learning in Inverse Problems
https://arxiv.xilesou.top/pdf/1909.12116.pdf
015 (2019-08-26) RankSRGAN Generative Adversarial Networks with Ranker for Image Super-Resolution
https://arxiv.xilesou.top/pdf/1908.06382.pdf
016 (2019-07-24) Progressive Perception-Oriented Network for Single Image Super-Resolution
https://arxiv.xilesou.top/pdf/1907.10399.pdf
017 (2019-07-26) Boosting Resolution and Recovering Texture of micro-CT Images with Deep Learning
https://arxiv.xilesou.top/pdf/1907.07131.pdf
018 (2019-07-15) Enhanced generative adversarial network for 3D brain MRI super-resolution
https://arxiv.xilesou.top/pdf/1907.04835.pdf
019 (2019-07-5) MRI Super-Resolution with Ensemble Learning and Complementary Priors
https://arxiv.xilesou.top/pdf/1907.03063.pdf
020 (2019-11-25) Image-Adaptive GAN based Reconstruction
https://arxiv.xilesou.top/pdf/1906.05284.pdf
021 (2019-06-13) A Hybrid Approach Between Adversarial Generative Networks and Actor-Critic Policy Gradient for Low Rate High-Resolution Image Compression
https://arxiv.xilesou.top/pdf/1906.04681.pdf
022 (2019-06-4) A Multi-Pass GAN for Fluid Flow Super-Resolution
https://arxiv.xilesou.top/pdf/1906.01689.pdf
023 (2019-05-23) Generative Imaging and Image Processing via Generative Encoder
https://arxiv.xilesou.top/pdf/1905.13300.pdf
024 (2019-05-26) Cross-Resolution Face Recognition via Prior-Aided Face Hallucination and Residual Knowledge Distillation
https://arxiv.xilesou.top/pdf/1905.10777.pdf
025 (2019-05-9) 3DFaceGAN Adversarial Nets for 3D Face Representation Generation and Translation
https://arxiv.xilesou.top/pdf/1905.00307.pdf
026 (2019-08-27) Super-Resolved Image Perceptual Quality Improvement via Multi-Feature Discriminators
https://arxiv.xilesou.top/pdf/1904.10654.pdf
027 (2019-03-28) SRDGAN learning the noise prior for Super Resolution with Dual Generative Adversarial Networks
https://arxiv.xilesou.top/pdf/1903.11821.pdf
028 (2019-03-21) Bandwidth Extension on Raw Audio via Generative Adversarial Networks
https://arxiv.xilesou.top/pdf/1903.09027.pdf
029 (2019-03-6) DepthwiseGANs Fast Training Generative Adversarial Networks for Realistic Image Synthesis
https://arxiv.xilesou.top/pdf/1903.02225.pdf
030 (2019-02-28) A Unified Neural Architecture for Instrumental Audio Tasks
https://arxiv.xilesou.top/pdf/1903.00142.pdf
031 (2019-02-28) Two-phase Hair Image Synthesis by Self-Enhancing Generative Model
https://arxiv.xilesou.top/pdf/1902.11203.pdf
032 (2019-10-23) GAN-based Projector for Faster Recovery with Convergence Guarantees in Linear Inverse Problems
https://arxiv.xilesou.top/pdf/1902.09698.pdf
033 (2019-02-17) Progressive Generative Adversarial Networks for Medical Image Super resolution
https://arxiv.xilesou.top/pdf/1902.02144.pdf
034 (2019-01-31) Compressing GANs using Knowledge Distillation
https://arxiv.xilesou.top/pdf/1902.00159.pdf
035 (2019-01-18) Generative Adversarial Classifier for Handwriting Characters Super-Resolution
https://arxiv.xilesou.top/pdf/1901.06199.pdf
036 (2019-01-10) How Can We Make GAN Perform Better in Single Medical Image Super-Resolution A Lesion Focused Multi-Scale Approach
https://arxiv.xilesou.top/pdf/1901.03419.pdf
037 (2019-01-9) Detecting Overfitting of Deep Generative Networks via Latent Recovery
https://arxiv.xilesou.top/pdf/1901.03396.pdf
038 (2018-12-29) Brain MRI super-resolution using 3D generative adversarial networks
https://arxiv.xilesou.top/pdf/1812.11440.pdf
039 (2019-01-13) Efficient Super Resolution For Large-Scale Images Using Attentional GAN
https://arxiv.xilesou.top/pdf/1812.04821.pdf
040 (2019-12-24) Learning Temporal Coherence via Self-Supervision for GAN-based Video Generation
https://arxiv.xilesou.top/pdf/1811.09393.pdf
041 (2018-11-20) Adversarial Feedback Loop
https://arxiv.xilesou.top/pdf/1811.08126.pdf
042 (2018-11-1) Bi-GANs-ST for Perceptual Image Super-resolution
https://arxiv.xilesou.top/pdf/1811.00367.pdf
043 (2018-10-15) Lesion Focused Super-Resolution
https://arxiv.xilesou.top/pdf/1810.06693.pdf
044 (2018-10-15) Deep learning-based super-resolution in coherent imaging systems
https://arxiv.xilesou.top/pdf/1810.06611.pdf
045 (2018-10-10) Image Super-Resolution Using VDSR-ResNeXt and SRCGAN
https://arxiv.xilesou.top/pdf/1810.05731.pdf
046 (2019-01-28) Multi-Scale Recursive and Perception-Distortion Controllable Image Super-Resolution
https://arxiv.xilesou.top/pdf/1809.10711.pdf
047 (2018-09-2) Unsupervised Image Super-Resolution using Cycle-in-Cycle Generative Adversarial Networks
https://arxiv.xilesou.top/pdf/1809.00437.pdf
048 (2018-09-17) ESRGAN Enhanced Super-Resolution Generative Adversarial Networks
https://arxiv.xilesou.top/pdf/1809.00219.pdf
049 (2018-09-6) CT Super-resolution GAN Constrained by the Identical Residual and Cycle Learning Ensemble(GAN-CIRCLE)
https://arxiv.xilesou.top/pdf/1808.04256.pdf
050 (2018-07-30) To learn image super-resolution use a GAN to learn how to do image degradation first
https://arxiv.xilesou.top/pdf/1807.11458.pdf
051 (2018-07-1) Performance Comparison of Convolutional AutoEncoders Generative Adversarial Networks and Super-Resolution for Image Compression
https://arxiv.xilesou.top/pdf/1807.00270.pdf
052 (2018-12-19) Generative Adversarial Networks and Perceptual Losses for Video Super-Resolution
https://arxiv.xilesou.top/pdf/1806.05764.pdf
053 (2018-08-22) cellSTORM - Cost-effective Super-Resolution on a Cellphone using dSTORM
https://arxiv.xilesou.top/pdf/1804.06244.pdf
054 (2018-04-10) A Fully Progressive Approach to Single-Image Super-Resolution
https://arxiv.xilesou.top/pdf/1804.02900.pdf
055 (2018-07-18) Maintaining Natural Image Statistics with the Contextual Loss
https://arxiv.xilesou.top/pdf/1803.04626.pdf
056 (2018-06-9) Efficient and Accurate MRI Super-Resolution using a Generative Adversarial Network and 3D Multi-Level Densely Connected Network
https://arxiv.xilesou.top/pdf/1803.01417.pdf
057 (2018-05-28) tempoGAN A Temporally Coherent Volumetric GAN for Super-resolution Fluid Flow
https://arxiv.xilesou.top/pdf/1801.09710.pdf
058 (2018-10-3) High-throughput high-resolution registration-free generated adversarial network microscopy
https://arxiv.xilesou.top/pdf/1801.07330.pdf
059 (2017-11-28) Super-Resolution for Overhead Imagery Using DenseNets and Adversarial Learning
https://arxiv.xilesou.top/pdf/1711.10312.pdf
060 (2019-10-3) The Perception-Distortion Tradeoff
https://arxiv.xilesou.top/pdf/1711.06077.pdf
061 (2017-11-7) Tensor-Generative Adversarial Network with Two-dimensional Sparse Coding Application to Real-time Indoor Localization
https://arxiv.xilesou.top/pdf/1711.02666.pdf
062 (2017-11-7) ZipNet-GAN Inferring Fine-grained Mobile Traffic Patterns via a Generative Adversarial Neural Network
https://arxiv.xilesou.top/pdf/1711.02413.pdf
063 (2017-10-19) Generative Adversarial Networks An Overview
https://arxiv.xilesou.top/pdf/1710.07035.pdf
064 (2018-05-21) Retinal Vasculature Segmentation Using Local Saliency Maps and Generative Adversarial Networks For Image Super Resolution
https://arxiv.xilesou.top/pdf/1710.04783.pdf
065 (2018-11-28) Simultaneously Color-Depth Super-Resolution with Conditional Generative Adversarial Network
https://arxiv.xilesou.top/pdf/1708.09105.pdf
066 (2017-06-20) Perceptual Generative Adversarial Networks for Small Object Detection
https://arxiv.xilesou.top/pdf/1706.05274.pdf
067 (2017-05-7) A Design Methodology for Efficient Implementation of Deconvolutional Neural Networks on an FPGA
https://arxiv.xilesou.top/pdf/1705.02583.pdf
068 (2017-05-5) Face Super-Resolution Through Wasserstein GANs
https://arxiv.xilesou.top/pdf/1705.02438.pdf
069 (2017-10-12) CVAE-GAN Fine-Grained Image Generation through Asymmetric Training
https://arxiv.xilesou.top/pdf/1703.10155.pdf
070 (2017-02-21) Amortised MAP Inference for Image Super-resolution
https://arxiv.xilesou.top/pdf/1610.04490.pdf
071 (2017-05-25) Photo-Realistic Single Image Super-Resolution Using a Generative Adversarial Network
一种主题的风格转换成另外一种主题的风格,其他位置还能保持不变,比如
普通马和斑马之间的转换,草原景色不变。
- 配对的数据(造型相同,只是颜色不一样)
- 不配对的数据
左右不匹配,左边是实际的场景,右边是油画。
无论是配对图像还是非配对图像都可以进行训练,即不需要配对,也能识别出来。只需要两组图像数据集即可,无需指定对应关系,例如
- 马和斑马
- 航拍地图和地图据
马和斑马训练和测试数据的目录结构
普通马训练数据trainA
斑马训练数据trainB
只需要指定马长什么样子,斑马长什么样子,不需要它们之间有一一对应的关系。
航拍地图数据trainA
普通地图数据trainB
只需要知道航拍数据是怎么样的,普通的地图数据是怎么样,就可以进行训练了,不需要一一对应,让网络学一学实际拍出来是什么样子,转换到地图中又是什么样子。
CycleGan怎么进行学习的
- 传统的方式
输入一张真实的图片A,经过G A-B生成网络,生成一张假的图片B,将假的B输入判决网络D中,G A-B网络希望判决器认为B是真的,判决器希望自己能够识别出来B是假的,将真实的马输入判决器,判决器希望能够识别出来是真实的数据,所以,无论是生成网络生成的假的马的数据,还是输入的真实马的数据到判决器,判决器都会认为这些都是真实的马,所以G A-B网络只需要生成的图片是马的数据,就可以骗过判决器。
- 新的方式
为了使得G AB生成出来的结果跟原始输入是有关联的,增加了G BA网络,由B还原成A,使得真实的输入图片A和还原的图片尽可能的相似。G AB是在原始输入图片的基础之上进行了合成,G BA是将合成之后的图片还原,然后比较输入图片和还原图片的差异,即计算L2 Loss(目标变量和预测值的差值平方和)
上图中有3个损失函数
- G网络需要计算损失
- D网络需要计算损失
- GAB的输入和GBA的输出之间也需要计算损失即Cycle网络
当前这个网络(把马转换成斑马)主要考虑GAB,让网络学习怎样做转换怎样做还原,但怎样把GBA突出出来呢?即把斑马转换成马
上图中有2个生成器和2个判决器共4个网络。怎么样让网络达到训练要求,是由损失函数决定的,当前的输入(Input_A)和最终还原出来的输出(Cyclic_A)做L2 Loss计算。
普通马图像经过GAB生成一个假的斑马图像B,把这个假的斑马图像B再输入到GAB中,它应该生成和原始输入Input_A一摸一样的图像,因为将斑马输入到GAB中,GAB就应该知道:这就是我想输出的结果。所以看到是斑马作为输入,直接将斑马输出就可以了。
上图中涉及4种损失函数:
- G网络
- D网络
- Cycle网络
- Identity网络 比如将生成的斑马B再输入到GAB中,GAB就会知道这个斑马就是我要输出的结果,直接将输入原封不动的输出就行了,这个过程也需要计算损失函数
判决器D网络有点特别,PatchGAN
之前判决器是传入一个Sigmoid函数中,最终得到的是一个数值;现在判决器经过卷积神经网络得到一个输出结果,但是最终的输出结果不会输入到Sigmoid函数中,也不会连全连接层,就是一个特征图,比如N x N x 1的特征图:最终一次卷积,filter个数是1,就得到了N x N的矩阵,需要基于感受野来计算损失。
从特征图中的每一点都能看到原始输入的一部分
第一次卷积得到的特征图(圈红的地方)是3x3的卷积核得到的结果,它能看到的位置就是原始输入3x3的部分。
- 基于感受野在特征图上预测结果,标签也需要是NxN的矩阵计算损失值
原始图像经过一次卷积得到一个特征图,里面有4个点,点1对应的位置是原始图像中红色的部分,其他依次类推,每个点都能看到原始输入的一个区域。这一张图中有4个小patch(区域),不通过一张图判断是真还是假,而是基于每个小patch都做判断。
标签跟输出结果是一样的,也得是N x N的矩阵,代表每个小patch的标签值,判决器对每个小patch判决结果都是1才达到完美。
实现该场景的开源项目
https://gitee.com/pingfanrenbiji/pytorch-CycleGAN-and-pix2pix
下载训练数据
下载数据源在sh脚本中可以看到
其中maps是航拍转换成地图数据,hosrse2zebra是马和斑马数据,apple2orange是苹果转换成橙子的数据
将下载好的数据,放到datasets目录下
训练模型
然后进行模型训练得到模型或者下载已经训练好的模型,
这些都是已经训练好的模型,就可以直接拿测试数据进行预测结果了
有了模型之后,进行模型预测
或者通过idea传入参数
- 第一个参数是测试文件夹的数据
- 第二个参数是模型名称
从这里获取指定模型,自己训练的模型保存在这个文件夹中。
这个文件夹是下载的已经训练好的模型
- 预测结果存在在这里
比如其中一对数据如下:
一个是假的数据,一个是真的数据
训练模型参数指定
或者
这个模型训练需要的显存(如同计算机的内存一样,显存是用来存储要处理的图形信息的部件)比较大,如果没有一个非常好的服务器或工作站或专门做深度学习的,batch_size就设置为1。默认的图片输入大小是256x256,如果显存实在太小,可以调整为128x128,最少显存8G,最好12G,不然会报错 memery error。
关键代码分析-构建数据集
读取数据,
指定要当前所做项目的名称,非对齐,也就是CycleGAN
指定好数据集,
有1096个数据,
指定输入输出的颜色通道RGB,一般是3
判断是否要做resize,将原始输入数据(256x256) resize成 286x286的
先resize,再crop操作,固定大小256x256
随机50%的可能性做这个翻转操作
归一化操作,第一步转换成Tensor格式,
然后指定平均值和标准差。原始输入数据取值范围是0-1之间的,实际网络训练,尤其是GAN网络,希望结果是-1到1之间,可能训练的会更好一些。mean和std在各个颜色通道上都指定0.5之后,所有输入数据的取值范围就都是-1到1之间了。
RandomHorizontalFlip是数据增强
创建模型
损失函数的名称定义
输入数据经过GAB的合成与GBA的还原跟原始的输入尽可能的相同。G网络把A转换成B,实际输入一个B,更应该输出一个B即把实际要生成的数据当作输入之后,输出是否跟输入是一样的,通过损失函数来计算。
netG_A和netG_B两个网络架构是一样的,区别是输入和输出不同、标签指定不同,损失函数不同。
norm='batch',沿batch的方向做归一化,主要用在卷积网络当中,做分类或回归任务都是用它,通常指定的batch都是比较大的,这里没有用batch,而是用InstanceNorm2d,原因1是因为一个一个训练的,第二点在做划分的时候影响更大的在channel(颜色通道)或着特征图的方向,在R、G、B上分别自己做归一化
这个网络是残差网络,
网络先加上了一个Padding
圈红的地方是原始的输入数据,指定padding=2上下左右都加了2圈并做了翻转(默认是翻转模式,自己可以设置),比如036上面是63下面是30。
第一步先做一个基本的卷积操作(所有的提取操作都是卷积,没有全连接的概念),将彩色的3个特征图转换成64个特征图。不断的做卷积得到的特征图一般会越来越小,特征图的个数会越来越多,这个就是正常卷积的过程,接下来执行反卷积(特征图越来越少,特征图大小越来越大),相当于特征提取完了,再还原回去,直到最后一个,可能就和原始的输入一样了即256x256x3,设置最终filter=3,就得到类似图像数据了。
默认添加9个残差的模块,来提取特征
每个模块都是一样的,所有的卷积操作都是输入256,输出256,特征图的个数是不变的,
这是上采样,用反卷积去做的。
输入256个特征,输出128个特征,反卷积的过程当中,特征图的个数变少,特征图大小要变大。
按照倍数把当前结果比上2,相等于特征图是原来的一半。
第一步做了一次反卷积得到128个特征图,
第二次for循环,128个特征图变成了64个特征图,又执行了一次反卷积,
最后一步,做了一个正常的卷积,输入64个特征图,输出跟任务是挂钩的,希望对抗生成网络最后生成的结果是实际的一张图像,channel个数一定是3,
最后一步生成结果是
为了使得跟原始数据有可比性,添加一个激活函数
一般都加Tanh函数,因为刚开始做预处理的时候,把数值的取值范围映射到-1到1之间了,输出也得跟它是一致的取值范围才行,所以这里加上一个Tanh激活函数。
这一步就是权重参数初始化,一般用高斯分布初始化所有的权重参数。
测试就不需要判决器了,直接拿生成器生成结果
颜色通道的归一化,
一开始做卷积,输入是3个颜色通道,得到64个特征图,
特征图个数变多了
接下来还是执行这样一个操作
又加了一个卷积层,得到的特征是512个,H x W x 512。在patch_gan中,最终得到的结果是N x N的矩阵,N x N中的每一个值代表原始图像中的一个小区域,基于当前这个N x N的结果去判断一下,每个小区域是不是都做对了。一点代表一个结果,而不是512个点代表一个batch。
怎么样把一个点代表一个batch,得将H x W x 512转换成H x W x 1,这就得到了N x N x 1的当前的判决器的结果了。