用于图像降噪的卷积自编码器

本文介绍了卷积自编码器在图像降噪中的应用,通过保持图像的空间信息,避免数据堆叠导致的信息丢失。文章详细阐述了卷积层、线性整流步骤和最大池化层的工作原理,并提供了Keras模型构建示例,同时讨论了如何构建图像降噪卷积自编码器。
摘要由CSDN通过智能技术生成

这篇文章的目的是介绍关于利用自动编码器实现图像降噪的内容。

在神经网络世界中,对图像数据进行建模需要特殊的方法。其中最著名的是卷积神经网络(CNN或ConvNet)或称为卷积自编码器。并非所有的读者都了解图像数据,那么我先简要介绍图像数据(如果你对这方面已经很清楚了,可以跳过)。然后,我会介绍标准神经网络。这个标准神经网络用于图像数据,比较简单。这解释了处理图像数据时为什么首选的是卷积自编码器。最重要的是,我将演示卷积自编码器如何减少图像噪声。这篇文章将用上Keras模块和MNIST数据。Keras用Python编写,并且能够在TensorFlow上运行,是高级的神经网络API。

了解图像数据

如图(A)所示,图像由“像素”组成。在黑白图像中,每个像素由0到255之间的数字表示。如今大多数图像使用24位彩色或更高的颜色。一幅RGB彩色图像表示一个像素的颜色由红色、绿色和蓝色组成,这三种颜色各自的像素值从0到255。RGB色彩生成器(如下所示)表明,RGB色彩系统利用红绿蓝,组合成各种颜色。因此,一个像素由含三个值的RGB(102、255、102)构成,其色号为#66ff66。

图 (A)

宽800像素,高600像素的图像具有800 x 600 = 480,000像素,即0.48兆像素(“兆像素”等于100万像素)。分辨率为1024×768的图像是一个由1,024列和768行构成的网格,共有1,024×768 = 0.78兆像素。

MNIST

MNIST数据库是一个大型的手写数字数据库,通常用于训练各种图像处理系统。Keras的训练数据集具备60,000条记录,而测试数据集则包含了10,000条记录。每条记录共有28 x 28个像素。


from keras.layers import Input, Dense
from keras.models import Model
from keras.datasets import mnist
import numpy as np
(x_train, _), (x_test, _) = mnist.load_data()

它们看起来怎么样?我们用绘图库及其图像功能imshow()展示前十条记录。


import matplotlib.pyplot as plt

n = 10  # 显示的记录数
plt.figure(figsize=(20, 4))
for i in range(n):
    # 显示原始图片
    ax = plt.subplot(2, n, i   1)
    plt.imshow(x_test[i].reshape(28, 28))
    plt.gray()
    ax.get_xaxis().set_visible(False)
    ax.get_yaxis().set_visible(False)

plt.show()

图像数据的堆叠,用于训练

如果要让神经网络框架适用于模型训练,我们可以在一列中堆叠所有28 x 28 = 784个值。第一条记录的堆叠列如下所示(使用x_train[1].reshape(1,784)):

然后,我们可以使用标准的神经网络训练模型,如图(B)所示。数值为784的每个值都是输入层中的一个节点。且慢!堆叠数据会丢失很多信息吗?答案是肯定的。图像中的空间关系被忽略了。这使得大量的信息丢失。那么,我们接着看卷积自编码器如何保留空间信息。

图(B)

为什么图像数据首选卷积自编码器?

可以看到,数据切片和数据堆叠会导致信息大量丢失。卷积自编码器放弃堆叠数据,使图像数据输入时保持其空间信息不变,并在卷积层中以温和的方式提取信息。图(D)演示了将平面2D图像先提取到一个厚的正方体(Conv1),再提取到一个长方体(Conv2)和另一个长度更长的长方体(Conv3)。此过程旨在保留数据中的空间关系。这是自动编码器的编码过程。中间部分是一个完全连接的自动编码器,其隐藏层仅由10个神经元组成。然后就是解码过程。三个立方体将会展平,最后变成2D平面图像。图(D)的编码器和解码器是对称的。实际上,编码器和解码器不要求对称。

图(D)

卷积自编码器如何工作?

上面的数据析取似乎很神奇。数据析取究竟是如何进行的?这包括以下三层:卷积层,线性整流层和池化层。

图 (E): 特征图

1. 卷积层

卷积步骤会生成很多小块,称为特征图或特征,如图(E)的绿色、红色或深蓝色的正方形。这些正方形保留了输入图像中像素之间的关系。如图(F)所示,每个特征扫描原始图像。这一产生分值的过程称为卷积。

图 (F): 过滤过程

扫描完原始图像后,每个特征都会生成高分值和低分值的滤波图像,如图(G)所示。如果匹配完美,那块正方形的得分就高。如果匹配度低或不匹配,则得分低或为零。例如,原始图像有四个区域与红色方块完全匹配,那么这四个区域的得分都很高。

图 (G)

过滤器越多,模型可以提取的特征就越多。但是,特征越多,训练时间也就越长。因此,最好还是选择最少的过滤器提取特征。

1.1填充

特征如何确定匹配项?一种超参数是填充,有两种选择:(i)用零填充原始图像以符合该特征,或(ii)删除原始图像中不符的部分并保留有效部分。

1.2步长

卷积层的另一个参数:步长。步长是输入矩阵上移动的像素个数。当步长为1时,过滤器一次移动1个像素。在Keras代码中,我们将其视为超参数。

2.线性整流步骤

线性整流单位(ReLU)的步骤与典型的神经网络相同。它将所有的负值校正为零,确保数学运算正确。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值