Auto Byte

专注未来出行及智能汽车科技

微信扫一扫获取更多资讯

Science AI

关注人工智能与其他前沿技术、基础学科的交叉研究与融合发展

微信扫一扫获取更多资讯

PRATEEK JOSHI作者冯羽校对程超翻译

自动编码器是什么?教你如何使用自动编码器增强模糊图像

本文首先介绍了基于神经网络的自动编码器,然后介绍如何使用自动编码器增强模糊图像。

概述

  • 自动编码器是什么?自动编码器是如何工作的?本文将回答这些问题。
  • 我们将通过一个案例——如何提高模糊图像的分辨率,来探讨自动编码器的概念。

简介

你还记得胶卷相机的时代吗?冲洗照片是一个神秘的过程,只有摄影师和专业人士才能够驾轻就熟。大多数人的印象中只有弥漫着昏暗红光的暗室。简而言之,冲洗照片是一个耗时的过程。

后来数码相机革命开始了,过往的时代一去不复返!我们甚至不想再打印照片了——大多数人的照片存储在智能手机、笔记本电脑或云上。

暗室即使现在,我们也会遇到(点击鼠标的时候)模糊、像素化和模糊的图片。我对此深表愧疚,很多人都在努力呈现出完美的图片。这正是深度学习自动编码器的用武之地。

下面将介绍什么是自动编码器,以及工作原理。然后,我们会给一个实际案例——基于Python中的自动编码器提高图像的分辨率。

必备条件:熟悉Keras,基于神经网络和卷积层的图像分类。如果你需要回顾这些概念,可以参考以下:

  • 神经网络概论(免费课程)
    https://courses.analyticsvidhya.com/courses/Introduction-to-Neural-Networks?utm_source=blog&utm_medium=what-is-autoencoder-enhance-image-resolution
  • 建立你的第一个图像分类模型
    https://www.analyticsvidhya.com/blog/2019/01/build-image-classification-model-10-minutes/?utm_source=blog&utm_medium=what-is-autoencoder-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

此数据集将被提取到多个文件夹中。因此,捕获所有图像的文件路径是很重要的。我们可以借助glob库轻松地做到这一点。

#capture paths to images
face_images = glob.glob('lfw/**/*.jpg')
  • 加载和预处理图像

图像的原始大小是250×250像素。然而,在一般配置的系统上处理这些图像需要消耗相当多的计算资源。因此,我们需要裁剪所有图像的尺寸。

  • 模型的训练数据准备

接下来,我们将数据集(图像)分成两组——训练和验证。我们将使用训练集来训练我们的模型,并用验证集来评估模型的性能:

让我们来看看数据集中的图像:

这个案例的思想和去噪自动编码器非常相似。

我们将对输入图像做一些修改,并使用原始图像计算损失。作为一个提高分辨率的任务,我们降低原始图像的分辨率,并将其输入到模型中。

如下是处理后的输入图片:

我们将使用下面的函数来降低所有图像的分辨率,并创建一组单独的低分辨率图像。

  • 准备输入图像

降低所有图像的分辨率,包括训练集和验证集

  • 模型创建

模型的结构定义如下:

可以根据需要修改该结构。你可以改变层的数量,改变层的类型,使用正则化,以及其他很多参数。当下我们继续使用这个结构。

模型结构可视化对于调试(如果出现错误)很有帮助。在Keras中很容易实现,仅需执行<model name>.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/

THU数据派
THU数据派

THU数据派"基于清华,放眼世界",以扎实的理工功底闯荡“数据江湖”。发布全球大数据资讯,定期组织线下活动,分享前沿产业动态。了解清华大数据,敬请关注姐妹号“数据派THU”。

入门自动编码器神经网络计算机视觉
3
相关数据
深度学习技术

深度学习(deep learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。 深度学习是机器学习中一种基于对数据进行表征学习的算法,至今已有数种深度学习框架,如卷积神经网络和深度置信网络和递归神经网络等已被应用在计算机视觉、语音识别、自然语言处理、音频识别与生物信息学等领域并获取了极好的效果。

自动编码器技术

自动编码器是用于无监督学习高效编码的人工神经网络。 自动编码器的目的是学习一组数据的表示(编码),通常用于降维。 最近,自动编码器已经越来越广泛地用于生成模型的训练。

重构技术

代码重构(英语:Code refactoring)指对软件代码做任何更动以增加可读性或者简化结构而不影响输出结果。 软件重构需要借助工具完成,重构工具能够修改代码同时修改所有引用该代码的地方。在极限编程的方法学中,重构需要单元测试来支持。

参数技术

在数学和统计学裡,参数(英语:parameter)是使用通用变量来建立函数和变量之间关系(当这种关系很难用方程来阐述时)的一个数量。

人脸识别技术

广义的人脸识别实际包括构建人脸识别系统的一系列相关技术,包括人脸图像采集、人脸定位、人脸识别预处理、身份确认以及身份查找等;而狭义的人脸识别特指通过人脸进行身份确认或者身份查找的技术或系统。 人脸识别是一项热门的计算机技术研究领域,它属于生物特征识别技术,是对生物体(一般特指人)本身的生物特征来区分生物体个体。

验证集技术

验证数据集是用于调整分类器超参数(即模型结构)的一组数据集,它有时也被称为开发集(dev set)。

神经网络技术

(人工)神经网络是一种起源于 20 世纪 50 年代的监督式机器学习模型,那时候研究者构想了「感知器(perceptron)」的想法。这一领域的研究者通常被称为「联结主义者(Connectionist)」,因为这种模型模拟了人脑的功能。神经网络模型通常是通过反向传播算法应用梯度下降训练的。目前神经网络有两大主要类型,它们都是前馈神经网络:卷积神经网络(CNN)和循环神经网络(RNN),其中 RNN 又包含长短期记忆(LSTM)、门控循环单元(GRU)等等。深度学习是一种主要应用于神经网络帮助其取得更好结果的技术。尽管神经网络主要用于监督学习,但也有一些为无监督学习设计的变体,比如自动编码器和生成对抗网络(GAN)。

映射技术

映射指的是具有某种特殊结构的函数,或泛指类函数思想的范畴论中的态射。 逻辑和图论中也有一些不太常规的用法。其数学定义为:两个非空集合A与B间存在着对应关系f,而且对于A中的每一个元素x,B中总有有唯一的一个元素y与它对应,就这种对应为从A到B的映射,记作f:A→B。其中,y称为元素x在映射f下的象,记作:y=f(x)。x称为y关于映射f的原象*。*集合A中所有元素的象的集合称为映射f的值域,记作f(A)。同样的,在机器学习中,映射就是输入与输出之间的对应关系。

图像处理技术

图像处理是指对图像进行分析、加工和处理,使其满足视觉、心理或其他要求的技术。 图像处理是信号处理在图像领域上的一个应用。 目前大多数的图像均是以数字形式存储,因而图像处理很多情况下指数字图像处理。

正则化技术

当模型的复杂度增大时,训练误差会逐渐减小并趋向于0;而测试误差会先减小,达到最小值后又增大。当选择的模型复杂度过大时,过拟合现象就会发生。这样,在学习时就要防止过拟合。进行最优模型的选择,即选择复杂度适当的模型,以达到使测试误差最小的学习目的。

图像分类技术

图像分类,根据各自在图像信息中所反映的不同特征,把不同类别的目标区分开来的图像处理方法。它利用计算机对图像进行定量分析,把图像或图像中的每个像元或区域划归为若干个类别中的某一种,以代替人的视觉判读。

图像去噪技术

图像去噪是从图像中去除噪声的任务,例如,高斯噪声在图像中的应用。

推荐文章
暂无评论
暂无评论~