--- /dev/null
+
+INTRODUCTION
+
+ This is the C++ implementation of the folded hierarchy of
+ classifiers for cat detection described in
+
+ F. Fleuret and D. Geman, "Stationary Features and Cat Detection",
+ Journal of Machine Learning Research (JMLR), 2008, to appear.
+
+ Please cite this paper when referring to this software.
+
+INSTALLATION
+
+ This program was developed on Debian GNU/Linux computers with the
+ following main tool versions
+
+ * GNU bash, version 3.2.39
+ * g++ 4.3.2
+ * gnuplot 4.2 patchlevel 4
+
+ If you have installed the RateMyKitten images provided on
+
+ http://www.idiap.ch/folded-ctf
+
+ in the source directory, everything should work seamlessly by
+ invoking the ./run.sh script. It will
+
+ * Compile the source code entirely
+
+ * Generate the "pool file" containing the uncompressed images
+ converted to gray levels, labeled with the ground truth.
+
+ * Run 20 rounds of training / test (ten rounds for each of HB and
+ H+B detectors with different random seeds)
+
+ You can also run the full thing with the following commands if you
+ have wget installed
+
+ wget http://www.idiap.ch/folded-ctf/not-public-yet/data/folding-gpl.tgz
+ tar zxvf folding-gpl.tgz
+ cd folding
+ wget http://www.idiap.ch/folded-ctf/not-public-yet/data/rmk.tgz
+ tar zxvf rmk.tgz
+ ./run.sh
+
+ Note that every one of the twenty rounds of training/testing takes
+ more than three days on a powerful PC. However, the script detects
+ already running computations by looking at the presence of the
+ corresponding result directory. Hence, it can be run in parallel on
+ several machines as long as they see the same result directory.
+
+ When all or some of the experimental rounds are over, you can
+ generate the ROC curves by invoking the ./graph.sh script.
+
+ You are welcome to send bug reports and comments to fleuret@idiap.ch
+
+PARAMETERS
+
+ To set the value of a parameter during an experiment, just add an
+ argument of the form --parameter-name=value before the commands that
+ should take into account that value.
+
+ For every parameter below, the default value is given between
+ parenthesis.
+
+ * niceness (5)
+
+ Process priority
+
+ * random-seed (0)
+
+ Global random seed
+
+ * pictures-for-article ("no")
+
+ Should the pictures be generated to be clear in b&w
+
+ * pool-name (no default)
+
+ Where are the data to use
+
+ * test-pool-name (no default)
+
+ Should we use a separate pool file, and ignore proportion-for-test
+ then.
+
+ * detector-name ("default.det")
+
+ Where to write or from where to read the detector.
+
+ * result-path ("/tmp/")
+
+ In what directory should we save all the produced file during the
+ computation.
+
+ * loss-type ("exponential")
+
+ What kind of loss to use for the boosting. While different loss are
+ implementer in the code, only the exponential has been thoroughly
+ tested.
+
+ * nb-images (-1)
+
+ How many images to process in list_to_pool or when using the
+ write-pool-images command.
+
+ * tree-depth-max (1)
+
+ Maximum depth of the decision trees used as weak learners in the
+ classifier.
+
+ * proportion-negative-cells-for-training (0.025)
+
+ Overall proportion of negative cells to use during learning (we
+ sample among them)
+
+ * nb-negative-samples-per-positive (10)
+
+ How many negative cell to sample for every positive cell during
+ training.
+
+ * nb-features-for-boosting-optimization (10000)
+
+ How many pose-indexed features to use at every step of boosting.
+
+ * force-head-belly-independence (no)
+
+ Should we force the independence between the two levels of the
+ detector (i.e. make an H+B detector)
+
+ * nb-weak-learners-per-classifier (10)
+
+ This parameter corresponds to the value U in the JMLR paper, and
+ should be set to 100.
+
+ * nb-classifiers-per-level (25)
+
+ This parameter corresponds to the value B in the JMLR paper.
+
+ * nb-levels (1)
+
+ How many levels in the hierarchy, this is 2 for the JMLR paper
+ experiments.
+
+ * proportion-for-train (0.5)
+
+ The proportion of scenes from the pool to use for training.
+
+ * proportion-for-validation (0.25)
+
+ The proportion of scenes from the pool to use for estimating the
+ thresholds.
+
+ * proportion-for-test (0.25)
+
+ The proportion of scenes from the pool to use to test the
+ detector.
+
+ * write-validation-rocs ("no")
+
+ Should we compute and save the ROC curves estimated on the
+ validation set during training.
+
+ * write-parse-images ("no")
+
+ Should we save one image for every test scene with the resulting
+ alarms.
+
+ * write-tag-images ("no")
+
+ Should we save the (very large) tag images when saving the
+ materials.
+
+ * wanted-true-positive-rate (0.5)
+
+ What is the target true positive rate. Note that this is the rate
+ without post-processing and without pose tolerance in the
+ definition of a true positive.
+
+ * nb-wanted-true-positive-rates (10)
+
+ How many true positive rates to visit to generate the pseudo-ROC.
+
+ * min-head-radius (25)
+
+ What is the radius of the smallest heads we are looking for.
+
+ * max-head-radius (200)
+
+ What is the radius of the largest heads we are looking for.
+
+ * root-cell-nb-xy-per-radius (5)
+
+ What is the size of a (x,y) square cell with respect to the radius
+ of the head.
+
+ * pi-feature-window-min-size (0.1)
+
+ What is the minimum pose-indexed feature windows size with respect
+ to the frame they are defined in.
+
+ * nb-scales-per-power-of-two (5)
+
+ How many scales do we visit between two powers of two.
+
+ * progress-bar ("yes")
+
+ Should we display a progress bar.
+
+COMMANDS
+
+ open-pool
+ train-detector
+ compute-thresholds
+ test-detector
+ sequence-test-detector
+ write-detector
+ read-detector
+ write-pool-images
+
+ --
+ Francois Fleuret
+ October 200