2017-04-26 15 views
0

MatCaffe에 문제가 있습니다. 내 자신의 데이터 집합 (2 분류, 0 또는 1)을 사용하여 Python에서 LeNet을 성공적으로 교육하고 Matlab에 배포하려고했습니다. 넷 아키텍처는 caffe/examples/mnist/lenet.prototxt에서 제공됩니다. 내가 입력 한 모든 입력 이미지는 항상 1로 돌아갑니다. (나는 훈련에서 긍정적이고 부정적인 이미지를 모두 사용하여 시도했습니다).MatCab을 사용하여 Matlab에서 LeNet을 배포하고 사용하십시오.

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을 반환 :

다음은 내 코드입니다. 파이썬으로 배포하려고 시도했는데 잘 작동합니다. 나는 입력을 사전 처리하는 방식으로 문제를 추측하고있다.

답변

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};