主要内容

代码生成神经网络去噪深

这个例子展示了如何生成CUDA®墨西哥人从MATLAB®代码和降噪灰度图像通过去噪卷积神经网络(DnCNN [1])。您可以使用网络来估计噪声去噪在嘈杂的图像,然后删除它得到去噪图像。

第三方的先决条件

要求

这个示例中生成CUDA墨西哥人,有以下第三方的要求。

  • CUDA®启用NVIDIA GPU®和兼容的驱动程序。

可选

等non-MEX构建静态、动态库或可执行文件,这个例子有以下额外的需求。

验证GPU环境

使用coder.checkGpuInstall(GPU编码器)函数来确认所需的编译器和库运行这个例子是正确设置。

envCfg = coder.gpuEnvConfig (“主机”);envCfg。DeepLibTarget =“cudnn”;envCfg。DeepCodegen = 1;envCfg。安静= 1;coder.checkGpuInstall (envCfg);

负载噪声图像

加载一个嘈杂的灰度图像到工作区中并显示图像。

noisyI = imread (“noisy_cameraman.png”);图imshow (noisyI);标题(“嘈杂的图像”);

得到Pretrained去噪网络

调用getDenoisingNetworkhelper函数图像去噪pretrained深层神经网络。

网= getDenoisingNetwork;

getDenoisingNetwork函数返回一个pretrained DnCNN[1],您可以用它来检测加性高斯白噪声(AWGN)未知的水平。网络是一个前馈去噪卷积网络实现剩余的学习技术预测剩余的形象。换句话说,DnCNN[1]计算不同噪声图像和潜在的清廉形象。

网络包含59层包括卷积,批正常化,和回归输出层。显示一个交互式可视化的深度学习网络体系结构,使用analyzeNetwork函数。

analyzeNetwork(净);

denoisenet_predict函数

denoisenet_predict入口点函数接受一个嘈杂的图像输入,并返回一个使用pretrained去噪图像去噪的网络。

返回的函数加载网络对象getDenoisingNetwork到一个持续的变量mynet在随后的预测调用和重用持久对象。

类型denoisenet_predict
函数= denoisenet_predict () % # codegen % MathWorks版权2018 - 2021,公司持续mynet;如果isempty (mynet) mynet =编码器。loadDeepLearningNetwork (“getDenoisingNetwork”、“DnCNN”);结束%的激活方法提取最后一层的输出。%的OutputAs“渠道”名称-值对的观点是为了打电话给%激活使用一个图像的输入尺寸大于或等于网络的imageInputLayer.InputSize %。res = mynet。激活(in, 59,'OutputAs','channels'); % Once the noise is estimated, we subtract the noise from the original % image to obtain a denoised image. I = in - res;

在这里,激活方法被称为层数值指数为59提取激活最后一层的网络。的“OutputAs”“渠道”名称-值对图像大于参数计算激活imageInputLayer.InputSize的网络。

激活方法返回一个估计的噪声输入图像通过使用pretrained图像去噪。

一旦估计噪声,减去原始图像的噪声,得到去噪图像。

墨西哥人运行代码生成

生成CUDA代码denoisenet_predict.m入口点函数,创建一个GPU代码配置对象为一个墨西哥人的目标和目标语言设置为c++。使用coder.DeepLearningConfig(GPU编码器)函数创建一个CuDNN深度学习配置对象,并将其分配给DeepLearningConfigGPU代码配置对象的属性。运行codegen命令指定一个输入[256256]的大小。这个值对应于嘈杂的图像的大小,你打算消除干扰。

cfg = coder.gpuConfig (墨西哥人的);cfg。TargetLang =“c++”;cfg。DeepLearningConfig = coder.DeepLearningConfig (“cudnn”);codegen配置cfgdenoisenet_predictarg游戏{(256256年,“单”)}报告
代码生成成功:查看报告

运行生成的墨西哥人

的DnCNN[1]是训练输入图像输入区间[0,1]。调用im2single(图像处理工具箱)函数noisyI从[0255]重新调节值到[0,1]。

调用denoisenet_predict_predict新输入图像。

denoisedI = denoisenet_predict_mex (im2single (noisyI));

视图去噪图像

图imshowpair (noisyI denoisedI,“蒙太奇”);标题(的嘈杂的图像(左)和(右)的去噪图像);

引用

[1],K。陈,w .左,y,孟d, l .张。“超越一个高斯降噪:剩余的学习深度图像去噪的CNN。”IEEE Transactions on Image Processing. Vol. 26, Number 7, Feb. 2017, pp. 3142-3155.

相关的话题