** 讲解大纲**
1
提高图片分辨率——开源例子
2
MNIST简单训练
3
图像处理的相关应用
提高图片分辨率-开源例子
该项目是使用生成对抗网络的令人印象深刻的工作照片真实单图像超分辨率的张量流实现 。
训练方法大致就是构建好网络后,找一个高清图片数据集,对每个图片做处理得到低分辨率的图片,从而得到低分辨率图片数据集。用这两个数据集来训练网络,实现低分辨率到高分辨率图片的转化。
**源码地址:**https://github.com/brade31919/SRGAN-tensorflow
**简书:**https://www.jianshu.com/p/3b920726a6bd
SRGAN (Photo-Realistic Single Image Super-Resolution Using a Generative Adversarial Network, arxiv, 21 Nov, 2016)将生成式对抗网络(GAN)用于SR问题。其出发点是传统的方法一般处理的是较小的放大倍数,当图像的放大倍数在4以上时,很容易使得到的结果显得过于平滑****,而缺少一些细节上的真实感。因此SRGAN使用GAN来生成图像中的细节。将生成对抗网络(Generative Adversarial Network, GAN)用在了解决超分辨率问题上。
为什么会造成平滑,缺少真实感?
文章提到,训练网络时用均方差作为损失函数,虽然能够获得很高的峰值信噪比,但是恢复出来的图像通常会丢失高频细节,使人不能有好的视觉感受。SRGAN利用感知损失(perceptual loss)和对抗损失(adversarial loss)来提升恢复出的图片的真实感。
图像超分辨率(Super Resolution, SR)就是将低分辨率(Low Resolution, LR)的图像通过一定的算法转提升到高分辨率(High Resolution, HR)。高分辨率图像具有更高的像素密度,更多的细节信息,更细腻的画质。
要获得高分辨率图像,最直接的办法是采用高分辨率的相机,然而,在实际应用过程中,由于制作工艺和工程成本的考虑,很多场合都不会采用高分辨率、超分辨率的相机来进行图像信号的采集。因此,通过超分辨率技术来获取HR具有一定的应用需求。
图像超分辨率:
基于深度学习的图像超分辨率方法总结:
感知损失是利用卷积神经网络提取出的特征,通过比较生成图片经过卷积神经网络后的特征和目标图片经过卷积神经网络后的特征的差别,使生成图片和目标图片在语义和风格上更相似。
一个GAN所要完成的工作,GAN原文举了个例子:生成网络(G)是印假钞的人,判别网络(D)是检测假钞的人。G的工作是让自己印出来的假钞尽量能骗过D,D则要尽可能的分辨自己拿到的钞票是银行中的真票票还是G印出来的假票。开始的时候呢,G技术不过关,D能指出这个假钞哪里很假。G每次失败之后都认真总结经验,努力提升自己,每次都进步。直到最后,D无法判断钞票的真假……
SRGAN的工作就是: G网通过低分辨率的图像生成高分辨率图像,由D网判断拿到的图像是由G网生成的,还是数据库中的原图像。当G网能成功骗过D网的时候,那我们就可以通过这个GAN完成超分辨率了。
模型
在生成网络部分(SRResNet)部分包含多个残差块,每个残差块中包含两个3×3的卷积层,卷积层后接批规范化层(batch normalization, BN)和PReLU作为激活函数,两个2×亚像素卷积层(sub-pixel convolution layers)被用来增大特征尺寸。
在判别网络部分包含8个卷积层,随着网络层数加深,特征个数不断增加,特征尺寸不断减小,选取激活函数为LeakyReLU,最终通过两个全连接层和最终的sigmoid激活函数得到预测为自然图像的概率。
神经质网络
基础知识:
源码
训练结果
较全解析:
修改损失函数:
MNIST
学习文档:
http://wiki.jikexueyuan.com/project/tensorflow-zh/tutorials/mnist_pros.html
http://wiki.jikexueyuan.com/project/tensorflow-zh/tutorials/mnist_beginners.html
MNIST机器学习入门
这个教程的目标是对机器学习和TensorFlow都不太了解的新手。
当我们开始学习编程的时候,第一件事往往是学习打印"Hello World"。就好比编程入门Hello World,机器学习入门有MNIST。
MINST是一个入门级的计算机视觉数据集,它包含各种手写数字图片:
它也包含每张图片对应的标签,告诉我们这是个数字几。比如上面这四张图片的标签分别是5,0,4,1。
MNIST运行结果:
这个最终结果值应该大约是91%。
这个结果好吗?嗯,不太好。事实上,这个结果时很差的。这是因为我们仅仅使用了一个非常简单的模型。不过,做一些小小的改进,我们就可以得到97%的正确率。最好的模型甚至可以获得超过99.7%的准确率!
深度学习应用
诚聘精英
JOIN US
本文转载自 360质量效能