Skip to content

xyupeng/LC-Booster

Repository files navigation

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

This is the official implementation of LC-Booster.

Banner

Preparation

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/

Create Noisy Labels

# cifar10, symmetric noise 90%
python create_noisy_labels.py --ds cifar10 --type sym --ratio 0.9 --seed 42

# cifar100, symmetric noise 90%
python create_noisy_labels.py --ds cifar100 --type sym --ratio 0.9 --seed 42

# cifar10, asymmetric noise 40%
python create_noisy_labels.py --ds cifar10 --type asym --ratio 0.4 --seed 42

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.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages