使用MatCaffe在Matlab上部署和使用LeNet

时间:2017-04-26 01:26:15

标签: matlab deep-learning caffe mnist matcaffe

我遇到了MatCaffe的问题。我在python中成功地使用我自己的数据集(2分类,0或1)训练LeNet,并尝试在Matlab上部署它。网络架构来自caffe / examples / mnist / lenet.prototxt。我输入网络的所有输入图像总是返回1.(我尝试使用训练中的正负图像)。

以下是我的代码:

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上部署它,它工作得很好。我猜测我预先处理输入的方式存在问题。

1 个答案:

答案 0 :(得分:0)

发现了这个问题。我忘了将图像与训练尺度相乘并转换宽度和高度,因为Matlab是1索引和列主要的,Matlab中通常的4个blob尺寸是[width,height,channels,num],而宽度是最快的尺寸。所以只需添加2行代码:

[d["id"] for d in loadData["menu"]["items"] if "label" in d]