Skip to content

Learning Compact Binary Descriptors with Unsupervised Deep Neural Networks (CVPR16)

License

Notifications You must be signed in to change notification settings

kevinlin311tw/cvpr16-deepbit

Repository files navigation

CVPR16-DeepBit

Learning Compact Binary Descriptors with Unsupervised Deep Neural Networks

Created by Kevin Lin, Jiwen Lu, Chu-Song Chen, Jie Zhou

Introduction

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

Citation

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

Prerequisites

  1. MATLAB (tested with 2015a on 64-bit Ubuntu)
  2. Caffe's prerequisites

Installation

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 CIFAR10 Dataset, VGG16 pre-trained on ILSVRC12, DeepBit 32-bit model trained on CIFAR10. This script will rotate training data and create leveldb files.

$ ./prepare.sh

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 32.

>> run_cifar10

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 /examples/deepbit-cifar10-32/

To use the model, modify the model_file in run_cifar10.m to link your model:

    model_file = './YOUR/MODEL/PATH/filename.caffemodel';

Launch matlab, run run_cifar10.m and test the model!

>> run_cifar10

Resources

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:

  1. For ./prepare.sh:

DeepBit models in the paper:

  1. The proposed models trained on CIFAR10:

Experiments on Descriptor Matching and Object Recognition

comming soon...

Contact

Please feel free to leave suggestions or comments to Kevin Lin (kevinlin311.tw@iis.sinica.edu.tw), Jiwen Lu (lujiwen@tsinghua.edu.cn) or Chu-Song Chen (song@iis.sinica.edu.tw)

About

Learning Compact Binary Descriptors with Unsupervised Deep Neural Networks (CVPR16)

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published