DeepHash - An Open-Source Package for Deep Learning to Hash (DeepHash)
DeepHash是一个轻量级的深度学习哈希库,它实现了最先进的深度哈希/量化算法。我们将根据我们发布的深度哈希论文列表不断地实现更具代表性的深度哈希模型。另外要特别提到的是,我们欢迎其他研究人员根据我们的框架为此工具包提供深度哈希模型。我们将会公布对本项目有贡献的人/团队的名单以表致谢。
Github项目链接:
https://github.com/thulab/DeepHash
实施的模型包括:
DQN: Deep Quantization Network for Efficient Image Retrieval(用于高效图像检索的深度量化网络), Yue Cao, Mingsheng Long, Jianmin Wang, Han Zhu, Qingfu Wen, AAAI Conference on Artificial Intelligence (AAAI), 2016
DHN: Deep Hashing Network for Efficient Similarity Retrieval(用于高效相似性检索的深度哈希网络), Han Zhu, Mingsheng Long, Jianmin Wang, Yue Cao, AAAI Conference on Artificial Intelligence (AAAI), 2016
DVSQ: Deep Visual-Semantic Quantization for Efficient Image Retrieval(用于高效图像检索的深度视觉语义量化), Yue Cao, Mingsheng Long, Jianmin Wang, Shichen Liu, IEEE Conference on Computer Vision and Pattern Recognition (CVPR), 2017
DCH: Deep Cauchy Hashing for Hamming Space Retrieval(用于汉明空间检索的深度柯西哈希) ,Yue Cao, Mingsheng Long, Bin Liu, Jianmin Wang, IEEE Conference on Computer Vision and Pattern Recognition (CVPR), 2018
DTQ: Deep Triplet Quantization(深度三元量化), Bin Liu, Yue Cao, Mingsheng Long, Jianmin Wang, Jingdong Wang, ACM Multimedia (ACMMM), 2018
注意:DTQ和DCH已更新,而DQN、DHN、DVSQ可能已过时,如有任何问题请随时与我们联系。我们欢迎他人的贡献!
Python3:建议使用Anaconda,因为它已包含很多软件包:
conda create -n DeepHash python=3.6 anaconda
source activate DeepHash
其他软件包
conda install -y tensorflow-gpu
conda install -y -c conda-forge opencv
要导入 ./DeepHash 中实现的包,我们需要将 ./DeepHash 的路径添加到环境变量中:
export PYTHONPATH=/path/to/project/DeepHash/DeepHash:$PYTHONPATH
在 data/cifar10/train.txt 中,我们将会举一个例子来说明如何准备图像去训练数据。在 data/cifar10/train.txt和 data/cifar10/database.txt 中,可以在预测过程中处理测试和数据库映像列表。如果要添加其他数据集作为输入,则需要准备将 train.txt, test.txt 和 database.txt 作为CIFAR-10数据集。
更重要的是,我们已将整个cifar10数据集(包括图像和数据列表)放在发布页面中。你可以直接下载并解压缩到 data/cifar10 文件夹。
确保 /path/to/project/data/cifar10 的文件树看起来像这样:
.
|-- database.txt
|-- test
|-- test.txt
|-- train
`-- train.txt
如果你需要在NUSWIDE_81和COCO上运行,我们建议你按照 https://github.com/thuml/HashNet/tree/master/pytorch#datasets 的指示准备NUSWIDE_81和COCO图像。
对于DVSQ 模型,还需要语义标签的单词向量。 在这里,我们使用在GoogleNews Dataset上已经预先训练好的word2vec模型(例如:https://github.com/mmihaltz/word2vec-GoogleNews-vectors)来提取图像标签的单词嵌入,如:狗,猫等。
你应该从此处或从发布页面手动下载Imagenet预先设置的AlexNet的模型文件,并将其解压缩到 /path/to/project/DeepHash/architecture/pretrained_model。
确保 /path/to/project/DeepHash/architecture 的文件树看起来像这样:
├── __init__.py
├── pretrained_model
└── reference_pretrain.npy
$method (DCH和DTQ) 的例子可以这样运行:
cd example/$method/
python train_val_script.py --gpus "0,1" --data-dir $PWD/../../data --"other parameters descirbe in train_val_script.py"
对于DVSQ,DQN和DHN,请参阅示例文件夹中的 train_val.sh 和 train_val_script.py。
如果你觉得DeepHash对你的研究有用,请考虑引用以下文章:
@InProceedings{cite:AAAI16DQN,
Author = {Yue Cao and Mingsheng Long and Jianmin Wang and Han Zhu and Qingfu Wen},
Publisher = {AAAI},
Title = {Deep Quantization Network for Efficient Image Retrieval},
Year = {2016}
}
@InProceedings{cite:AAAI16DHN,
Author = {Han Zhu and Mingsheng Long and Jianmin Wang and Yue Cao},
Publisher = {AAAI},
Title = {Deep Hashing Network for Efficient Similarity Retrieval},
Year = {2016}
}
@InProceedings{cite:CVPR17DVSQ,
Title={Deep visual-semantic quantization for efficient image retrieval},
Author={Cao, Yue and Long, Mingsheng and Wang, Jianmin and Liu, Shichen},
Booktitle={CVPR},
Year={2017}
}
@InProceedings{cite:CVPR18DCH,
Title={Deep Cauchy Hashing for Hamming Space Retrieval},
Author={Cao, Yue and Long, Mingsheng and Bin, Liu and Wang, Jianmin},
Booktitle={CVPR},
Year={2018}
}
@article{liu2018deep,
title={Deep triplet quantization},
author={Liu, Bin and Cao, Yue and Long, Mingsheng and Wang, Jianmin and Wang, Jingdong},
journal={MM, ACM},
year={2018}
}
本项目仓库的维护者:
Yue Cao, Email: caoyue10@gmail.com
Bin Liu, Email: liubinthss@gmail.com