Matthew Johnson

Multi-Label Boosting

The majority of machine learning systems for object recognition is limited by its requirement of single labelled images for training, which are difficult to create or obtain in quantity. It is therefore impractical to use methods or techniques which require such data to build object recognizers for more than a relatively small subset of object classes. Instead, far more abundant multilabel data provides a ready means to create object recognition systems which are able to deal with large numbers of classes.

Our answer to this, the MLBoost system, boosts multi-label learners to create better performance on multi-label data. I am providing the executable here with the standard caveat emptor that it is research code and as such isn't rock-solid.

This is a brief explanation of how to get up and running with the MLBoost software. It is developed in C#, using the .NET Framework 2.0. Thus, the zeroeth step is to ensure that you have the .NET Framework 2.0 Runtime or later. Then, download the executable and the data and copy it to a directory you've created called C:\mlboost\ . The executable options are:

Usage: MLBoost.exe -[train|test|labelImages] -[noun|boost]
-concepts arg0 -iterations arg0 -data arg0 (-help)
--------------------
-train Train a learner
-test Perform tests
-labelImages Label images
--------------------
-noun Uses a standard noun and blob correlation model
-boost Uses a boosted noun and blob correlation model
-------------------
-concepts arg0 Number of concepts in the model
-iterations arg0 Number of iterations in training
-data arg0 Data to use (which subdirectory of DATA_DIR)
-help Shows this message

I am unable to make the data I used available due to the fact that the Corel database is no longer licensed for use in research. The sample input data files which are available for download show the file format needed for the image and word data. The image data files take the form:

[image id] [feature id] [space delimited feature descriptor]
...

and the word files take the form:

[image id] [space delimited keyword list]
...

The system will only process images which have corresponding keywords. The system will look for 2 subdirectories in C:\mlboost directory, the data directory and the images directory. The images directory should have images whose names have the format [image id].[jpg|png|bmp|gif]. The data directory should have subdirectories which contain data sets, for example different training/test splits of the same data, or different sources of data. The system will look for 4 files in each data directory:

  • training_feature_data
  • training_word_data
  • test_feature_data
  • test_word_data

with the training files containing training data, and the test files containing test data. The last file which the program will look for will be coords_data in the data directory which contains the center-coordinates for each feature using the following format:

[image id] [feature id] [x] [y]
...

Once all of the prerequisites are in place, we will try running an experiment where we train a noun and blob correlation model. Navigate to the C:\mlboost\ directory and type

MLBoost -train -noun -concepts 50 -iterations 25 -data 001

This of course presumes you have a data directory called "001". Once this model has been trained, we can now see how it performs on the test data

MLBoost -test -noun -concepts 50 -iterations 25 -data 001

This will produce a results file of the format

[image id] [keywords]|[word_1]([score]) [word 2]([score]) ...
...

To view the results visually, simply run the program with the following options:

MLBoost -labelImages -noun -concepts 50 -iterations 25 -data 001

There are several system settings found in MLBoost.exe.config. You can customize the system's behavior to some extent using them.

BASE_DIR
The directory where all files and subdirectories used by the program will go.
MAX_FEATURES
The maximum number of features the system will use in training.
Snapshot