This repository is an implementation of Deep Metric Learning via Facility Location on tensorflow. We build this on Cifar100 and Densenet-40. This paper is available here. For the loss layer implementation, look at here. For the Densenet implementation, look at here.
@inproceedings{songCVPR17,
Author = {Hyun Oh Song and Stefanie Jegelka and Vivek Rathod and Kevin Murphy},
Title = {Deep Metric Learning via Facility Location},
Booktitle = {Computer Vision and Pattern Recognition (CVPR)},
Year = {2017}
}
- Install prerequsites for
tensorflow
(see: tensorflow-gpu installation instructions). - Run
pip install -r requirements.txt
get required support.
- Modify
metric_learning_densenet.py
for training-params and densenet-params. We pick Cifar100 as our training data, because it's tiny, save GPU-memory (when batch size 64, it cost about 4.6G GPU-Memory) and good for doing research. - Run
python metric_learning_densenet.py
, thedata_provider
with automaticlly handle data download and process. After that, start Densenet-Cluster-loss training. - Download Downsampled Imagenet with size 32x32 from here. Modify
metric_learning_densenet.py
train on Imagenet.
- Modify
metric_learning_densenet.py
extract feature embeddings on cifar test set, the embeddings is saved with.npy
format used for evaluation process.
- Densenet tensorflow training code
- Deep metric learning cluster loss code
- Evaludation
- NMI, Recall@K code
- feature extraction code
- feature visulization code (tSNE)
- Dataset support
- cifar-10
- cifar-100
- imagenet-32x32