2017-04-26 14 views
0

MatCaffeに問題があります。私はPythonで自分のデータセット(2分類、0または1)を使ってLeNetを訓練し、今Matlabにそれを配備しようとしています。ネットアーキテクチャはcaffe/examples/mnist/lenet.prototxtにあります。ネットに入力されたすべての入力画像は常に1になります(トレーニングでは正と負の両方の画像を使用してみました)。以下はMatCabeを使用してLeNetをMatlabにデプロイして使用する

私のコードです:

deployNet = 'lenet_deploy.prototxt'; 
caffeModel = 'weight.caffemodel'; 
caffe.set_mode_cpu(); 
net = caffe.Net(deployNet, caffeModel, 'test'); 
net.blobs('data').reshape([28 28 1 1]); 
net.reshape(); 

patch_data = imread('cropped.jpg'); % already in greyscale 
patch_data = imresize(patch_data, [28 28],'bilinear'); 
imshow(patch_data) 

input_data = {patch_data}; 
scores = net.forward(input_data); 

highest = max(scores{1}); 
disp(i); 
disp(highest); 

最高はあっても、常に負のイメージのために1を返します。私はそれをPythonにデプロイしようとしました。私は入力を前処理する方法で問題を推測しています。

答えて

0

問題が見つかりました。 Matlabは1インデックスと列メジャーなので、イメージをトレーニングスケールに乗算して幅と高さを移すのを忘れてしまいました。Matlabの通常の4つのBLOBディメンションは[幅、高さ、チャンネル、数]で、幅は最速です寸法。コードを2行追加してください:

deployNet = 'lenet_deploy.prototxt'; 
caffeModel = 'weight.caffemodel'; 
caffe.set_mode_cpu(); 
net = caffe.Net(deployNet, caffeModel, 'test'); 
net.blobs('data').reshape([28 28 1 1]); 
net.reshape(); 

patch = imread('cropped.jpg'); % already in greyscale 
patch = single(patch) * 0.00390625; % multiply with scale 
patch = permute(patch, [2,1,3]); %permute width and height 
input_data = {patch}; 
scores = net.forward(input_data); 

highest = scores{1}; 
関連する問題