Author: Platik Josh
翻译:程超
校对:冯玉
本文约2200字,建议阅读9分钟。
本文首先介绍了基于神经网络的自动编码器,然后介绍了如何使用自动编码器对模糊图像进行增强。
标签:计算机视觉
概述什么是自动编码器?自动编码器是如何工作的?本文将回答这些问题。我们将通过一个如何提高模糊图像分辨率的案例来讨论自动编码器的概念。你还记得胶片相机的时代吗?冲洗照片是一个神秘的过程。
只有摄影师和专业人士才能熟悉。大多数人只有一个充满昏暗红光的暗室。简而言之,冲洗照片是一个耗时的过程。
后来数码相机。。开始了,过去的时代一去不复返了!我们甚至不想再打印照片了。——大多数人的照片都存储在智能手机、笔记本电脑或云中。
暗房
即使是现在,我们也会遇到模糊、像素化、模糊的图片(点击鼠标时)。对此我深感愧疚。很多人都在努力呈现完美的画面。这就是深度学习和自动编码器的用武之地。
下面将介绍什么是自动编码器及其工作原理。然后,我们将给出一个实际案例——,基于Python中的自动编码器来提高图像的分辨率。
先决条件:熟悉Keras,基于神经网络和卷积层的图像分类。如果需要复习这些概念,可以参考以下内容:
神经网络概论(免费课程)https://门课程。analyticsvidhya。UTM _ source=blogutm _ medium=什么是自动编码器增强图像分辨率建立你的第一个图像分类模型https://www。analyticsvidhya。com/blog/2019/01/build-image-class ification-model-10-minutes/UTM _ source=blogutm _ medium=what-is-auto encoder-enhance-image-resolution目录一、什么是自动编码器
二、关于图像去噪的自编码器
三、问题描述——使用自动编码器提高图像分辨率
第四,用Python实现自动编码器。
一、什么是自动编码器Pulkit Sharma在文章中给出了如下定义:
“自动编码器本质上是一个神经网络结构,它学习输入数据的低维特征表示。”
自动编码器由两个相连的网络组成:编码器和解码器。编码器的目的是获取输入(x)并生成特征图(z):
这个特征图(z)的大小或长度通常小于x,为什么会这样呢?
因为我们只希望Z捕获能描述输入数据有意义的变异因子,所以Z的形状通常比x小。
现在,问题是我们如何得到这个特征表示(z)?我们如何训练这个模型?为此,我们可以在提取的特征上添加一个解码器网络,然后训练模型:
第二,关于图像去噪自动编码器,本文要解决的问题与图像去噪自动编码器的功能有关。下面详细介绍一下如何使用自动编码器消除图像中的噪声。
假设我们有一组手写的数字图像,其中一些已经损坏。以下是一些有噪点(损坏)的图像:
从图像中去除这种噪声被称为图像去噪问题。所需的输出是干净的图像,其中大部分噪声被去除,如下所示:
但是自动编码器如何从图像中去除这种噪声呢?
正如我们在上一节中已经看到的,自动编码器试图重建输入数据。因此,如果我们把损坏的图像作为输入,自动编码器将尝试重建噪声图像。
那么,我们该怎么办呢?改变结构?答案是否定的!
这里需要的是一个小调整。我们可以通过使用原始图像和重构图像来计算损耗,而不是使用输入和重构输出来计算损耗。下图说明了我的观点:
图像去噪自编码器
现在我们已经熟悉了去噪自动编码器的功能,下面我们回到期望使用自动编码器解决的问题。
三、问题描述-使用自动编码器提高图像分辨率对这个问题相信你不会陌生。我们大多数人遇到模糊图像都很郁闷,都希望图片能清晰些。下面我们将使用自动编码器解决该问题!
假设我们有一组低分辨率的人脸图像。我们的任务是提高这些图像的分辨率。可以借助Photoshop等照片编辑工具来完成此操作。但是,当手头有成千上万张图像时,我们需要一种更智能的方法来执行此任务。
以下是一些示例图像及其原始图像:
四、使用Python实现自动编码器让我们打开我们的Juyter Notebook并导入所需的库:
下载数据集我们的研究基于流行的“Labeled Faces in the Wild”数据集。它设计用于研究无约束人脸识别问题。然而,在这里我们的目标不是人脸识别,而是建立一个模型来提高图像分辨率。
让我们下载和提取数据集:
# download dataset! wget http://vis-www.cs.umass.edu/lfw/lfw.tgz# extract dataset! tar -xvzf lfw.tgz此数据集将被提取到多个文件夹中。
#capture paths to imagesface_images=glob.glob('lfw/**/*.jpg')加载和预处理图像图像的原始大小是250250像素。然而,
在一般配置的系统上处理这些图像需要消耗相当多的计算资源。因此,我们需要裁剪所有图像的尺寸。
模型的训练数据准备接下来,我们将数据集(图像)分成两组——训练和验证。我们将使用训练集来训练我们的模型,并用验证集来评估模型的性能:
让我们来看看数据集中的图像:
这个案例的思想和去噪自动编码器非常相似。
我们将对输入图像做一些修改,并使用原始图像计算损失。作为一个提高分辨率的任务,我们降低原始图像的分辨率,并将其输入到模型中。
如下是处理后的输入图片:
我们将使用下面的函数来降低所有图像的分辨率,并创建一组单独的低分辨率图像。
准备输入图像降低所有图像的分辨率,包括训练集和验证集。
模型创建模型的结构定义如下:
可以根据需要修改该结构。你可以改变层的数量,改变层的类型,使用正则化,以及其他很多参数。当下我们继续使用这个结构。
模型结构可视化对于调试(如果出现错误)很有帮助。在Keras中很容易实现,仅需执行.summary( )函数即可:
autoencoder.summary()我们最终可以训练我们的模型:
预测(增强图像)predictions=autoencoder.predict(val_x_px)后记本教程讲解了自动编码器,我们基于图像去噪的思路实现了提高图像分辨率。
我们可以将其扩展到其他很多地方。
原文标题:What are Autoencoders Learn How to Enhance a Blurred Image using an Autoencoder!原文链接:https://www.analyticsvidhya.com/blog/2020/02/what-is-autoencoder-enhance-image-resolution/
编辑:黄继彦
校对:林亦霖
译者简介
程超,。。建设银行大数据中心,东南大学硕士。工作涉猎较杂,从DSP开发,QT开发,再到数据挖掘、数据产品,以及目前的数据安全工作。对自己的定位是成为数据科学领域的全栈科学家。
工作之余希望能多补充前沿的数据科学知识和理念,多和大家交流学习。
—完—
关注清华-青岛数据科学研究院官方微信公众平台“ AI数据派”及姊妹号“ 数据派THU ”获取更多讲座福利及优质内容。
标题:自动编码器是什么?教你如何使用自动编码器增强模糊图像
链接:https://www.52hkw.com/news/rj/68851.html
版权:文章转载自网络,如有侵权,请联系删除!