Learning Compact Binary Descriptors with Unsupervised Deep Neural Networks
Created by Kevin Lin, Jiwen Lu, Chu-Song Chen, Jie Zhou
We propose a new unsupervised deep learning approach to learn compact binary descriptor. We enforce three criterions on binary codes which are learned at the top layer of our network: 1) minimal loss quantization, 2) evenly distributed codes and 3) rotation invariant bits. Then, we learn the parameters of the networks with a back-propagation technique. Experimental results on three different visual analysis tasks including image matching, image retrieval, and object recognition demonstrate the effectiveness of the proposed approach.
The details can be found in the following CVPR 2016 paper
If you find DeepBit useful in your research, please consider citing:
Learning Compact Binary Descriptors with Unsupervised Deep Neural Networks Kevin Lin, Jiwen Lu, Chu-Song Chen and Jie Zhou IEEE Conference on Computer Vision and Pattern Recognition (CVPR), 2016
- MATLAB (tested with 2015a on 64-bit Ubuntu)
- Caffe's prerequisites
Adjust Makefile.config and simply run the following commands:
$ make all -j8 $ make matcaffe
For a faster build, compile in parallel by doing
make all -j8 where 8 is the number of parallel threads for compilation (a good choice for the number of threads is the number of cores in your machine).
Retrieval evaluation on CIFAR10
First, run the following command to download and set up
VGG16 pre-trained on ILSVRC12,
DeepBit 32-bit model trained on CIFAR10. This script will rotate training data and create leveldb files.
Launch matalb and run
run_cifar10.m to perform the evaluation of
precision at k and
mean average precision at k. We set
k=1000 in the experiments. The bit length of binary codes is
Then, you will get the
mAP result as follows.
>> MAP = 0.25446596
Note: CIFAR10 dataset is split into training and test sets, with 50,000 and 10,000 images, respectively. During retrieval process, the 50,000 training images are treated as the database. We use the 10,000 test images as the query samples.
Train DeepBit on CIFAR10
Simply run the following command to train DeepBit:
$ cd /examples/deepbit-cifar10-32 $ ./train.sh
The training process takes a few hours on a desktop with Titian X GPU.
You will finally get your model named
DeepBit32_final_iter_1.caffemodel under folder
To use the model, modify the
run_cifar10.m to link your model:
model_file = './YOUR/MODEL/PATH/filename.caffemodel';
Launch matlab, run
run_cifar10.m and test the model!
Note: This documentation may contain links to third party websites, which are provided for your convenience only. Third party websites may be subject to the third party’s terms, conditions, and privacy statements.
If the automatic "fetch_data" fails, you may manually download the resouces from:
DeepBit models in the paper:
- The proposed models trained on CIFAR10:
Experiments on Descriptor Matching and Object Recognition