GitPedia

Ranked List Loss for DML

CVPR 2019: Ranked List Loss for Deep Metric Learning, with extension for TPAMI submission

From XinshaoAmosWang·Updated May 22, 2025·View on GitHub·

This work is being extended for TPAMI submission, with the main target to improve this work further. * **The updated codes are released. Feel free to have a try!** * In [Unbiased Evaluation of Deep Metric Learning Algorithms--Istvan Feh ´ erv ´ ari etal 2019](https://arxiv.org/pdf/1911.12528.pdf), **it stated "On the SOP dataset, we never managed to make this algorithm converge." using [Ranked List Loss](https://arxiv.org/abs/1903.03238).** * First of all, I thank their interest in our work, whi... The project is written primarily in Shell, distributed under the BSD 3-Clause "New" or "Revised" License license, first published in 2019. Key topics include: deep-metric-learning, fine-grained-recognition, image-clustering, image-retrieval, learning-to-rank.

Ranked-List-Loss-for-Deep-Metric-Learning

[Paper] [Slides] [Poster]

This work is being extended for TPAMI submission, with the main target to improve this work further.

In deep metric learning, The improvements over time have been marginal?

Citation

If you find our code and paper help your research, please kindly cite our work:

bash
InProceedings{Wang_2019_CVPR, author = {Wang, Xinshao and Hua, Yang and Kodirov, Elyor and Hu, Guosheng and Garnier, Romain and Robertson, Neil M.}, title = {Ranked List Loss for Deep Metric Learning}, booktitle = {The IEEE Conference on Computer Vision and Pattern Recognition (CVPR)}, month = {June}, year = {2019} }

To Visualise the Repository Tree Structure

cd ./Ranked-List-Loss-for-Deep-Metric-Learning
tree

Dependencies and Setup

The core functions are implemented using C++ in the caffe framework. We use matlab interfaces matcaffe for data preparation.

  • Clone our repository: Simply copy and execute following commands in the command line

    bash
    git clone git@github.com:XinshaoAmosWang/Ranked-List-Loss-for-D eep-Metric-Learning.git cd Ranked-List-Loss-for-Deep-Metric-Learning/
  • Install dependencies on Ubuntu 16.04

    bash
    sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler sudo apt-get install --no-install-recommends libboost-all-dev sudo apt-get install libopenblas-dev sudo apt-get install python-dev sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev
  • Install MATLAB 2017b

    Download and Run the install binary file

    bash
    ./install
  • Compile Caffe and matlab interface

    Note you may need to change some paths in Makefile.config according your system environment and MATLAB path

    bash
    cd CaffeMex_RLL_GR_V03_Simp make -j8 && make matcaffe

Usage

Training on Stanford Online Product dataset.

  • Data preparation for SOP

    Downlaod Stanford_Online_Products dataset from ftp://cs.stanford.edu/cs/cvgl/Stanford_Online_Products.zip

    For simplicity, you can use the data mat file in pre_post_process directory, which is ready training and testing scripts.
    To solve the data path, you can do eithor a or b:

      a. Changing the path within the mat files. 
      b. A Simpler way: Create a soft link of your data
      e.g sudo ln -s /.../Stanford_Online_Products /home/xinshao/Papers_Projects/Data/Stanford_Online_Products
    
  • Train & Test

    Run the training and testing scripts in the training folder of a specific setting defined by its corresponding prototxt folder.

Training on In-shop Clothes

Our trained models on SOP, In-shop Clothes

Training on custom datasets

You only need to create training/testing mat files with the same structure as SOP_TrainImagePathBoxCell.mat and SOP_TestImagePathBoxCell.mat in directory SOP_GoogLeNet_Ori_V05/pre_pro_process.

e.g. SOP_TrainImagePathBoxCell.mat contains <img src="imgs/img2.png" width="400">, TrainImagePathBoxCell storing all image paths and class_ids storing their corresponding semantic labels.

Application on person re-identification

Common questions

1. What does ranking mean?

  • Given a query, the objective is to rank its postive set in front of its negative set by a distance margin.

  • We do not need to consider the exact order of examples within the positive and negative sets.

Please see our discussion in the paper.

Acknowledgements

Our work benefits from:

Licence

BSD 3-Clause "New" or "Revised" License

Contact

Xinshao Wang (You can call me Amos as well)
xinshao dot wang at eng dot ox dot ac dot uk

Contributors

Showing top 1 contributor by commit count.

View all contributors on GitHub →

This article is auto-generated from XinshaoAmosWang/Ranked-List-Loss-for-DML via the GitHub API.Last fetched: 6/19/2026