OpenLongTailRecognition-OLTR

by zhmiao

Pytorch implementation for "Large-Scale Long-Tailed Recognition in an Open World" (CVPR 2019 ORAL)

530 Stars 101 Forks Last release: Not found BSD 3-Clause "New" or "Revised" License 94 Commits 0 Releases

Available items

No Items, yet!

The developer of this repository has not created any items for sale yet. Need a bug fixed? Help with integration? A different license? Create a request here:

Large-Scale Long-Tailed Recognition in an Open World

[Project] [Paper] [Blog]

Overview

Open Long-Tailed Recognition (OLTR)
is the author's re-implementation of the long-tail recognizer described in:
"Large-Scale Long-Tailed Recognition in an Open World"
Ziwei Liu*Zhongqi Miao*Xiaohang ZhanJiayun WangBoqing GongStella X. Yu  (CUHK & UC Berkeley / ICSI)  in IEEE Conference on Computer Vision and Pattern Recognition (CVPR) 2019, Oral Presentation

Further information please contact Zhongqi Miao and Ziwei Liu.

Update notifications

  • 03/04/2020: We changed all valirables named
    selfatt
    to
    modulatedatt
    so that the attention module can be properly trained in the second stage for Places-LT. ImageNet-LT does not have this problem since the weights are not freezed. We have updated new results using fixed code, which is still better than reported. The weights are also updated. Thanks!
  • 02/11/2020: We updated configuration files for
    Places_LT
    dataset. The current results are a little bit higher than reported, even with updated F-measure calculation. One important thing to be considered is that we have unfrozon the model weights for the first stage training of
    Places-LT
    , which means it is not suitable for single-GPU training in most cases (we used 4 1080ti in our implementation). However, for the second stage, since the memory and center loss do not support multi-GPUs currently, please switch back to single-GPU training. Thank you very much!
  • 01/29/2020: We updated the
    False Positive
    calculation in
    util.py
    so that the numbers are normal again. The reported F-measure numbers in the paper might be a little bit higher than actual numbers for all baselines. We will update it as soon as possible. We have updated the new F-measure number in the following table. Thanks.
  • 12/19/2019: Updated modules with 'clone()' methods and set
    use_fc
    in ImageNet-LT stage-1 config to
    False
    . Currently, the results for ImageNet-LT is comparable to reported numbers in the paper (a little bit better), and the reproduced results are updated below. We also found the bug in Places-LT. We will update the code and reproduced results as soon as possible.
  • 08/05/2019: Fixed a bug in
    utils.py
    . Update re-implemented ImageNet-LT weights at the end of this page.
  • 05/02/2019: Fixed a bug in
    run_network.py
    so the models train properly. Update configuration file for Imagenet-LT stage 1 training so that the results from the paper can be reproduced.

Requirements

Data Preparation

NOTE: Places-LT dataset have been updated since the first version. Please download again if you have the first version.

  • First, please download the ImageNet_2014 and Places_365 (256x256 version). Please also change the

    data_root
    in
    main.py
    accordingly.
  • Next, please download ImageNet-LT and Places-LT from here. Please put the downloaded files into the

    data
    directory like this:
    data
    |--ImageNet_LT
    |--ImageNet_LT_open
    |--ImageNet_LT_train.txt
    |--ImageNet_LT_test.txt
    |--ImageNet_LT_val.txt
    |--ImageNet_LT_open.txt
    |--Places_LT
    |--Places_LT_open
    |--Places_LT_train.txt
    |--Places_LT_test.txt
    |--Places_LT_val.txt
    |--Places_LT_open.txt
    

Download Caffe Pre-trained Models for PlacesLT Stage1 Training

  • Caffe pretrained ResNet152 weights can be downloaded from here, and save the file to
    ./logs/caffe_resnet152.pth

Getting Started (Training & Testing)

ImageNet-LT

  • Stage 1 training:
    python main.py --config ./config/ImageNet_LT/stage_1.py
    
  • Stage 2 training:
    python main.py --config ./config/ImageNet_LT/stage_2_meta_embedding.py
    
  • Close-set testing:
    python main.py --config ./config/ImageNet_LT/stage_2_meta_embedding.py --test
    
  • Open-set testing (thresholding)
    python main.py --config ./config/ImageNet_LT/stage_2_meta_embedding.py --test_open
    
  • Test on stage 1 model
    python main.py --config ./config/ImageNet_LT/stage_1.py --test
    

Places-LT

  • Stage 1 training (At this stage, multi-GPU might be necessary since we are finetuning a ResNet-152.):
    python main.py --config ./config/Places_LT/stage_1.py
    
  • Stage 2 training (At this stage, only single-GPU is supported, please switch back to single-GPU training.):
    python main.py --config ./config/Places_LT/stage_2_meta_embedding.py
    
  • Close-set testing:
    python main.py --config ./config/Places_LT/stage_2_meta_embedding.py --test
    
  • Open-set testing (thresholding)
    python main.py --config ./config/Places_LT/stage_2_meta_embedding.py --test_open
    

Reproduced Benchmarks and Model Zoo (Updated on 03/05/2020)

ImageNet-LT Open-Set Setting

| Backbone | Many-Shot | Medium-Shot | Few-Shot | F-Measure | Download | | :---------: | :------------: | :-----------: | :---------: | :---------: | :----------------: | | ResNet-10 | 44.2 | 35.2 | 17.5 | 44.6 | model |

Places-LT Open-Set Setting

| Backbone | Many-Shot | Medium-Shot | Few-Shot | F-Measure | Download | | :---------: | :------------: | :-----------: | :---------: | :---------: | :----------------: | | ResNet-152 | 43.7 | 40.2 | 28.0 | 50.0 | model |

CAUTION

The current code was prepared using single GPU. The use of multi-GPU can cause problems except for the first stage of

Places-LT
.

License and Citation

The use of this software is released under BSD-3.

@inproceedings{openlongtailrecognition,
  title={Large-Scale Long-Tailed Recognition in an Open World},
  author={Liu, Ziwei and Miao, Zhongqi and Zhan, Xiaohang and Wang, Jiayun and Gong, Boqing and Yu, Stella X.},
  booktitle={IEEE Conference on Computer Vision and Pattern Recognition (CVPR)},
  year={2019}
}

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.