Reliable Label Correction is a Good Booster When Learning with Extremely Noisy Labels

This is the official implementation of LC-Booster.

Banner

Environment

  1. Install pytorch>=1.7.0 and torchvision.
  2. pip install -r requirements.txt

Datasets

Please download and organize the datasets in this structure:

LC-Booster
├── data/
    ├── cifar-10-batches-py/
    ├── cifar-100-python/

Train

# CIFAR-10; 2 GPUs by default
python train_ww_ws.py configs/cifar10/sym80_ww_ws.py
python train_ww_ws.py configs/cifar10/sym90_ww_ws.py

# CIFAR-100; 2 GPUs by default
python train_wwss.py configs/cifar100/sym80_wwss.py
python train_wwss.py configs/cifar100/sym90_wwss.py

Results

We provide results and logs produced by this code.

CIFAR-10

Method Metric Noisy Type\Ratio
sym80 sym90
SOTA Best 93.8 91.9
Last 5 93.6 91.8
LC-Booster Best 94.9 93.2
Last 5 94.7 92.9

CIFAR-100

Method Metric Noisy Type\Ratio
sym80 sym90
SOTA Best 66.4 41.2
Last 5 66.1 40.9
LC-Booster Best 67.9 50.9
Last 5 67.5 50.7

We do observe some variance on results of high noise ratio (e.g., CIFAR-10 sym90), as in the implementation of other noisy-label methods (e.g., AugDesc). We find the variance is mainly reflected on the first 100 epochs. So you can run several first 100 epochs with different seeds and resume from the best one to avoid full training many times.

More configs and code coming soon.