зеркало из https://github.com/microsoft/caffe.git
Added matcaffe_init to easy reuse of caffe initialization
This commit is contained in:
Родитель
3b7e148863
Коммит
38e3d7ff3a
|
@ -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');
|
Загрузка…
Ссылка в новой задаче