1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- % author: Alexander Freytag
- % date : 27-02-2014 (dd-mm-yyyy)
- %% Training
- % We will train a model from a single instance.
- % So let's create a tiny list of positive examples
- pos(1).im = 'train.jpg';
- pos(1).x1 = 70;
- pos(1).y1 = 202;
- pos(1).x2 = 255;
- pos(1).y2 = 500;
- %read image ...
- im = readImage(pos(1).im);
- figTrain = figure;
- set ( figTrain, 'name', 'Training Image');
- % ... and show initial bounding box
- showboxes(im ,[pos(1).x1 pos(1).y1 pos(1).x2 pos(1).y2]);
- %settings for feature extraction
- settings.i_binSize = 8;
- settings.interval = 10; % same as on who demo file
- settings.order = 20;
- % note:
- % change the representation as you desire. This repo comes along with HOG
- % features as default, however, any diffferent feature type can be plugged
- % in as well given the proper wrapper funtion.
- % Examples can be found in our repository about patch discovery
- settings.fh_featureExtractor = ...
- struct('name','Compute HOG features using WHO code', ...
- 'mfunction',@computeHOGs_WHOorig, ...
- 'b_leaveBoundary' , true );
- % try locate previously trained bg-struct
- try
- fileToBG = fullfile(pwd, 'data/bg11.mat');
- load( fileToBG );
- % compatibility to older versions
- if ( isfield(bg,'sbin') && ~isfield(bg, 'i_binSize') );
- bg.i_binSize = bg.sbin;
- end
- catch
- % if not possible, leave bg empty and compute it from scratch lateron
- bg=[];
- end
- % no negative examples, use 'universal' negative model
- neg = [];
- model = learn_dataset( pos, neg, bg, settings );
- %show learned model, i.e., visualized HOG feature for positive and negative weights
- b_closeImg = false;
- showWeightVectorHOG( model.w, b_closeImg )
- %% Testing
- test(1).im='test.jpg';
- %perform detection
- boxes=test_dataset( test, model, settings );
- %convert output from 1x1-cell to double array
- boxes = boxes{1};
- %only take highest response
- %[~,bestIdx] = max ( boxes(:,5) );
- %boxes = boxes(bestIdx,:);
- %show detections
- im = readImage(test(1).im);
- figTest = figure;
- set ( figTest, 'name', 'Test Image');
- showboxes(im, boxes);
- % that's it :)
|