主要内容

用于去噪深神经网络的代码生成

此示例显示如何通过使用去噪卷积神经网络(DNCNN [1])来源如何从Matlab®代码生成CUDA®MEX。您可以使用去噪网络在噪声图像中估计噪声,然后将其删除以获得去噪图像。

第三方先决条件

必需的

此示例生成CUDA MEX并具有以下第三方要求。

  • CUDA®支持NVIDIA®GPU和兼容的驱动程序。

可选的

对于诸如静态,动态库或可执行文件的非MEX构建,此示例具有以下附加要求。

验证GPU环境

使用Coder.CheckGPuInstall.验证运行此示例所需的编译器和库是否已正确设置。

envcfg = coder.gpuenvconfig('主持人');envcfg.deeplibtarget =.'cudnn';envcfg.deepcodegen = 1;Envcf​​g.quiet = 1;Coder.CheckGpuInstall(Envcf​​g);

加载噪音

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

noisyi = imread('noisy_cameraman.png');图imshow(noisyi);标题('吵闹的形象');

获得预先抛弃的去噪网络

打电话给getdenoisingnetwork辅助功能可获得普拉特拍摄的图像去噪深神经网络。

网= getDenoisingnetwork;

getdenoisingnetwork函数返回佩带的DNCNN [1],您可以用于检测具有未知级别的添加性白色高斯噪声(AWGN)。该网络是一种前馈去噪卷积网络,其实现残留学习技术以预测残余图像。换句话说,DNCNN [1]计算噪声图像和潜在清洁图像之间的差异。

该网络包含59层,包括卷积,批量归一化和回归输出层。要显示深度学习网络架构的交互式可视化,请使用分析(深度学习工具箱)功能。

分析(网);

denoisenet_predict.功能

denoisenet_predict.入口点函数采用嘈杂的图像输入,并通过使用预先训练的去噪网络来返回去噪图像。

该函数加载返回的网络对象getdenoisingnetwork进入持久变量yeNet.并在后续预测调用上重用持久对象。

类型denoisenet_predict.
函数i = denoisenet_predict(in)%#codegen%copyright 2018-2019 Mathworks,Inc。持久性MyNet;如果是isempty(mynet)mynet = coder.loaddeeplearningnetwork('getdenoisingnetwork','dncnn');终端%激活方法从上层提取输出。%'outputas''ander'name-value对参数用于呼叫映像上的ock%的激活,其输入尺寸大于或等于网络的ImageInputLayer.InputSize。res = mynet.activations(在59中,'outputas','频道');一旦估计噪声,我们将从原始%图像中减去噪声以获得去噪图像。我= in  -  res;

在这里,这是激活使用图层数字索引调用的方法为59以从网络的最终层中提取激活。这'outputas''频道'名称 - 值对参数计算大于图像的图像的激活imageInputLayer.InputSize.网络。

激活方法通过使用预先训练的去噪图像返回输入图像中噪声的估计。

一旦估计了噪声,从原始图像中减去噪声以获得去噪图像。

运行MEX代码生成

为此产生CUDA代码denoisenet_predict.m.入口点函数,为MEX目标创建GPU代码配置对象,并将目标语言设置为C ++。使用coder.deeplearningconfig功能创建一个CUDNN.深度学习配置对象并将其分配给DeeplearningConfigGPU代码配置对象的属性。跑过Codegen.命令指定[256,256]的输入大小。该值对应于您打算去代标的嘈杂图像的大小。

cfg = coder.gpuconfig('mex');cfg.targetlang =.'c ++';cfg.deeplearningconfig = coder.deeplearningconfig('cudnn');Codegen.-Config.CFG.denoisenet_predict.-  args.{ONE(256,256,'单')}-报告
代码生成成功:要查看报告,请打开('codegen / mex / denoisenet_predict / html / eport.mldatx')。

运行生成的mex.

DNCNN [1]在具有输入范围的输入图像上培训[0,1]。打电话给im2single.(图像处理工具箱)功能诺伊斯州重新归类从[0,255]到[0,1]的值。

称呼denoisenet_predict_predict.在重新定位的输入图像上。

denoisedi = denoisenet_predict_mex(im2single(noisyi));

查看去噪图像

图imshowpair(Noisyi,Denoisedi,'剪辑');标题('嘈杂的图像(左)和去噪图像(右)');

参考

[1]张,K。,W. Zuo,Y. Chen,D. Meng和L.张。“除了高斯丹麦者之外:对图像去噪的剩余学习深入的CNN。”IEEE在图像处理时的交易。卷。26,2017年2月7日,第3142-3155号。

也可以看看

功能

对象

相关话题