Added matcaffe_init to easy reuse of caffe initialization
authorSergio Guadarrama <sguada@gmail.com>
Mon, 31 Mar 2014 22:47:36 +0000 (15:47 -0700)
committerSergio Guadarrama <sguada@gmail.com>
Mon, 31 Mar 2014 22:47:36 +0000 (15:47 -0700)
matlab/caffe/matcaffe_batch.m
matlab/caffe/matcaffe_demo.m
matlab/caffe/matcaffe_init.m [new file with mode: 0644]

index 2e0e07f..386a022 100644 (file)
@@ -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;
 
index 3021bf0..a931f91 100644 (file)
@@ -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 (file)
index 0000000..4e4ef8b
--- /dev/null
@@ -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');