This repository contains the code for the paper:
Making Better Mistakes: Leveraging Class Hierarchies with Deep Networks
Luca Bertinetto*, Romain Mueller*, Konstantinos Tertikas, Sina Samangooei, Nicholas A. Lord*.
IEEE Conference on Computer Vision and Pattern Recognition (CVPR) 2020
Resources:
If you find our work useful/interesting, please consider citing it as:
@InProceedings{bertinetto2020making,
author = {Bertinetto, Luca and Mueller, Romain and Tertikas, Konstantinos and Samangooei, Sina and Lord, Nicholas A.},
title = {Making Better Mistakes: Leveraging Class Hierarchies With Deep Networks},
booktitle = {The IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR)},
month = {June},
year = {2020}
}
- Download train+val sets of ImageNet-ILSVRC12 and/or train+val sets of iNaturalist'19
- Create the dataset by using the splits described in
dataset_splits/splits_tiered.zipanddataset_splits/splits_inat19.zip. - For our experiments, we resized the images (stretching them) to 224x224. This script is convenient for this purpose.
- Rename
data_paths.yml.exampleand edit it to reflect the paths on your system.
The training/testing environment can be initialized using conda as:
conda env update -n better-mistakes -f environment.yml
source activate better-mistakes
pip install -e .
Alternatively, we provide a Dockerfile that can be built using:
docker build -t better-mistakes .
The hierarchies are defined in ./data for the datasets tieredImageNet-H and iNaturalist19. ImageNet-H is also avaialble for future convenience.
For each of these datasets we provide the following files:
dataset_isa.txt, a text file containing all parent -> child relationships in the hierarchy.dataset_tree.pkla picklednltk.Treecontaining the hierarchy.dataset_ilsvrc_distances.txt.xz, a compressed text file with every node pair and their ilsvrc distance. Note that the pairs are sorted lexicographically.dataset_ilsvrc_distances.pkl.xz, pickled dictionary of the above distances.
The experiments of the papers are contained in the experiments/ directory. Inside of your environment (or docker) run for example:
cd experiments
bash crossentropy_inaturalist19.sh
The entry points for the code are all inside of scripts/:
start_training.pyruns training and validation for all the methods (note: the code has been tested on single-gpu mode only)plot_tradeoffs.pyproduces the main plots of the paper given the json files produced bystart_training.pystart_testing.pyruns the trained model on the test set for the epochs output byplot_tradeoffs.py(as inexperiment_to_best_epoch.json).
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. Commercial licenses available upon request.
