2017-05-06 526 views
1

我修改了FCN網絡並設計了一個新的網絡,其中我使用了兩個ImageData圖層作爲輸入參數,並希望網絡產生一個圖片作爲輸出。 這裏是train_val.prototxtdeploy.prototxtcaffe:檢查失敗:target_blobs.size()== source_layer.blobs_size()(2對1)圖層conv1的斑點數不兼容

原始圖片和標籤都是灰度圖片和尺寸是224 * 224。 我已經訓練了caffemodel和使用infer.py使用caffemodel做了分割,但滿足錯誤:

F0505 06:15:08.072602 30713 net.cpp:767] Check failed: target_blobs.size() == source_layer.blobs_size() (2 vs. 1) Incompatible number of blobs for layer conv1 

這裏是infer.py文件:

import numpy as np 
from PIL import Image 
caffe_root = '/home/zhaimo/' 
import sys 
sys.path.insert(0, caffe_root + 'caffe-master/python') 

import caffe 
im = Image.open('/home/zhaimo/fcn-master/data/vessel/test/13.png') 
in_ = np.array(im, dtype=np.float32) 
#in_ = in_[:,:,::-1] 
#in_ -= np.array((104.00698793,116.66876762,122.67891434)) 
#in_ = in_.transpose((2,0,1)) 


net = caffe.Net('/home/zhaimo/fcn-master/mo/deploy.prototxt', '/home/zhaimo/fcn-master/mo/snapshot/train/_iter_200000.caffemodel', caffe.TEST) 
net.blobs['data'].reshape(1, *in_.shape) 
net.blobs['data'].data[...] = in_ 
net.forward() 
out = net.blobs['score'].data[0].argmax(axis=0) 

plt.axis('off') 
plt.savefig('/home/zhaimo/fcn-master/mo/result/13.png') 

如何解決這個問題?

回答

1

問題出在conv1的偏差項。在您的train.prototxt中,它被設置爲false。但在deploy.prototxt這不是,默認情況下是這樣。這就是爲什麼加載器正在尋找兩個斑點。

+0

這是另一個錯誤:'F0508 03:20:57.777287 22515 base_conv_layer.cpp:189]檢查失敗:bottom [0] - > num_axes()== first_spatial_axis + num_spatial_axes_(3與4)底部num_axes可能不會更改。 '我猜這是因爲input_param中的暗淡應該是1,1,224,224,所以我改變了它,但遇到了另一個錯誤:'不能從圖層'conv1'複製參數0的權重;形狀不匹配。源參數形狀爲64 3 7 7(9408);目標參數形狀爲64 1 7 7(3136)。要從頭開始學習這個圖層的參數,而不是從保存的網絡上覆制,請重命名圖層「如何解決這個問題? – StalkerMuse

+0

btw我相信我的火車和測試數據都是8位灰度圖片。 – StalkerMuse

+0

第二個問題是通道數量('rgb vs gray')。你的火車和測試都應該有相同數量的頻道。所以根據你的需要做適當的轉換。 – lnman