I want to know if this argumentation is valid or not of my algorithm.
I'm trying to implement a CBIR (Content-Based Image Retrieval) where I've used the basics on CBIRs (colour, texture, shape, etcetera).
I've been thinking that Neural Networks such as CNN could help by giving a good score to the similar images than the query, and giving a bad score to the not similar images than the query. Since I'm not interested in labelling or classification, what I've done is labelling as one image - one label (I have only one sample per item).
I've implemented that on MATLAB with CNN from DeepLearnToolbox: 420 images on 420 labels with size = [64x64] in grayscale. The test set was the same than the training one, and I've got a 99,76% of error probability (so awful).
When I try to query an image, by;
net = cnnff(cnn, test_x); % cnn is the network trained, test_x is my image
net.o % printing results
but I'm getting always the same results for every image (no matter which I query). For example the last components of the vector are always:
0.0029
0.0000
0.0000
0.0000
0.0000
My main questions are:
- Am I doing anything wrong?
- Could this argumentation throw any good result by modifying any step?
Thank you very much in advance.
- In the example I runned, I'm using 420 images, so there are 420 classes.
- The number of epochs seems irrelevant theorically, I've tried with 1 and 500 and the results are the same: the same results are retrieved for different image queries.
- I'm not changing anything in the code but a simple error in the implementation (by querying one image, I had to add a 1 somewhere).
- I didn't try this before, I'm just asking if this is a correct approach or not.