论文阅读
https://blog.csdn.net/zbwgycm/article/details/82052003
git源代码:
https://github.com/GuoShi28/CBDNet
缺少Matconvnet
报错
未定义变量 “dagnn” 或类 “dagnn.DagNN.loadobj”。
解决:
下载matconvnet
http://www.vlfeat.org/matconvnet/
解压
在matlab中进入到该目录下
xxx\matconvnet\matconvnet-1.0-beta25\matlab
点开vl_compilenn.m
运行
警告: CL.EXE not found in PATH. Trying to guess
out of mex setup.
> In vl_compilenn>check_clpath (line 650)
In vl_compilenn (line 426)
用于 x64 的 Microsoft (R) C/C++ 优化编译器 19.00.23026 版
版权所有(C) Microsoft Corporation。保留所有权利。
用法: cl [ 选项... ] 文件名... [ /link 链接选项... ]
Location of cl.exe (C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\..\VC\bin\amd64) successfully added to your PATH.
使用 'Microsoft Visual C++ 2015 Professional' 编译。
MEX 已成功完成。
使用 'Microsoft Visual C++ 2015 Professional' 编译。
MEX 已成功完成。
使用 'Microsoft Visual C++ 2015 Professional' 编译。
MEX 已成功完成。
使用 'Microsoft Visual C++ 2015 Professional' 编译。
MEX 已成功完成。
使用 'Microsoft Visual C++ 2015 Professional' 编译。
MEX 已成功完成。
使用 'Microsoft Visual C++ 2015 Professional' 编译。
MEX 已成功完成。
使用 'Microsoft Visual C++ 2015 Professional' 编译。
MEX 已成功完成。
使用 'Microsoft Visual C++ 2015 Professional' 编译。
MEX 已成功完成。
使用 'Microsoft Visual C++ 2015 Professional' 编译。
MEX 已成功完成。
使用 'Microsoft Visual C++ 2015 Professional' 编译。
MEX 已成功完成。
使用 'Microsoft Visual C++ 2015 Professional' 编译。
MEX 已成功完成。
使用 'Microsoft Visual C++ 2015 Professional' 编译。
MEX 已成功完成。
使用 'Microsoft Visual C++ 2015 Professional' 编译。
MEX 已成功完成。
使用 'Microsoft Visual C++ 2015 Professional' 编译。
MEX 已成功完成。
使用 'Microsoft Visual C++ 2015 Professional' 编译。
MEX 已成功完成。
使用 'Microsoft Visual C++ 2015 Professional' 编译。
MEX 已成功完成。
使用 'Microsoft Visual C++ 2015 Professional' 编译。
MEX 已成功完成。
使用 'Microsoft Visual C++ 2015 Professional' 编译。
MEX 已成功完成。
使用 'Microsoft Visual C++ 2015 Professional' 编译。
MEX 已成功完成。
使用 'Microsoft Visual C++ 2015 Professional' 编译。
MEX 已成功完成。
使用 'Microsoft Visual C++ 2015 Professional' 编译。
MEX 已成功完成。
使用 'Microsoft Visual C++ 2015 Professional' 编译。
MEX 已成功完成。
使用 'Microsoft Visual C++ 2015 Professional' 编译。
MEX 已成功完成。
使用 'Microsoft Visual C++ 2015 Professional' 编译。
MEX 已成功完成。
使用 'Microsoft Visual C++ 2015 Professional' 编译。
MEX 已成功完成。
使用 'Microsoft Visual C++ 2015 Professional' 编译。
MEX 已成功完成。
使用 'Microsoft Visual C++ 2015 Professional' 编译。
MEX 已成功完成。
使用 'Microsoft Visual C++ 2015 Professional' 编译。
MEX 已成功完成。
使用 'Microsoft Visual C++ 2015 Professional (C)' 编译。
MEX 已成功完成。
使用 'Microsoft Visual C++ 2015 Professional (C)' 编译。
MEX 已成功完成。
使用 'Microsoft Visual C++ 2015 Professional (C)' 编译。
MEX 已成功完成。
使用 'Microsoft Visual C++ 2015 Professional (C)' 编译。
MEX 已成功完成。
使用 'Microsoft Visual C++ 2015 Professional (C)' 编译。
MEX 已成功完成。
使用 'Microsoft Visual C++ 2015 Professional (C)' 编译。
MEX 已成功完成。
使用 'Microsoft Visual C++ 2015 Professional (C)' 编译。
MEX 已成功完成。
使用 'Microsoft Visual C++ 2015 Professional (C)' 编译。
MEX 已成功完成。
使用 'Microsoft Visual C++ 2015 Professional (C)' 编译。
MEX 已成功完成。
使用 'Microsoft Visual C++ 2015 Professional (C)' 编译。
MEX 已成功完成。
使用 'Microsoft Visual C++ 2015 Professional (C)' 编译。
MEX 已成功完成。
并在代码头部加入
run H:\xxx\matconvnet\matconvnet-1.0-beta25/matlab/vl_setupnn.m
Error using vl_nnconv An input is not a numeric array(or GPU support not compiled).
解决方法:
运行 vl_compilenn(‘enableGpu’, true)
警告: Setting the 'MW_NVCC_PATH' environment
variable to 'C:\Program Files\NVIDIA GPU Computing
Toolkit\CUDA\v9.0\bin\nvcc'
> In vl_compilenn>activate_nvcc (line 752)
In vl_compilenn (line 296)
c:\program files\nvidia gpu computing toolkit\cuda\v9.0\include\crt\math_functions.h: warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
c:\program files\nvidia gpu computing toolkit\cuda\v9.0\include\crt\math_functions.h(838): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
c:\program files\nvidia gpu computing toolkit\cuda\v9.0\include\crt\math_functions.h(1772): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
c:\program files\nvidia gpu computing toolkit\cuda\v9.0\include\crt\math_functions.h(2628): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
c:\program files\nvidia gpu computing toolkit\cuda\v9.0\include\crt\math_functions.h(3477): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
c:\program files\nvidia gpu computing toolkit\cuda\v9.0\include\crt\math_functions.h(4417): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
c:\program files\nvidia gpu computing toolkit\cuda\v9.0\include\crt\math_functions.h(5319): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
c:\program files\nvidia gpu computing toolkit\cuda\v9.0\include\crt\math_functions.h(6229): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
c:\program files\nvidia gpu computing toolkit\cuda\v9.0\include\crt\math_functions.h(7104): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
c:\program files\nvidia gpu computing toolkit\cuda\v9.0\include\crt\math_functions.h(7914): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
c:\program files\nvidia gpu computing toolkit\cuda\v9.0\include\crt/device_functions.h: warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
c:\program files\nvidia gpu computing toolkit\cuda\v9.0\include\crt/device_functions.h(776): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
c:\program files\nvidia gpu computing toolkit\cuda\v9.0\include\crt/device_functions.h(1636): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
c:\program files\nvidia gpu computing toolkit\cuda\v9.0\include\crt\device_double_functions.h: warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
c:\program files\nvidia gpu computing toolkit\cuda\v9.0\include\sm_20_intrinsics.h: warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
c:\program files\nvidia gpu computing toolkit\cuda\v9.0\include\sm_20_intrinsics.h(925): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
c:\program files\nvidia gpu computing toolkit\cuda\v9.0\include\crt\math_functions.h: warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
c:\program files\nvidia gpu computing toolkit\cuda\v9.0\include\crt\math_functions.h(838): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
c:\program files\nvidia gpu computing toolkit\cuda\v9.0\include\crt\math_functions.h(1772): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
c:\program files\nvidia gpu computing toolkit\cuda\v9.0\include\crt\math_functions.h(2628): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
c:\program files\nvidia gpu computing toolkit\cuda\v9.0\include\crt\math_functions.h(3477): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
c:\program files\nvidia gpu computing toolkit\cuda\v9.0\include\crt\math_functions.h(4417): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
c:\program files\nvidia gpu computing toolkit\cuda\v9.0\include\crt\math_functions.h(5319): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
c:\program files\nvidia gpu computing toolkit\cuda\v9.0\include\crt\math_functions.h(6229): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
c:\program files\nvidia gpu computing toolkit\cuda\v9.0\include\crt\math_functions.h(7104): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
c:\program files\nvidia gpu computing toolkit\cuda\v9.0\include\crt\math_functions.h(7914): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
c:\program files\nvidia gpu computing toolkit\cuda\v9.0\include\crt/device_functions.h: warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
c:\program files\nvidia gpu computing toolkit\cuda\v9.0\include\crt/device_functions.h(776): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
c:\program files\nvidia gpu computing toolkit\cuda\v9.0\include\crt/device_functions.h(1636): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
c:\program files\nvidia gpu computing toolkit\cuda\v9.0\include\crt\device_double_functions.h: warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
c:\program files\nvidia gpu computing toolkit\cuda\v9.0\include\sm_20_intrinsics.h: warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
c:\program files\nvidia gpu computing toolkit\cuda\v9.0\include\sm_20_intrinsics.h(925): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
nvcc warning : The -std=c++11 flag is not supported with the configured host compiler. Flag will be ignored.
data.cu
c:\program files\nvidia gpu computing toolkit\cuda\v9.0\include\crt\math_functions.h: warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
c:\program files\nvidia gpu computing toolkit\cuda\v9.0\include\crt\math_functions.h(838): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
c:\program files\nvidia gpu computing toolkit\cuda\v9.0\include\crt\math_functions.h(1772): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
c:\program files\nvidia gpu computing toolkit\cuda\v9.0\include\crt\math_functions.h(2628): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
c:\program files\nvidia gpu computing toolkit\cuda\v9.0\include\crt\math_functions.h(3477): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
c:\program files\nvidia gpu computing toolkit\cuda\v9.0\include\crt\math_functions.h(4417): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
c:\program files\nvidia gpu computing toolkit\cuda\v9.0\include\crt\math_functions.h(5319): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
c:\program files\nvidia gpu computing toolkit\cuda\v9.0\include\crt\math_functions.h(6229): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
c:\program files\nvidia gpu computing toolkit\cuda\v9.0\include\crt\math_functions.h(7104): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
c:\program files\nvidia gpu computing toolkit\cuda\v9.0\include\crt\math_functions.h(7914): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
c:\program files\nvidia gpu computing toolkit\cuda\v9.0\include\crt\math_functions.h: warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
c:\program files\nvidia gpu computing toolkit\cuda\v9.0\include\crt\math_functions.h(838): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
c:\program files\nvidia gpu computing toolkit\cuda\v9.0\include\crt\math_functions.h(1772): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
c:\program files\nvidia gpu computing toolkit\cuda\v9.0\include\crt\math_functions.h(2628): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
c:\program files\nvidia gpu computing toolkit\cuda\v9.0\include\crt\math_functions.h(3477): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
c:\program files\nvidia gpu computing toolkit\cuda\v9.0\include\crt\math_functions.h(4417): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
c:\program files\nvidia gpu computing toolkit\cuda\v9.0\include\crt\math_functions.h(5319): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
c:\program files\nvidia gpu computing toolkit\cuda\v9.0\include\crt\math_functions.h(6229): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
c:\program files\nvidia gpu computing toolkit\cuda\v9.0\include\crt\math_functions.h(7104): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
c:\program files\nvidia gpu computing toolkit\cuda\v9.0\include\crt\math_functions.h(7914): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
c:\program files\nvidia gpu computing toolkit\cuda\v9.0\include\crt/device_functions.h: warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
c:\program files\nvidia gpu computing toolkit\cuda\v9.0\include\crt/device_functions.h(776): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
c:\program files\nvidia gpu computing toolkit\cuda\v9.0\include\crt/device_functions.h(1636): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
c:\program files\nvidia gpu computing toolkit\cuda\v9.0\include\crt\device_double_functions.h: warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
c:\program files\nvidia gpu computing toolkit\cuda\v9.0\include\sm_20_intrinsics.h: warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
c:\program files\nvidia gpu computing toolkit\cuda\v9.0\include\sm_20_intrinsics.h(925): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
c:\program files\nvidia gpu computing toolkit\cuda\v9.0\include\crt\math_functions.h: warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
c:\program files\nvidia gpu computing toolkit\cuda\v9.0\include\crt\math_functions.h(838): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
c:\program files\nvidia gpu computing toolkit\cuda\v9.0\include\crt\math_functions.h(1772): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
c:\program files\nvidia gpu computing toolkit\cuda\v9.0\include\crt\math_functions.h(2628): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
c:\program files\nvidia gpu computing toolkit\cuda\v9.0\include\crt\math_functions.h(3477): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失 使用 'Microsoft Visual C++ 2015 Professional (C)' 编译。
MEX 已成功完成。
使用 'Microsoft Visual C++ 2015 Professional (C)' 编译。
MEX 已成功完成。
使用 'Microsoft Visual C++ 2015 Professional (C)' 编译。
MEX 已成功完成。
使用 'Microsoft Visual C++ 2015 Professional (C)' 编译。
MEX 已成功完成。
使用 'Microsoft Visual C++ 2015 Professional (C)' 编译。
MEX 已成功完成。
使用 'Microsoft Visual C++ 2015 Professional (C)' 编译。
MEX 已成功完成。
使用 'Microsoft Visual C++ 2015 Professional (C)' 编译。
MEX 已成功完成。
使用 'Microsoft Visual C++ 2015 Professional (C)' 编译。
MEX 已成功完成。
使用 'Microsoft Visual C++ 2015 Professional (C)' 编译。
MEX 已成功完成。
使用 'Microsoft Visual C++ 2015 Professional (C)' 编译。
MEX 已成功完成。
使用 'Microsoft Visual C++ 2015 Professional (C)' 编译。
MEX 已成功完成。
使用 'Microsoft Visual C++ 2015 Professional (C)' 编译。
MEX 已成功完成。
测试:
run H:\xxx\CBDNet-master\matconvnet\matconvnet-1.0-beta25/matlab/vl_setupnn.m
format compact;
addpath(fullfile('utils'));
folderTest = '.\testsets\';
imageSets = {'DND_patches','Nam_patches','NC12'}; % testing datasets
setTestCur = imageSets{3}; % current testing dataset
showResult = 1;
useGPU = 1; % CPU or GPU. For single-threaded (ST) CPU computation, use "matlab -singleCompThread" to start matlab.
pauseTime = 0;
%%% for DND dataset, using 'CBDNet.mat' model,
%%% for Nam dataset and other noisy images with JPEG format, using
%%% 'CBDNet_JPEG.mat' model for considering JPEG compression
if strcmp(setTestCur, 'DND_patches') || strcmp(setTestCur, 'NC12')
load('.\models\CBDNet.mat');
else
load('.\models\CBDNet_JPEG.mat');
end
net = dagnn.DagNN.loadobj(net) ;
net.removeLayer('objective1') ;
net.removeLayer('objective2') ;
net.removeLayer('objective_TV') ;
denoiseOutput = net.getVarIndex('prediction') ;
net.vars(net.getVarIndex('prediction')).precious = 1 ;
net.mode = 'test';
if useGPU
net.move('gpu');
end
% read images
ext = {'*.jpg','*.png','*.bmp'};
filePaths = [];
for i = 1 : length(ext)
filePaths = cat(1,filePaths, dir(fullfile(folderTest,setTestCur,ext{i})));
end
for i = 1:length(filePaths)
%% read images
input = imread(fullfile(folderTest,setTestCur,filePaths(i).name));
[w,h,~]=size(input);
[~,nameCur,extCur] = fileparts(filePaths(i).name);
input = im2double(input);
if mod(w,4) ~= 0
input = cat(1,input, input([w:-1:(w-(4-mod(w,4))+1)],:,:)) ;
end
if mod(h,4)~=0
input = cat(2,input, input(:,[h:-1:(h-(4-mod(h,4))+1)],:)) ;
end
input = single(input);
%tic;
if useGPU
input = gpuArray(input);
end
net.eval({'input',input}) ;
output = gather(squeeze(gather(net.vars(denoiseOutput).value)));
%%%
if mod(w,4) ~= 0
input = input(1:w,:,:) ;
output = output(1:w,:,:) ;
end
if mod(h,4)~=0
input = input(:,1:h,:) ;
output = output(:,1:h,:) ;
end
if useGPU
output = gather(output);
input = gather(input);
end
if showResult
imshow(cat(2,im2uint8(input),im2uint8(output)),'InitialMagnification', 'fit');
drawnow;
pause(pauseTime)
end
end