https://github.com/bartoszzielinski/deep-fbanks
Raw File
Tip revision: 7b91f2919d63064cad53cf733f334d9de5c08bc9 authored by Bartosz ZieliƄski on 22 January 2018, 15:40:09 UTC
Why should I trust you analysis
Tip revision: 7b91f29
os_setup.m
function [opts, imdb] = os_setup(varargin)

global is_iasonas
if (exist('is_iasonas', 'var') ||isempty(is_iasonas) || ~is_iasonas)
    setup ;
end

opts.transf = {};
opts.seed = 1 ;
opts.batchSize = 128 ;
opts.useGpu = true ;
opts.regionBorder = 0.05 ;
opts.numDCNNWords = 64 ;
opts.numDSIFTWords = 256 ;
opts.numSamplesPerWord = 1000 ;
opts.printDatasetInfo = false ;
opts.excludeDifficult = true ;
opts.encoders = {struct('type', 'rcnn', 'opts', {})} ;
opts.dataset = 'os' ;
if ismac
  opts.dataDir = '../../BigData/bacteria/';
else
  opts.dataDir = '/media/bz/C4048A7D048A71EA/BigData/bacteria/';
end
opts.osDir = [opts.dataDir, 'data/os'] ;
opts.fmdDir = [opts.dataDir, 'data/fmd'] ;
opts.dtdDir = [opts.dataDir, 'data/dtd'] ;
opts.kthDir = [opts.dataDir, 'data/kth'] ;
opts.alotDir = [opts.dataDir, 'data/alot'] ;
opts.mitDir = [opts.dataDir, 'data/mit_indoor'] ;
opts.msrcDir = [opts.dataDir, 'data/msrc_c'] ;
opts.cubDir = [opts.dataDir, 'data/cub'] ;
opts.vocDir = [opts.dataDir, 'data/VOC2007'] ;
opts.vocDir12 = [opts.dataDir, 'data/VOC2012'] ;
opts.bacteriaDir = [opts.dataDir, 'data/bacteria'] ;
opts.bacteriaGrayDir = [opts.dataDir, 'data/bacteriaGray'] ;
opts.bacteriaTrustDir = [opts.dataDir, 'data/bacteria'] ;
opts.writeResults = false;
opts.compid = 'comp2';
opts.publishDir = [opts.dataDir, 'data/figures'] ;
opts.suffix = 'baseline' ;
opts.prefix = 'v22' ;
opts.model = 'imagenet-vgg-m.mat';
opts.layer = 13 ; % for D-CNN (R-CNN is the penultimate)
opts.segProposalType = 'crisp' ;
opts.gpuId = 1;
opts.crf = [];
opts.classifier = '';
[opts, varargin] = vl_argparse(opts,varargin) ;

opts.expDir = sprintf('%sdata/%s/%s-seed-%02d', opts.dataDir, opts.prefix, opts.dataset, opts.seed) ;
opts.imdbDir = fullfile(opts.expDir, 'imdb') ;
if ~iscell(opts.suffix)
  opts.resultPath = fullfile(opts.expDir, sprintf('result-%s.mat', opts.suffix)) ;
  opts.segResultPath = fullfile(opts.expDir, sprintf('%s/result-%s-seg.mat', opts.segProposalType, opts.suffix)) ;
  opts.segPublishDir = fullfile(opts.expDir, sprintf('%s/result-%s-seg-figures', opts.segProposalType, opts.suffix)) ;
  vl_xmkdir(opts.segPublishDir);
  if opts.writeResults
      opts.vocResultPath = fullfile(opts.expDir, [sprintf('result-%s/Main/%s_cls_', opts.suffix, opts.compid) '%s_%s.txt']);
  end
else
  for s = 1:numel(opts.suffix)
    opts.resultPath{s} = fullfile(opts.expDir, sprintf('result-%s.mat', opts.suffix{s})) ;
    opts.segResultPath{s} = fullfile(opts.expDir, sprintf('%s/result-%s-seg.mat', opts.segProposalType, opts.suffix{s})) ;
    opts.segPublishDir{s} = fullfile(opts.expDir, sprintf('%s/result-%s-seg-figures', opts.segProposalType, opts.suffix{s})) ;
    vl_xmkdir(opts.segPublishDir{s});
  end
end
opts = vl_argparse(opts,varargin) ;

if nargout <= 1, return ; end

% Setup GPU if needed
if opts.useGpu
  gpuDevice(opts.gpuId) ;
end

% -------------------------------------------------------------------------
%                                                            Setup encoders
% -------------------------------------------------------------------------

