Deep Hash Table:可量化表示的高效端到端学习

可量化表示的高效端到端学习

该存储库具有“可量化表示的高效端到端学习”(ICML18)论文的源代码。

引用这项工作

@inproceedings{jeongICML18,
    title={Efficient end-to-end learning for quantizable representations},
    author={Jeong, Yeonwoo and Song, Hyun Oh},
    booktitle={arXiv preprint arXiv:1805.05809},
    year={2018}
    }

安装

准备

  1. 为数据和实验建立目录
cd RROOT
mkdir dataset deep_hash_table_processed deep_hash_table_exp_results
mkdir dataset/Imagenet32
  1. 更改config / path.py中的路径
RROOT = '(user enter path)'
EXP_PATH = RROOT+'deep_hash_table_exp_results/'
#=============CIFAR100============================#
CIFAR100PATH = RROOT+'dataset/cifar-100-python/'
CIFARPROCESSED = RROOT+'deep_hash_table_processed/cifar_processed/'
#==========================Imagenet32===============================#
IMAGENET32PATH = RROOT+'dataset/Imagenet32/'
IMAGENET32PROCESSED = RROOT+'deep_hash_table_processed/Imagenet32_processed/'
  1. 下载并解压缩数据集Cifar-100和下采样的 imagenet(32×32)
cd RROOT/dataset
wget https://www.cs.toronto.edu/~kriz/cifar-100-python.tar.gz
tar zxvf cifar-100-python.tar.gz

cd RROOT/dataset/Imagenet32
wget http://www.image-net.org/image/downsample/Imagenet32_train.zip
wget http://www.image-net.org/image/downsample/Imagenet32_val.zip
unzip Imagenet32_train.zip
unzip Imagenet32_val.zip

处理数据

cd process
python cifar_process.py
python imagenet32_process.py 

开始训练

  • Cifar-100实验(cifar_exps/)和ImageNet实验(imagenet_exps/)。
  1. 训练度量学习(metric/
    • train_metric.py将用度量学习损失来训练嵌入。
    • test_metric.py是用向量量化方法(VQ)和阈值方法(Th)构建的散列码来测试嵌入。
  2. 训练哈希码(exp1/
    • train_hash.py将替换最后一层,并使用本文提出的方法对嵌入进行微调。
    • test_hash.py将测试使用训练自train_hash.py的嵌入构建的哈希代码。

评估

  • 评估代码位于utils/evaluation.py中
  • 使用3个不同的度量(NMI,precision @ k,SUF)评估用散列码构建的散列表。

Ortools

  • 解决多项式时间的dicrete优化问题的代码在utils/ortools_op.py中
  • 求解离散优化问题的代码ortools_exp/
https://github.com/maestrojeong/Deep-Hash-Table-ICML18

转载请注明:《Deep Hash Table:可量化表示的高效端到端学习

发表评论