Official PyTorch implementation for the ICML 2019 paper: "Unsupervised Label Noise Modeling and Loss Correction" https://arxiv.org/abs/1904.11238
Training images with correct (green) and incorrect (red) label | Network predicitons post training |
---|---|
![]() |
![]() |
You can find in RunScripts.sh an example script to run the code for 80% label noise (M-DYR-H and M-DYR-S) and 90% label noise (MD-DYR-SH).
Feel free to modify input parameters for any level of label noise (and other parameters in the paper).
Additionally, the code is now supporting both CIFAR-10 and CIFAR-100 but feel free to adapt it for other datasets such as TinyImagenet by changing the data loaders and modifying the noise addition function in utils.py
Dependencies |
---|
python == 3.6 |
pytorch == 0.4.1 |
cuda92 |
torchvision |
matplotlib |
scikit-learn |
tqdm |
If you are using conda, you can execute:
$ conda env create -f environment.yml
$ conda activate lnoise
This will include all dependencies in a new conda environement called lnoise
CIFAR-10 & CIFAR-100 datasets are currently supported and will be downloaded automatically to the path set with --dataset option
CPU: Intel(R) Core(TM) i7-6850K CPU @ 3.60GHz GPU: NVIDIA GTX1080Ti
Execute the following to get details about parameters. Most of them are set by default to replicate our experiments.
$ python train.py --h
Algorithm\Noise level | 0 | 20 | 50 | 80 | 90 | |
---|---|---|---|---|---|---|
M-DYR-H | best | 93.6 | 94.0 | 92.0 | 86.8 | 40.8 |
last | 93.4 | 93.8 | 91.9 | 86.6 | 9.9 | |
MD-DYR-SH | best | 93.6 | 93.8 | 90.6 | 82.4 | 69.1 |
last | 92.7 | 93.6 | 90.3 | 77.8 | 68.7 |
Algorithm\Noise level | 0 | 20 | 50 | 80 | 90 | |
---|---|---|---|---|---|---|
M-DYR-H | best | 70.3 | 68.7 | 61.7 | 48.2 | 12.5 |
last | 66.2 | 68.5 | 58.8 | 47.6 | 8.6 | |
MD-DYR-SH | best | 73.3 | 73.9 | 66.1 | 41.6 | 24.3 |
last | 71.3 | 73.34 | 65.4 | 35.4 | 20.5 |
Accuracies are reported at the end of 300 epochs of training.
Note: We thank authors from 1 for the mixup and Pytorch implementation of PreAct ResNet (https://github.com/facebookresearch/mixup-cifar10)
that we use in our code.
[1] Hongyi Zhang, Moustapha Cisse, Yann N. Dauphin, David Lopez-Paz, "mixup: Beyond Empirical Risk Minimization", in International Conference on Learning Representations (ICLR), 2018.
@inproceedings{ICML2019_UnsupervisedLabelNoise,
title = {Unsupervised Label Noise Modeling and Loss Correction},
authors = {Eric Arazo and Diego Ortego and Paul Albert and Noel E O'Connor and Kevin McGuinness},
booktitle = {International Conference on Machine Learning (ICML)},
month = {June},
year = {2019}
}
Eric Arazo*, Diego Ortego*, Paul Albert, Noel E. O'Connor, Kevin McGuinness, Unsupervised Label Noise Modeling and Loss Correction, International Conference on Machine Learning (ICML), 2019
*Equal contribution