CNN Image Retrieval on Tattoo dataset with Tensorflow and Keras : Implementation of following papers
- Implementation of Particular Object Retrieval with Intergral Max-Pooling of CNN Activations
- Implementation of Faster R-CNN : Towards Real-Time object detection with Region Proposal Networks
Since I received the dataset from Tattoo Dataset Organization, you need your own dataset.
├── ROOT
└── dataset (train dataset for Faster R-CNN model)
├── final_annotations.txt (you can find the reference for this file in my dataset folder)
├── images
├── xxx.jpg
├── yyy.png
├── ...
└── test_dataset (test dataset for Faster R-CNN model)
├── final_test_annotations.txt (you can find the reference for this file in my test_dataset folder)
├── images
├── xxx.jpg
├── yyy.png
├── ...
└── retrieval_test (test dataset for Image Retrieval)
├── retrieval_annotations.txt (you can find the reference for this file in my test_dataset folder)
├── images
├── xxx.jpg
├── yyy.png
├── ...
-
You need your own dataset for every following steps.
-
frcnn_train_vgg.ipynb This notebook is for the training Object detection model(Faster R-CNN).
-
frcnn_test_vgg.ipynb This notebook is for the testing Object detection model(Faster R-CNN).
-
Retrieval_Model_final.ipynb. This notebook applies max-pooling on last convolution feature map and then generates pickles for each image in training dataset.
-
Ranking_Module.ipynb This notebook is for the testing performance of image-retrieval.
To train and test this model, you need to build your own dataset.
For each dataset folder, you need annotations.txt files. It includes ground truth for (path / bounding box coordinates / class label).
Since notebooks are colab files, image datasets shoud be in your google drive and it corresponds to ground truth path.
I used RectLabel application for bounding box labeling. you can use other applications for this task.
If you extend this model to build projects that use it, I'd love to hear from you.