同学们能指出下面这张图中有多少只企鹅吗?
这张呢?
把第一张图像放大依然是模糊的。
好吧,那看看下面这张:
我们要数一数看企鹅,它是行动中图像超分辨率的完美典范!
图像超分辨率可从低分辨率图片中创建外观更好,分辨率更高的图像。
任何将图像放入Powerpoint演示文稿中的人都知道缩小图像实际上会使它看起来更糟。这是因为双三次插值法用于放大图像:
该技术采用像素的平均值来填充在放大图像时产生的间隙。
基于插值的大小调整/放大如何工作
这样做的问题是,没有新的数据正在创建-这意味着您的图像分辨率并没有变好,而只是变大了。
无论您是只是创建简报,分析身体X线照片,还是进行远距离面部识别,超分辨率都是至关重要的。
那么我们如何做超分辨率?好吧,我们转向-人工智能!我们已经看到了使用卷积神经网络在图像超分辨率方面的大量最新发展。但是,这样做仍然存在一些问题-图像看上去并没有我们所希望的那么清晰明了,为了解决这个问题,SRGAN(超分辨率生成对抗网络)快速生成了。
不同SR方法的比较。 放大以注意到SRGAN有牛x!
在进入超分辨率方面之前,这里是GAN的快速概述:
GAN(生成对抗网络)概述
想一想伪造者在博物馆和策展人之间切换真实绘画与伪造品的情况,其工作是将真实艺术品与伪造品区分开。当两者都刚刚开始时,造假者将犯下大量错误,策展人也将很难区分假货与真实商品。
随着时间的流逝,造假者可以尝试不同的技术,并且在制造假货方面会变得更好,而策展人还可以找到策略来帮助他区分假货。他们彼此都在进步。
造假者的目的是创建看起来真实的艺术品,策展人的目的是总是能够发现假画。
这两个角色相互竞争,代表GAN中的两个网络。作为生成网络的伪造者将创建新图像,而作为区分网络的策展人将评估来自生成器的图像是否真实。
正在训练生成手写数字的传统GAN的轮廓
生成器获得反馈的随机像素数据(噪声),它会变成伪输出,在超分辨率的情况下,它将把随机噪声转换为更高分辨率的图像。
鉴别器在训练集和生成器的图像上进行训练,学会区分它们。
那么为什么使用GAN更好呢?
还有许多其他的超分辨率方法,例如SRResNet和SRCNN,但是,这些方法都存在一个问题:即使网络看起来运行良好,视觉质量也很差。
当我们使用传统的损失函数来衡量鉴别器的准确性时,它衡量的是数学上的接近度(欧几里得距离),而不是视觉上生成的图像与真实图像的接近程度,从而得出区域内颜色的平滑平均值 ,如下面的SRResNet图像所示。
SRGAN(左),SRResNet(右)—注意SRResNet图像中的平滑度和细节。
为了解决这个问题,创建了一个感知损失函数-测量视觉清晰度。该损失是两种不同损失之和→内容损失和对抗性损失。
对抗损失
使用GAN的巨大好处之一是,您可以利用对抗损失来激励输出看起来自然。发生这种情况是因为GAN的基本特性:查找看起来不属于它的数据。
对抗性损失是鉴别器网络评估生成器运行状况的一部分。如果鉴别者认为图像使生成器看起来合法,则损失比认为图像完全伪造的损失要少。
内容损失
内容损失通过将生成的图像和原始图像通过CNN特征图并计算输出的损失来比较图像中的精细细节。
让我们分解一下。
当我们训练卷积神经网络时,它的各层执行特征提取,这是一种奇特的说法,即它在图像中寻找图案和形状。随着我们越来越深入网络,我们发现功能越来越复杂。
可视化特征图
好的,让我们分析一下这些功能图中的实际情况。在Conv1层中,保留了来自图像的大量原始信息。这是因为CNN中的初始(转换)层通常充当边缘检测器。
稍后在网络中,对更高级别的信息进行了编码,并且在Conv 2-4中,图像开始变得越来越抽象。尽管看起来较深层的编码信息要比初始层少(因为它们看起来很模糊),但实际上它们只是在改变它们包含的信息的类型-从几何信息到语义信息。
为了更清楚地了解这一点:以下是通过图像的实际滤镜在VGG16网络中的外观的一些可视化效果。(更具体地讲,使用滤镜激活最多的图像的代码可以执行此操作)
Layer 7
Layer 14
Layer 20
Layer 30
Layer 40
这些看起来非常不错,而且还可以直观地了解我们深入网络时正在寻找哪些过滤器。
在图像的最后一行中,我们可以轻松地将拱门,鸟类和链条识别为每个过滤器正在寻找的对象。
让内容恢复损失,我们将通过生成器和参考(原始)图像重建的图像通过特征图,并比较两个图像中的细微纹理差异,以看起来平滑的纹理对图像进行惩罚。
感觉损失的概念也用于神经样式转换!这是感知损失函数的基本思想。
随着这项技术的进步,并且随着时间的推移不断改进,我们可以从如下所示的出色结果中受益:
这项技术的进步可能会导致超长距离的航空/卫星成像,医学图像增强,数字全息技术,以及更多真正意义上的高影响力应用程序。
关键要点:
相关论文源码下载地址:关注“图像算法”微信公众号