Features for Object Detection

I want to build a classifier for detecting Airplanes in images. It is important to note that size and shape of the Airplane does not matter in the image. So for training I might simply use the images from Google search corresponding to Airplanes.

What would be the best features to be used for this purpose ?

Also which model with fit my purpose best? Neural Nets ? Svm ?

• What image size must be? – itdxer May 29 '15 at 10:43
• i Guess SIFT features might be useful here and so the image size would not be an issue. But if i were to take the pixels as the features then 400x400 woud be a decent size, I guess – midi May 29 '15 at 15:53

1 Answer

I would go for a convolutional neural network. More specifically, they have been proven to outperform any other classifier in image recognition competitions like ImageNet (http://www.image-net.org/) the last few years, substantially outperforming SVMs in such tasks.

The reasons... many, but in general they are able to learn features (usually much better than hand-crafted ones HoG, SIFT etc.) with location and slight transformation invariance (because of the convolutions and the pooling), which makes them a very attractive choice.

More specifically, I would suggest writing your implementation in Torch7 (http://torch.ch/), which is considered the state-of-the-art in deep learning (supported by NYU, Facebook AI and Google Deepmind). Then I would base my architecture in any of the ImageNet models (https://github.com/soumith/convnet-benchmarks/tree/master/torch7/imagenet_winners) and maybe simplify it a little as you have to predict airplane or not.

Now, about your dataset I would download a large amount of images of airplanes and an even larger amount of random pictures, in order to learn features to predict the 'not airplane' targets. Then I would resize my images to have the same size. To make it even easier about forming your model's architecture I would resize them to the AlexNet's (http://arxiv.org/abs/1404.5997 the model exists in the aforementioned github repo) input image dimensions $224 \times 224$.

Finally, you can fine-tune the model and simplify it (less depth maybe) to meet your performance/accuracy requirements. Last but not least, if you want to make it even more robust to different sizes of objects (airplanes in your case) you can extract multiple-size patches, instead of feeding the whole image, and follow an architecture similar to OverFeat (http://arxiv.org/pdf/1312.6229v4.pdf whichs also exists in the GitHub repo).

• (+1) Rather than writing a torch7 implementation from scratch, it's probably easiest to use Caffe, starting from one of the many existing ImageNet classifier architectures (or even a pretrained model, changing only the top layers). – Dougal May 29 '15 at 17:07