【caffe学习笔记之4】利用MATLAB接口运行cifar数据集
来源:互联网 发布:男士发簪 淘宝 编辑:程序博客网 时间:2024/05/16 07:21
【前期准备工作】
参考上篇帖子:http://write.blog.csdn.net/postedit/53964874
1. 确保模型训练成功,生成模型文件:cifar10_quick_iter_4000.caffemodel及均值文件:mean.binaryproto。注意,此处一定是生成caffemodel格式的模型文件,而非.h5模型文件,否则会导致Matlab运行崩溃。如何生成caffemodel文件请参考上篇帖子。
也可以利用Matlab生成cifar10_quick_iter_4000.caffemodel,方法是进入caffe根目录,例如我的电脑上为D:\caffe-master\caffe-master,然后在matlab中执行以下命令,即可对模型进行训练:
solver = caffe.Solver('./examples/cifar10/cifar10_quick_solver.prototxt');solver.solve()
2. 在caffe-master\matlab路径下新建cifar文件夹用于案例调试
3. 拷贝classification_demo.m文件到cifar文件夹下,并更名为classification_cifar.m
【基于mean.binaryproto文件生成.mat 文件】
在matlab command line中输入以下命令,对mean.binaryproto文件进行转换:
mean_file = 'D:\caffe-master\caffe-master\examples\cifar10\test\mean.binaryproto';image_mean = caffe_('read_mean', mean_file);save 'D:\caffe-master\caffe-master\matlab\cifar\image_mean.mat' image_mean于是在matlab/cifar文件夹下生成了image_mean.mat文件
【对classification_cifar.m文件进行修改】
1. 修改dir路径、model路径和weight路径:
2. 修改prepare.image()函数
修改后的classification_cifar.m文件代码:
function [scores, maxlabel] = classification_cifar(im, use_gpu)% Add caffe/matlab to you Matlab search PATH to use matcaffeif exist('../+caffe', 'dir') addpath('..');else error('Please run this demo from caffe/matlab/demo');end% Set caffe modeif exist('use_gpu', 'var') && use_gpu caffe.set_mode_gpu(); gpu_id = 0; % we will use the first gpu in this demo caffe.set_device(gpu_id);else caffe.set_mode_cpu();end% Initialize the network using BVLC CaffeNet for image classification% Weights (parameter) file needs to be downloaded from Model Zoo.model_dir = '../../examples/cifar10/';net_model = [model_dir 'cifar10_quick.prototxt'];net_weights = [model_dir 'cifar10_quick_iter_4000.caffemodel'];phase = 'test'; % run with phase test (so that dropout isn't applied)if ~exist(net_weights, 'file') error('Please download CaffeNet from Model Zoo before you run this demo');end% Initialize a networknet = caffe.Net(net_model, net_weights, phase);if nargin < 1 % For demo purposes we will use the cat image fprintf('using caffe/examples/images/cat.jpg as input image\n'); im = imread('../../examples/images/cat.jpg');end% prepare oversampled input% input_data is Height x Width x Channel x Numtic;input_data = {prepare_image(im)};toc;% do forward pass to get scores% scores are now Channels x Num, where Channels == 1000tic;% The net forward function. It takes in a cell array of N-D arrays% (where N == 4 here) containing data of input blob(s) and outputs a cell% array containing data from output blob(s)scores = net.forward(input_data);toc;scores = scores{1};scores = mean(scores, 2); % take average scores over 10 crops[~, maxlabel] = max(scores);% call caffe.reset_all() to reset caffecaffe.reset_all();% ------------------------------------------------------------------------function im_data = prepare_image(im)% ------------------------------------------------------------------------% caffe/matlab/+caffe/imagenet/ilsvrc_2012_mean.mat contains mean_data that% is already in W x H x C with BGR channelsd = load('D:\caffe-master\caffe-master\matlab\cifar\image_mean.mat');mean_data = d.mean_data;IMAGE_DIM = 32;% Convert an image returned by Matlab's imread to im_data in caffe's data% format: W x H x C with BGR channelsim_data = im(:, :, [3, 2, 1]); % permute channels from RGB to BGRim_data = permute(im_data, [2, 1, 3]); % flip width and heightim_data = single(im_data); % convert from uint8 to singleim_data = imresize(im_data, [IMAGE_DIM IMAGE_DIM], 'bilinear'); % resize im_dataim_data = im_data - mean_data; % subtract mean_data (already in W x H x C, BGR)
【模型测试】
编写test.m文件,用于模型测试,test.m文件代码:
clear;clc im = imread('D:\caffe-master\caffe-master\examples\images\cat.jpg');[scores, maxlabel] = classification_cifar(im,0)index = importdata('synset_words.txt');name = index(maxlabel);figure;imshow(im);str=strcat('分类结果:',name,' 得分:',num2str(max(scores)));title(str);
使用上述命令完成模型测试,并对猫做出了正确分类:
【文件下载】
上述文件夹中的4个文件:classification.m、test.m、image_mean.mat、synset_words.txt打包下载地址:
点击打开链接
训练的cifar10_quick_iter_4000.caffemodel文件下载地址:
点击打开链接
- 【caffe学习笔记之4】利用MATLAB接口运行cifar数据集
- 【caffe学习笔记之3】cifar10数据集简介及win10+caffe环境下运行cifar实例
- 利用caffe训练cifar之训练数据集合生成leveldb
- caffe学习笔记----4-matlab接口总结
- Windows Caffe 学习笔记 CIFAR-10数据的格式转换
- Windows Caffe 学习笔记(一)训练和测试CIFAR-10数据集
- caffe学习(二) CIFAR-10数据集上训练
- 深度学习caffe实战笔记(13)利用MATLAB可视化mnist数据集
- caffe学习笔记6-matlab接口总结
- caffe(4) 运行实例cifar
- 深度学习之caffe Matlab接口
- 【学习笔记】机器学习之用TensorFlow cnn 测试CIFAR-10数据集
- Ubuntu+caffe训练cifar-10数据集
- 【caffe学习笔记之6】caffe-matlab/python训练LeNet模型并应用于mnist数据集(1)
- 【caffe学习笔记之7】caffe-matlab/python训练LeNet模型并应用于mnist数据集(2)
- caffe示例实现之1在CIFAR-10数据集上训练与测试Caffe
- Windows Caffe 学习笔记(零)CIFAR-10数据的格式转换
- Caffe学习-CIFAR-10
- 原来是它,发现ubuntu一年的秘密
- 【Git官方文档翻译】1. 新手入门
- java泛型
- MongDB在linux服务端配置安装以及数据备份
- HTML+CSS学习笔记二
- 【caffe学习笔记之4】利用MATLAB接口运行cifar数据集
- maven配置文件引入jdk1.8和阿里云仓库
- 线性表顺序存储结构小结
- android studio开发(android res和asset等特殊文件夹 )
- CSS学习笔记:@font-face
- MATLAB 中有哪些命令,让人相见恨晚?
- webpack前端代码优化插件
- Netty权威指南 第2版学习笔记3——Netty NIO开发指南
- 读书笔记之《Windows内核原理与实现》