去噪神经网络的训练与应用
图像处理工具箱™和深度学习工具箱™提供了许多选项来去除图像中的噪声。最简单和最快的解决方案是使用内置的预训练去噪神经网络,称为DnCNN。然而,预训练的网络在识别噪声类型方面没有提供太多的灵活性。为了获得更大的灵活性,可以使用预定义的层训练自己的网络,或者训练一个完全自定义的去噪神经网络。
利用预训练网络去除高斯噪声
您可以使用内置的预先训练的DnCNN网络来去除高斯噪声,而无需训练网络的挑战。用预训练的网络去除噪声有以下局限性:
噪声去除只适用于二维单通道图像。如果你有多个彩色通道,或者你正在处理3d图像,通过单独处理每个通道或平面来去除噪声。示例请参见利用预训练神经网络去除彩色图像中的噪声.
该网络只识别具有有限标准偏差范围的高斯噪声。
要加载预先训练的DnCNN网络,请使用denoisingNetwork
函数。然后,将DnCNN网络和一个有噪声的二维单通道图像传递到denoiseImage
.该图像显示了使用预先训练的DnCNN网络去噪图像的工作流程。
使用内置层训练去噪网络
可以从图像处理工具箱提供的内置层开始,训练网络从灰度图像中检测更大范围的高斯噪声标准差。要使用预定义的层来训练去噪网络,请遵循以下步骤。图中深灰色框中显示了培训工作流。
创建一个
ImageDatastore
对象,该对象存储原始图像。创建一个
denoisingImageDatastore
对象,该对象从原始图像生成有噪声的训练数据。若要指定高斯噪声标准差的范围,请设置GaussianNoiseLevel
财产。的默认值PatchSize
(50
),ChannelFormat
(“灰度”
),使训练数据的大小与网络的输入大小相匹配。方法获取预定义的去噪层
dnCNNLayers
函数。定义培训选项
trainingOptions
(深度学习工具箱)函数。训练网络,指定去噪图像数据存储作为数据源
trainNetwork
(深度学习工具箱).对于训练的每次迭代,去噪图像数据存储通过随机裁剪原始图像生成一个小批量的训练数据ImageDatastore
,然后在每个图像patch中添加随机生成的零均值高斯白噪声。附加噪声的标准差对于每个图像补丁都是唯一的,并且有一个值在函数指定的范围内GaussianNoiseLevel
去噪图像数据存储的属性。
训练好网络后,将网络和一个有噪声的灰度图像传递给denoiseImage
.图中淡灰色框显示去噪工作流程。
训练全定制去噪神经网络
要训练去噪神经网络具有最大的灵活性,您可以使用自定义数据存储来生成训练数据或定义自己的网络架构。例如,你可以:
训练一个能在单通道图像中检测更多种类的噪声的网络,例如非高斯噪声分布。方法返回的层可以定义网络体系结构
dnCNNLayers
函数。若要生成与此网络兼容的训练图像,请使用变换
而且结合
函数的批量噪声图像和相应的噪声信号。有关更多信息,请参见用于深度学习的图像预处理(深度学习工具箱).在使用DnCNN网络体系结构训练去噪网络后,可以使用
denoiseImage
功能去除图像噪声。提示
DnCNN网络还可以检测到由其他类型的失真引起的高频图像伪影。例如,您可以训练DnCNN网络来提高图像分辨率或删除JPEG压缩工件。的使用深度学习的JPEG图像去块示例展示了如何训练DnCNN网络删除JPEG压缩工件
训练一个检测彩色图像的高斯噪声分布范围的网络。要为该网络生成训练图像,可以使用
denoisingImageDatastore
并设置ChannelFormat
财产“rgb”
.您必须定义一个支持RGB输入图像的自定义卷积神经网络体系结构。万博1manbetx在使用自定义网络体系结构训练去噪网络后,可以使用
激活
(深度学习工具箱)功能是隔离失真图像中的噪声或高频伪影。然后从失真图像中减去噪声,得到去噪后的图像。
另请参阅
denoisingImageDatastore
|dnCNNLayers
|denoisingNetwork
|trainingOptions
(深度学习工具箱)|trainNetwork
(深度学习工具箱)|denoiseImage
|激活
(深度学习工具箱)|结合
|变换
相关的例子
更多关于
- 用于深度学习的图像预处理(深度学习工具箱)
- MATLAB中的深度学习(深度学习工具箱)