zwx8981/DBCNN

关于程序

Closed this issue · 4 comments

大神您好!
我在跑您的代码的过程中遇到了一个错误:
调用这一句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'
在网上也没找到可靠的答案,不知道您是否遇到这问题?

大神您好!
我在跑您的代码的过程中遇到了一个错误:
调用这一句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文件。

大神您好!
我在跑您的代码的过程中遇到了一个错误:
调用这一句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以外的格式

大神您好!
我在跑您的代码的过程中遇到了一个错误:
调用这一句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, 请确保路径都添加了

大神您好!
我在跑您的代码的过程中
遇到了一个错误:调用这一句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
请问您有遇到这种问题嘛,谢谢您!
已经十分感谢了