星空体育APP下载

业务联系电话:028-65785509

怎么运用卷积自编码器对图片进行降噪?

发布时间:2021-07-16 05:50:00 来源:星空体育官方平台  

  这周作业太忙,原本想更把Attention tranlsation写出来,但一向抽不出时刻,等后边有时刻再来写,先给大家种个草。

  咱们这周来看一个简略的自编码器实战代码,关于自编码器的理论介绍我就不具体介绍了,网上一搜一大把。

  最简略的自编码器便是经过一个encoder和decoder来对输入进行复现,例如咱们将一个图片输入到一个网络中,自编码器的encoder对图片进行紧缩,得到紧缩后的信息,然后decoder再将这个信息进行解码然后复现原图。

  自编码器实际上是经过去最小化target和input的差别来进行优化,即让输出层尽或许地去复现原本的信息。因为自编码器的根底方式比较简略,关于它的一些变体也十分之多,包含DAE,SDAE,VAE等等,假如感兴趣的小伙伴能够去网上搜一下其他相关信息。

  本篇文章将完结两个Demo,榜首部分即完结一个简略的input-hidden-output结的自编码器,第二部分将在榜首部分的根底上完结卷积自编码器来对图片进行降噪。

  在这儿,咱们运用MNIST手写数据集来进行试验。首要咱们需求导入数据,TensorFlow现已封装了这个试验数据集,所以咱们运用起来也十分简略。

  经过input_data就能够加载咱们的数据集。假如小伙伴本地现已有了MNIST数据集(四个紧缩包),能够把这四个紧缩包放在目录MNIST_data下,这样TensorFlow就会直接Extract数据,而不必再从头下载。咱们能够经过imshow来随意检查一个图画。

  因为咱们加载进来的数据现已被处理成一个784维度的向量,因而从头显现的时分需求reshape一下。

  咱们把数据加载进来今后就能够进行最简略的建模。在这之前,咱们首要来获取一下input数据的巨细,咱们加载进来的图片是28x28的像素块,TensorFlow现已帮咱们处理成了784维度的向量。一起咱们还需求指定一下hidden layer的巨细。

  在这儿我指定了64,hidden_units越小,意味着信息丢失的越多,小伙伴们也能够测验一下其他的巨细来看看成果。

  至此,一个简略的AutoEncoder就结构完结,接下来咱们能够发动TensorFlow的graph来进行练习。

  经过上面的进程,咱们结构了一个简略的AutoEncoder,下面咱们将对成果进行可视化看一下它的体现。

  这儿,我选择了测试数据会集的5个样原本进行可视化,相同的,假如想调查灰度图画,指定cmap参数为’Greys_r’即可。上面一行为test数据会集原始图片,第二行是经过AutoEncoder复现今后的图片,能够很明显的看到像素信息的丢失。

  经过上面一个简略的比如,咱们了解了AutoEncoder的根本作业原理,下面咱们将更进一步改善咱们的模型,将隐层转换为卷积层来进行图画降噪。

  在了解了上面AutoEncoder作业原理的根底上,咱们在这一部分将对AutoEncoder参加多个卷积层来进行图片的降噪处理。

  相同的咱们仍是运用MNIST数据集来进行试验,关于数据导入的进程不再赘述,请下载代码检查。在开端之前,咱们先经过一张图片来看一下咱们的整个模型结构:

  咱们经过向模型输入一个带有噪声的图片,在输出端给模型没有噪声的图片,让模型经过卷积自编码器去学习降噪的进程。

  这儿的输入层和咱们上一部分的输入层现已不同,因为这儿咱们要运用卷积操作,因而,输入层应该是一个height x width x depth的一个图画,一般的图画depth是RGB格局三层,这儿咱们的MNIST数据集的depth只要1。

  紧接着对卷积成果进行最大池化操作(max pooling),这儿我设置了size和stride都是2 x 2,池化操作不改动卷积成果的深度,因而池化今后的巨细为 14 x 14 x 64。

  经过三层的卷积和池化操作今后,咱们得到的conv3实际上就相当于上一部分中AutoEncoder的隐层,这一层的数据现已被紧缩为4 x 4 x 32的巨细。

  接下来咱们就要开端进行Decoder端的卷积。在这之前,或许有小伙伴要问了,已然Encoder中都现已把图片卷成了4 x 4 x 32,咱们假如持续在Decoder进行卷积的话,那岂不是得到的数据size越来越小?

  所以,在Decoder端,咱们并不是单纯进行卷积操作,而是运用了Upsample(中文翻译能够为上采样)+ 卷积的组合。

  咱们知道卷积操作是经过一个滤波器对图片中的每个patch进行扫描,然后对patch中的像素块加权求和后再进行非线性处理。

  举个比如,原图中咱们的patch的巨细假如是3 x 3(说的浅显点便是一张图片中咱们取其中一个3 x 3巨细的像素块出来),接着咱们运用3 x 3的滤波器对这个patch进行处理,那么这个patch经过卷积今后就变成了1个像素块。

  可是Deconvolution有一些坏处,它会导致图片中呈现checkerboard patterns,这是因为在Deconvolution的进程中,滤波器中会呈现许多堆叠。为了处理这个问题,有人提出了运用Upsample加卷积层来进行处理。

  经过三次Upsample的操作,咱们得到了28 x 28 x 64的数据巨细。终究,咱们要将这个成果再进行一次卷积,处理成咱们原始图画的巨细。

  经过上面的进程咱们就结构完了整个卷积自编码器模型。因为咱们想经过这个模型对图片进行降噪,因而在练习之前咱们还需求在原始数据的根底上结构一下咱们的噪声数据。

  咱们经过上面一个简略的比如来看一下怎么参加噪声,咱们获取一张图片的数据img(巨细为784),在它的根底上参加噪声因子乘以随机数的成果,就会改动图片上的像素。

  接着,因为MNIST数据的每个像素数据都被处理成了0-1之间的数,所以咱们经过numpy.clip对参加噪声的图片进行clip操作,确保每个像素数据仍是在0-1之间。

  在练习模型时,咱们的输入现已变成了参加噪声后的数据,而输出是咱们的原始没有噪声的数据,首要要对原始数据进行reshape操作,变成与inputs_相同的格局。因为卷积操作的深度,所以模型练习时分有些慢,主张运用GPU跑。

  能够看到经过卷积自编码器,咱们的降噪作用仍是十分好的,终究生成的图片看起来十分顺滑,噪声也简直看不到了。

  有些小伙伴或许就会想,咱们也能够用根底版的input-hidden-output结构的AutoEncoder来完结降噪。因而我也完结了一版用最简略的input-hidden-output结构进行降噪练习的模型(代码在我的GitHub)。咱们来看看它的成果:

  能够看出,跟卷积自编码器比较,它的降噪作用更差一些,在重塑的图画中还能够看到一些噪声的影子。

  至此,咱们完结了根底版别的AutoEncoder模型,还在此根底上参加卷积层来进行图片降噪。信任小伙伴对AntoEncoder也有了一个开始的知道。

  每日头条、业界资讯、热门资讯、八卦爆料,全天盯梢微博播报。各种爆料、内情、花边、资讯一扫而光。百万互联网粉丝互动参加,TechWeb官方微博等待您的重视。



上一篇:都是自动降噪「安声科技」有什么不一样?
下一篇:不只有主动降噪还有更多惊喜 华为FreeLace Pro无线日开售

友情链接:百度中铁二院环保科技

星空体育APP下载(星空·体育)官方平台网站入口 版权所有 技术支持:星空体育APP下载

公司地址:成都市天府新区宁波路377号中铁卓越中心裙楼512 企业邮箱:sales@clqcwz.cn 电话:028-65785509