このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。
この例では,ノイズ除去畳み込みニューラルネットワーク(DnCNN[1])を使用して,MATLAB®コードからCUDA®墨西哥人を生成し,グレースケールイメージのノイズを除去する方法を説明します。ノイズ除去ネットワークを使用して,ノイズを含むイメージ内のノイズを推定し,それらのノイズを除去してノイズのないイメージを取得できます。
必須
この例では,CUDA墨西哥人を生成します。以下のサードパーティ要件が適用されます。
CUDA®対応NVIDIA GPU®および互換性のあるドライバー。
オプション
スタティックライブラリ,ダイナミックライブラリ,または実行可能ファイルなどの墨西哥人以外のビルドについて,この例では以下の要件も適用されます。
英伟达ツールキット。
英伟达cuDNNライブラリ。
コンパイラおよびライブラリの環境変数。詳細は,サードパーティハードウェア(GPU编码器)と前提条件となる製品の設定(GPU编码器)を参照してください。
関数Coder.CheckGPuInstall.
(GPU编码器)を使用して,この例を実行するのに必要なコンパイラおよびライブラリが正しく設定されていることを検証します。
envCfg = coder.gpuEnvConfig ('主持人');envCfg。DeepLibTarget =“cudnn”;envcfg.deepcodegen = 1;Envcfg.quiet = 1;Coder.CheckGpuInstall(Envcfg);
ノイズを含むグレースケールイメージをワークスペースに読み込んでそのイメージを表示します。
noisyI = imread (“noisy_cameraman.png”);图imshow (noisyI);标题(“嘈杂的图像”);
補助関数getDenoisingNetworkを呼び出して,事前学習済みのイメージノイズ除去深層ニューラルネットワークを取得します。
网= getDenoisingnetwork;
関数getDenoisingNetwork
は,不明なレベルの加法性ホワイトガウス(awgn)ををするするため使できる习习のdncnn [1]を返します。つまり,dncnn [1]は,ノイズノイズを含むイメージノイズ隠れているイメージイメージつまり差ているイメージイメージつまり差て计算し
このネットワークには,畳み込み層,バッチ正規化層,回帰出力層など,59個の層が含まれています。深層学習ネットワークアーキテクチャを対話的に可視化して表示するには,関数analyzeNetwork
を使用します。
analyzeNetwork(净);
denoisenet_predict.
エントリポイント関数denoisenet_predict.は,ノイズを含むイメージ入力を受け取り,事前学習済みのノイズ除去ネットワークを使用してノイズ除去後のイメージを返します。
この関数は,getDenoisingNetworkによってによって返されたたネットワークオブジェクトを永続mynetに読み込み,それ以降の予测のではこの永続オブジェクトをを利用します。
类型denoisenet_predict.
function I = denoisenet_predict(in) %#codegen % Copyright 2018-2019 The MathWorks, Inc. persistent mynet;如果isempty(mynet) mynet = coder。loadDeepLearningNetwork(“getDenoisingNetwork”、“DnCNN”);激活方法从最后一层提取输出。% 'OutputAs' 'channels'名称-值对参数用于在输入尺寸大于或等于网络的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.
を上回るイメージイメージの活性ををしし
激活
メソッドは,事前学習済みのノイズ除去イメージを使用して,入力イメージ内のノイズの推定を返します。
ノイズが推定されたら,元のイメージからノイズを減算し,ノイズ除去後のイメージを取得します。
エントリポイント関数denoisenet_predict.mのCUDAコードを生成するには,墨西哥人ターゲットのGPUコード構成オブジェクトを作成し,ターゲット言語をc++に設定します。関数coder.deeplearningconfig
(GPU编码器)を使用してCuDNN
深層学習構成オブジェクトを作成し,それをGPUコード構成オブジェクトのDeepLearningConfig
プロパティに割り当てます。入力サイズを[256256]に指定してcodegen
コマンドを実行します。この値は,ノイズ除去対象のノイズを含むイメージのサイズに対応します。
cfg = coder.gpuConfig (墨西哥人的);cfg。TargetLang =“c++”;cfg。DeepLearningConfig =编码器。DeepLearningConfig (“cudnn”);codegen配置cfgdenoisenet_predict.arg游戏{(256256年,“单”)}报告
代码生成成功:要查看报告,打开('codegen/mex/denoisenet_predict/html/report.mldatx')。
DnCNN[1]は入力範囲が[0,1]の入力イメージについて学習されています。noisyI
に対して関数im2singleを呼び出して,値を[0255]から[0,1]に再スケーリングします。
再スケーリングした入力イメージに対してdenoisenet_predict_predict
ををます。
denoisedI = denoisenet_predict_mex (im2single (noisyI));
图imshowpair (noisyI denoisedI,“蒙太奇”);标题(“噪声图像(左)和去噪图像(右)”);
(1)张凯,左伟,陈勇,张丹。超越高斯去噪:深度CNN图像去噪的残差学习IEEE图像处理汇刊。Vol. 26, Number 7, february 2017, pp. 3142-3155。