I have a dataset of images of birds and want to build a CNN classifier that outputs the probability that the fed image(test) is a bird, So that I can accept the image to be a bird beyond a certain threshold.

How should I go about training this ?

One possible way could be to have a second class of all the images/{birds} and then train a two class CNN. But this becomes a very computationally expensive task.


One solution for images that have a defined bounding box of the bird, would be to use a sliding window and an approach similar to OverFeat http://arxiv.org/abs/1312.6229.

Otherwise, you will have to train against two classes, as you well said. For ease of speed I would suggest the following:

  • Use a GPU accelerated framework (caffe, torch, theano etc)
  • You can take a pretrained network's weights (OverFeat, OxfordNet, AlexNet etc.) and just replace and retrain the top layers.
  • Use an efficient SGD method such as Adagrad, Adadelta, rmsprop etc.

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.