Skip to content

Latest commit

 

History

History
 
 

matlab

-------------------------------------------------
MATLAB/OCTAVE TRAINING CODE
-------------------------------------------------

IMPORTANT NOTE!
The PartsBasedDetector is flexible, and thanks to the help of
Deva Ramanan, Yi Yang and Xiangxin Zhu, models trained with a 
range of learning methods can be converted for use with the
detector. The current methods of learning (and links to code)
are described in the following papers:

  - Pedro Felzenszwalb, Ross Girshick, David McAllester and 
    Deva Ramanan, "Object detection with discriminatively
    trained part based models," PAMI 2010
    http://people.cs.uchicago.edu/~rbg/latent/

  - Yi Yang and Deva Ramanan, "Articulated pose estimation
    using flexible mixtures of parts," CVPR 2011
    http://www.ics.uci.edu/~yyang8/research/pose/

  - Xiangxin Zhu and Deva Ramanan, "Face detection, pose 
    estimation and landmark localization in the wild,"
    CVPR 2012

Without going into details of how each of the methods differ,
the discriminating features that concern the end user are
(in order of appearance above):

  - training only requires bounding boxes around objects
    (this works well for semi-supervised robotics applications)

  - training requires hand labelling of each part location
    and controlling the number of mixtures per part

  - training requires hand labelling of each part location,
    however only a subset of parts may be visible in each
    image. 


SO WHAT IS THIS CODE?
The Matlab and Octave code in this directory is a mirror of 
Yi Yang's code with some modifications to support Octave. It
has the best tradeoff between learning time, labelling complexity
and performance (for our purposes) and supports our open source
goals.

Procedure to train a model:

    1) Start Octave or Matlab and cd to this matlab directory
    2) Run compile.m to compile the required mex files
    3) Annotate your training data. A simple utility called
       annotateParts() is provided for your clicking 
       convenience
    4) Create a training script. A sample training script
       training_demo.m is provided to outline the steps involved
    5) Run your script to train your model


USING OTHER TRAINING METHODS:
Using training methods other than this supplied method is as simple
as running their respective training code, then calling 
modelTransfer.m (in this root directory) to convert model
formats.