I have a question for you that maybe you could give me a clue.

I'm trying to make a CBIR (Content-Based Image Retrieval), so I query an image and I get the most similar, not classified within a database of around 2000 images. I'm trying to extract features and matching them by euclidean distance but I was going to try to train them with the framework called Caffe, for deep learning (neural networks).

So, what I've done is taking 10 samples per every image by 3d projection (so I take the image 635.jpg and I make 635_1.jpg and so on to 635_10.jpg) and I use the original image 635.jpg as validation data. So if there are 2000 images, I use 20.000 images for training and 2.000 images for validation into 2.000 clases... do you think it's a good idea?

Thank you in advance.

Although I've been trying, I wasn't still able to train on Caffe due to the high quantity of errors in the dependencies on Mac OSx. I will switch to Ubuntu and see what's wrong.

  • $\begingroup$ Couldn't do it with OpenCV $\endgroup$ May 7, 2015 at 18:32

1 Answer 1


This is a fine idea and pretty standard. However, your problem will be the augmentation of the data. If you render the image from many viewpoints/rotations etc. and just use a plain background, the network would include that information into the training stage e.g. Like a shape cue. So, you have to use different backgrounds. This is of course scene specific. However, you might be able to narrow down your scenes so that you could randomly generate/perturb different background structures.

Also note that, you might be able to scale up to thousands of classes, but getting to millions could become a headache, since training this network would be very tough.

You might as well go with standard indexing / hashing approaches, which already perform pretty well.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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