From 38e3d7ff3a2ef747733ec2bc88b871460ba9194d Mon Sep 17 00:00:00 2001 From: Sergio Guadarrama Date: Mon, 31 Mar 2014 15:47:36 -0700 Subject: [PATCH] Added matcaffe_init to easy reuse of caffe initialization --- matlab/caffe/matcaffe_batch.m | 28 ++++----------------------- matlab/caffe/matcaffe_demo.m | 37 ++++++------------------------------ matlab/caffe/matcaffe_init.m | 44 +++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 54 insertions(+), 55 deletions(-) create mode 100644 matlab/caffe/matcaffe_init.m diff --git a/matlab/caffe/matcaffe_batch.m b/matlab/caffe/matcaffe_batch.m index 2e0e07f..386a022 100644 --- a/matlab/caffe/matcaffe_batch.m +++ b/matlab/caffe/matcaffe_batch.m @@ -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; diff --git a/matlab/caffe/matcaffe_demo.m b/matlab/caffe/matcaffe_demo.m index 3021bf0..a931f91 100644 --- a/matlab/caffe/matcaffe_demo.m +++ b/matlab/caffe/matcaffe_demo.m @@ -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; diff --git a/matlab/caffe/matcaffe_init.m b/matlab/caffe/matcaffe_init.m new file mode 100644 index 0000000..4e4ef8b --- /dev/null +++ b/matlab/caffe/matcaffe_init.m @@ -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'); -- 2.7.4