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 ?

  • $\begingroup$ What image size must be? $\endgroup$ – itdxer May 29 '15 at 10:43
  • $\begingroup$ 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 $\endgroup$ – midi May 29 '15 at 15:53

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
    $\begingroup$ (+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). $\endgroup$ – Dougal May 29 '15 at 17:07

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.