zwx8981 / DBCNN

Blind Image Quality Assessment Using A Deep Bilinear Convolutional Neural Network
MIT License
108 stars 21 forks source link

关于程序 #2

Closed badaodao closed 5 years ago

badaodao commented 5 years ago

大神您好! 我在跑您的代码的过程中遇到了一个错误: 调用这一句im = vl_imreadjpeg(images,'numThreads', opts(i).numThreads)时出现: could not read image '.../fastfading/img40.bmp' because 'libjpeg: Not a JPEG file: starts with 0x42 0x4d' 在网上也没找到可靠的答案,不知道您是否遇到这问题?

TangZheng95 commented 5 years ago

大神您好! 我在跑您的代码的过程中遇到了一个错误: 调用这一句im = vl_imreadjpeg(images,'numThreads', opts(i).numThreads)时出现: could not read image '.../fastfading/img40.bmp' because 'libjpeg: Not a JPEG file: starts with 0x42 0x4d' 在网上也没找到可靠的答案,不知道您是否遇到这问题?

您好,请问您跑通这个代码了吗?好像这个代码里面没有提供训练好的dbcnn模型,但是我自己训练发现缺少run_experiments_bcnn_train.m文件。

zwx8981 commented 5 years ago

大神您好! 我在跑您的代码的过程中遇到了一个错误: 调用这一句im = vl_imreadjpeg(images,'numThreads', opts(i).numThreads)时出现: could not read image '.../fastfading/img40.bmp' because 'libjpeg: Not a JPEG file: starts with 0x42 0x4d' 在网上也没找到可靠的答案,不知道您是否遇到这问题?

你是在linux下跑的吗?matconvnet的这个函数好像只有在windows下才支持除了jpeg以外的格式

zwx8981 commented 5 years ago

大神您好! 我在跑您的代码的过程中遇到了一个错误: 调用这一句im = vl_imreadjpeg(images,'numThreads', opts(i).numThreads)时出现: could not read image '.../fastfading/img40.bmp' because 'libjpeg: Not a JPEG file: starts with 0x42 0x4d' 在网上也没找到可靠的答案,不知道您是否遇到这问题?

您好,请问您跑通这个代码了吗?好像这个代码里面没有提供训练好的dbcnn模型,但是我自己训练发现缺少run_experiments_bcnn_train.m文件。

文件在BIQA_Project/dbcnn/BCNN/run_experiments_bcnn_train.m, 请确保路径都添加了

TangZheng95 commented 5 years ago

大神您好! 我在跑您的代码的过程中 遇到了一个错误:调用这一句im = vl_imreadjpeg(images,'numThreads',opts(i).numThreads)时出现: 无法读取图像'... / fastfading / img40.bmp'因为'libjpeg:不是JPEG文件:以0x42开头0x4d' 在网上也没找到可靠的答案,不知道你是否遇到这问题?

您好,请问您跑通这个代码了吗?好像这个代码里面没有提供训练好的dbcnn模型,但是我自己训练发现缺少run_experiments_bcnn_train.m文件。

文件在BIQA_Project / dbcnn / BCNN / run_experiments_bcnn_train.m,请确保路径都添加了

首先十分谢谢您的答复! 我是用CPU训练的,都已经调试好了,但训练结果到最后出现了问题:

...... Initialization: extracting bcnn feature of batch 96/98 Initialization: extracting bcnn feature of batch 97/98 Initialization: extracting bcnn feature of batch 98/98 layer 0 1 2 type input conv pdist name n/a convfc loss
support n/a 1 1
filt dim n/a 65536 n/a
num filts n/a 1 n/a
stride n/a 1 1
pad n/a 0 0
---------- ------- ------- -------
rf size n/a 1 1
rf offset n/a 1 1
rf stride n/a 1 1
---------- ------- ------- -------
data size NaNxNaN NaNxNaN NaNxNaN
data depth NaN 1 1
data num 8 8 8
---------- ------- ------- -------
data mem NaN NaN NaN
param mem n/a 256KB 0B

parameter memory|256KB (6.6e+04 parameters)| data memory| NaN (for batch size 8)|

train: epoch 01: 1/ 78:K>> res(i+1).x = vl_nnpdist(res(i).x, l.class, l.p, ... 'noRoot', l.noRoot, ... 'epsilon', l.epsilon, ... 'aggregate', l.aggregate, ... 'instanceWeights', l.instanceWeights) ; 错误使用 vl_nnconv DEROUTPUT dimensions are incompatible with X and FILTERS.

出错 vl_simplenn (line 403) [res(i).dzdx, dzdw{1}, dzdw{2}] = ...

出错 cnn_train>process_epoch (line 308) res = vl_simplenn(net, im, dzdy, res, ...

出错 cnn_train (line 128) [net,stats.train(epoch),prof] = process_epoch(net, state, opts, 'train') ;

出错 initializeNetworkTwoStreams (line 280) [netc, info] = cnn_train(netc, bcnndb, @getBatch_bcnn_fromdisk, opts.inittrain, ...

出错 imdb_bcnn_train_dag (line 70) net = initNetFn(imdb, encoderOpts, opts);

出错 run_experiments_bcnn_train (line 36) imdb_bcnn_train_dag(imdb, options);

出错 run_exp (line 65) [options, imdb] = run_experiments_bcnn_train(opts);

问题出现在: if doder res(n+1).dzdx = dzdy ; for i=n:-1:backPropLim l = net.layers{i} ; res(i).backwardTime = tic ; switch l.type

  case 'conv'
    [res(i).dzdx, dzdw{1}, dzdw{2}] = ...
      vl_nnconv(res(i).x, l.weights{1}, l.weights{2}, res(i+1).dzdx, ...
      'pad', l.pad, ...
      'stride', l.stride, ...
      l.opts{:}, ...
      cudnn{:}) ;

我知道是由于vl_nnconv函数中image stack和filter大小不匹配造成的,即res(i).x和l.weights{1}不匹配,我查了一下size(res(i).x) = 1x1x65536x8 而size(l.weights{1}) = 1x1x65536 但是我不知道如何修改l.weights 请问您有遇到这种问题嘛,谢谢您! 已经十分感谢了