2017-05-06 4 views
1

FCNネットを修正し、2つのImageData入力パラメータとしてレイヤーを作成し、ネットが出力として画像を生成することを期待します。 はこちらtrain_val.prototxtdeploy.prototxtcaffe:チェックに失敗しました:target_blobs.size()== source_layer.blobs_size()(2対1)レイヤーconv1の互換性のないブロブ数

原画とラベルはともにグレイスケールの写真であり、サイズは224×224です。 私はcaffemodelを訓練し、セグメンテーションを行うためにcaffemodelを使用する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') 

方法:ここ

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ファイルですこの問題を解決します?

答えて

1

バイアス期限はconv1です。 train.prototxtでは、falseに設定されています。しかし、あなたのdeploy.prototxtではデフォルトではそうではありません。これが、体重ローダーが2つのブロブを探している理由です。

+0

ここでは別のエラーです: 'F0508 03:20:57.777287 22515 base_conv_layer.cpp:189]チェック失敗:bottom [0] - > num_axes()== first_spatial_axis + num_spatial_axes_(3対4)bottom num_axesは変更できません。 'それはinput_paramの淡色が1,1,224,224になるはずなので、私はそれを変更しますが、別のエラーに遭遇するからです:' 'conv1 'の層からparam 0の重みをコピーできません。形状の不一致。ソースパラメータの形状は64 3 7 7(9408)です。ターゲット・パラメータの形状は64 1 7 7(3136)です。保存されたネットからコピーするのではなく、このレイヤのパラメータを最初から学習するには、レイヤの名前を変更してこの問題を解決してください。 – StalkerMuse

+0

btw私の列車とテストデータは両方とも8ビットグレースケールの写真だと確信しています。 – StalkerMuse

+0

この2番目の問題はチャネル数( 'rgb vs gray ')です。あなたの列車とテストはどちらも同じ数のチャンネルを持つ必要があります。必要に応じて適切な変換を行います。 – lnman

関連する問題