models = {} ;
for i = 1:numel(opts.encoders)
  if isstruct(opts.encoders{i})
    name = opts.encoders{i}.name ;
    opts.encoders{i}.path = fullfile(opts.expDir, [name '-encoder.mat']) ;
    opts.encoders{i}.codePath = fullfile(opts.expDir, [name '-codes.mat']) ;
    models = horzcat(models, get_cnn_model_from_encoder_opts(opts.encoders{i})) ;
  else
    for j = 1:numel(opts.encoders{i})
      name = opts.encoders{i}{j}.name ;
      opts.encoders{i}{j}.path = fullfile(opts.expDir, [name '-encoder.mat']) ;
      opts.encoders{i}{j}.codePath = fullfile(opts.expDir, [name '-codes.mat']) ;
      models = horzcat(models, get_cnn_model_from_encoder_opts(opts.encoders{i}{j})) ;
    end
  end
end

% -------------------------------------------------------------------------
%                                                       Download CNN models
% -------------------------------------------------------------------------

for i = 1:numel(models)
  if ~exist(fullfile([opts.dataDir, 'data/models'], models{i}))
    fprintf('downloading model %s\n', models{i}) ;
    vl_xmkdir([opts.dataDir, 'data/models']) ;
    urlwrite(fullfile('http://www.vlfeat.org/matconvnet/models', models{i}),...
      fullfile([opts.dataDir, 'data/models'], models{i})) ;
  end
end

% -------------------------------------------------------------------------
%                                                              Load dataset
% -------------------------------------------------------------------------

vl_xmkdir(opts.expDir) ;
vl_xmkdir(opts.imdbDir) ;

imdbPath = fullfile(opts.imdbDir, sprintf('imdb-seed-%d.mat', opts.seed)) ;
if exist(imdbPath)
  imdb = load(imdbPath) ;
  return ;
end

switch opts.dataset
  case 'os'
    imdb = os_get_database(opts.osDir) ;
  case 'os-a'
    imdb = os_attr_get_database(opts.osDir);
  case 'fmd'
    imdb = fmd_get_database(opts.fmdDir, 'seed', opts.seed) ;
  case 'dtd'
    imdb = dtd_get_database(opts.dtdDir, 'seed', opts.seed);
  case 'kth'
    imdb = kth_get_database(opts.kthDir, 'seed', opts.seed);
  case 'voc07'
    imdb = voc_get_database(opts.vocDir, 'seed', opts.seed);
  case 'voc12'
    imdb = voc_get_database(opts.vocDir12, 'seed', opts.seed);
  case 'voc12s'
    imdb = voc_get_seg_database(opts.vocDir12, 'seed', opts.seed);
  case 'mit'
    imdb = mit_indoor_get_database(opts.mitDir);
  case 'msrc'
    imdb = msrc_c_get_database(opts.msrcDir);
  case 'cubcrop'
    imdb = cub_get_database(opts.cubDir, true);
  case 'cub'
    imdb = cub_get_database(opts.cubDir, false);
  case 'alot'
    imdb = alot_get_database(opts.alotDir, 'seed', opts.seed);
  case 'bacteria'
    imdb = bacteria_get_database(opts.bacteriaDir, 'seed', opts.seed);
  case 'bacteria5'
    imdb = bacteria_get_database_5(opts.bacteriaDir, 'seed', opts.seed);
  case 'bacteria3'
    imdb = bacteria_get_database_3(opts.bacteriaDir, 'seed', opts.seed);
  case 'bacteriaGray'
    imdb = bacteria_get_database(opts.bacteriaGrayDir, 'seed', opts.seed);
  case 'bacteriaGray5'
    imdb = bacteria_get_database_5(opts.bacteriaGrayDir, 'seed', opts.seed);
  case 'bacteriaGray3'
    imdb = bacteria_get_database_3(opts.bacteriaGrayDir, 'seed', opts.seed);
  case 'bacteriaTrust'
    imdb = bacteria_trust_get_database(opts.bacteriaTrustDir, 'seed', opts.seed);
  otherwise
    serror('Unknown dataset %s', opts.dataset) ;
end

save(imdbPath, '-struct', 'imdb') ;

if opts.printDatasetInfo
  print_dataset_info(imdb) ;
end

% -------------------------------------------------------------------------
function model = get_cnn_model_from_encoder_opts(encoder)
% -------------------------------------------------------------------------
p = find(strcmp('model', encoder.opts)) ;
if ~isempty(p)
  [~,m,e] = fileparts(encoder.opts{p+1}) ;
  model = {[m e]} ;
else
  model = {} ;
end
back to top