Getting Started

Event introduction
The event being declared open on March 1st in the CSA dept, IISc, Bangalore with a motivating talk by Arpit and Bhupendra. This will be a good starting point for the participants of this contest.

A brief Tutorial
The following is a brief tutorial for the beginners in Machine Learning.
Solving the TagMe! Challenge would have the following four basic parts:

This is perhaps the most crucial step in the problem. A feature is a description of a data point (in case of the challenge, each image is a data point). A feature vector is a vector which mathematically encodes a feature. There are various techniques available for feature extraction such as SIFT, SURF. However, we will also provide you the feature vectors using a standard technique, along with the images. You are free come up with more effective ways for feature extraction. Overall, by performing feature extraction, you will reduce all the images to vectors.

In Machine Learning, datapoints are represented as a tuple (feature vector, label). Label is typically a number, that indicates the class or family of the datapoint. In the TagMe! problem, each datapoint (image) can have label 'Human Faces(1)', 'Flowers(2)', 'Buildings(3)', 'Cars(4)', or 'Shoes(5)'. As there are 5 possible labels, this is called a Multi-Class Classification problem. Note that these labels will be known in the training dataset, while unknown in the test data set. It is assumed that there is a function that maps a feature vector to a label - our goal is to learn this function from the training set. For this purpose, many standard algorithms (called "classification algorithms") exist. For example, the algorithms available in the Weka Toolkit (a GUI-based software for Machine Learning) or the those available with RapidMiner might be of use for this challenge; in fact, any publicly available tool can be used (you are also free to build your own classifcation algorithms tailored for this challenge).

Once you have learned a function from the training set, you need to evaluate how well it behaves on data new unseen data. In other words, given a new datapoint (represented as a feature vector), can the learnt function map it to the correct label? The validation set is provided for this purpose. The labels of the validation set will not be provided, but on submission of the predicted labels, the accuracy (percentage of images which were provided a correct label by the learnt function) will be made known. If the accuracy is low, the features can be revised, or some other classification method can be used, with the hope of learning a better function.

Finally, when the test set of images (without labels) is available, you need to use the final learnt function to predict the labels on each of the test images. The accuracy achieved by your (final learnt) function on the test set will be used to judge your performance. In addition to it, your code will also be evaluated on various parameters such as scalability, efficiency, simplicity, documentation etc.

Online Tutorials
  • A detailed but quite simple tutorial for basic Machine Learning can be found here.
  • A more advanced tutorial for image classfication can be found here.
  • A tool for extracting SIFT features here.