介绍
让我们从理解术语“图像去噪”的含义来开始我们的讨论,这也是我们的文章标题——
图像去噪是从图像中去除噪声的过程
图像中存在的噪声可能是由实际上难以处理的各种内在或外在条件引起的。图像去噪问题是图像处理和计算机视觉领域的一个非常基本的挑战 。因此,它在许多领域中发挥着重要作用,获取原始图像对于鲁棒性能非常重要。
让我们看看存在噪声的图像是什么样子的:
带有噪声的图像示例
因此,在本文中,我们将看到如何使用自动编码器或编码器-解码器网络从带有噪声的图像中去除噪声。
在本文中,我将使用深度人工神经网络实现自动编码器。我的下一篇文章中,我还将针对相同的问题陈述使用深度卷积神经网络来描述自动编码器。所以,试试这个项目,并在我的下一个教程中继续关注我们。
现在,让我们也看看去除噪声后图像的外观:
对顽皮狗图像进行降噪之前和降噪之后
现在,让我们通过了解一些关于自动编码器的基本概念来开始我们的讨论。
编码器-解码器网络(自动编码器)概述
自编码器是一种无监督的人工神经网络,经过训练可以将其输入复制到输出。对于图像数据,自动编码器将首先将图像编码为低维表示,然后将该表示解码回图像。编码器-解码器包含以下两种结构:
编码器 - 该网络将数据下采样到较低的维度。
解码器 -该网络从较低维度的表示中重建原始数据。
较低维度(即编码器网络的输出)表示通常称为 潜在空间表示。
关于自动编码器,我们必须记住的一件事是,它们只能压缩与它们接受过训练的数据相似的数据。它们本质上也是有损的,这意味着相对于原始输入,输出将降级。
它们通过反向传播进行类似于人工神经网络的训练。
让我们开始吧!!
加载必要的库
第一步是加载必要的 Python 库。我们将导入诸如numpy 之类的库,用于优化矩阵乘法,matplotlib用于数据可视化,例如绘制图像。来自 Keras 的序列模型为我们提供了一个空的架构,根据我们的架构,我们将在其中添加几个全连接层,Dense在我们的网络中创建全连接层,直接从Keras导入MNIST数据集。
import numpy
import matplotlib.pyplot as plt
from keras.models import Sequential
from keras.layers import Dense
from keras.datasets import mnist
现在,我们完成了导入必要库的第一步,让我们继续以 numpy 的形式加载数据集。
以 Numpy 格式加载数据集
在本文中,我们将使用 MNIST 数据集,这是一个简单的计算机视觉数据集。它由灰度形式的手写数字图