Added matcaffe_init to easy reuse of caffe initialization

This commit is contained in:
Sergio Guadarrama 2014-03-31 15:47:36 -07:00
Родитель 3b7e148863
Коммит 38e3d7ff3a
3 изменённых файлов: 54 добавлений и 55 удалений

Просмотреть файл

@ -17,7 +17,7 @@ function [scores,list_im] = matcaffe_batch(list_im, use_gpu)
%
% Usage:
% scores = matcaffe_batch({'peppers.png','onion.png'}, 0);
% scores = matcaffe_batch('list_images.txt', 0);
% scores = matcaffe_batch('list_images.txt', 1);
if ischar(list_im)
%Assume it is a file contaning the list of images
filename = list_im;
@ -30,33 +30,13 @@ if mod(length(list_im),batch_size)
warning(['Assuming batches of ' num2str(batch_size) ' images rest will be filled with zeros'])
end
if caffe('is_initialized') == 0
model_def_file = '../../examples/imagenet_deploy.prototxt';
model_file = '../../models/alexnet_train_iter_470000';
if exist(model_file, 'file') == 0
% NOTE: you'll have to get the pre-trained ILSVRC network
error('You need a network model file');
end
if ~exist(model_def_file,'file')
% NOTE: you'll have to get network definition
error('You need the network prototxt definition');
end
caffe('init', model_def_file, model_file);
end
% init caffe network (spews logging info)
% set to use GPU or CPU
if exist('use_gpu', 'var') && use_gpu
caffe('set_mode_gpu');
if exist('use_gpu', 'var')
matcaffe_init(use_gpu);
else
caffe('set_mode_cpu');
matcaffe_init();
end
% put into test mode
caffe('set_phase_test');
d = load('ilsvrc_2012_mean');
IMAGE_MEAN = d.image_mean;

Просмотреть файл

@ -45,44 +45,19 @@ function [scores, maxlabel] = matcaffe_demo(im, use_gpu)
% The actual forward function. It takes in a cell array of 4-D arrays as
% input and outputs a cell array.
% init caffe network (spews logging info)
% init caffe network (spews logging info)
if exist('use_gpu', 'var')
matcaffe_init(use_gpu);
else
matcaffe_init();
end
if nargin < 1
% For demo purposes we will use the peppers image
im = imread('peppers.png');
end
if caffe('is_initialized') == 0
model_def_file = '../../examples/imagenet/imagenet_deploy.prototxt';
model_file = '../../examples/imagenet/caffe_reference_imagenet_model';
if exist(model_file, 'file') == 0
% NOTE: you'll have to get the pre-trained ILSVRC network
error('You need a network model file');
end
if ~exist(model_def_file,'file')
% NOTE: you'll have to get network definition
error('You need the network prototxt definition');
end
caffe('init', model_def_file, model_file)
end
fprintf('Done with init\n');
% set to use GPU or CPU
if exist('use_gpu', 'var') && use_gpu
fprintf('Using GPU Mode\n');
caffe('set_mode_gpu');
else
fprintf('Using CPU Mode\n');
caffe('set_mode_cpu');
end
fprintf('Done with set_mode\n');
% put into test mode
caffe('set_phase_test');
fprintf('Done with set_phase_test\n');
% prepare oversampled input
% input_data is Height x Width x Channel x Num
tic;

Просмотреть файл

@ -0,0 +1,44 @@
function matcaffe_init(use_gpu, model_def_file, model_file)
% matcaffe_init(model_def_file, model_file, use_gpu)
% Initilize matcaffe wrapper
if nargin < 1
% By default use CPU
use_gpu = 0;
end
if nargin < 2 || isempty(model_def_file)
% By default use imagenet_deploy
model_def_file = '../../examples/imagenet/imagenet_deploy.prototxt';
end
if nargin < 3 || isempty(model_file)
% By default use caffe reference model
model_file = '../../examples/imagenet/caffe_reference_imagenet_model';
end
if caffe('is_initialized') == 0
if exist(model_file, 'file') == 0
% NOTE: you'll have to get the pre-trained ILSVRC network
error('You need a network model file');
end
if ~exist(model_def_file,'file')
% NOTE: you'll have to get network definition
error('You need the network prototxt definition');
end
caffe('init', model_def_file, model_file)
end
fprintf('Done with init\n');
% set to use GPU or CPU
if use_gpu
fprintf('Using GPU Mode\n');
caffe('set_mode_gpu');
else
fprintf('Using CPU Mode\n');
caffe('set_mode_cpu');
end
fprintf('Done with set_mode\n');
% put into test mode
caffe('set_phase_test');
fprintf('Done with set_phase_test\n');