This is an implmentation for the paper Joint Optimization Framework for Learning with Nosiy Labels
The official implementation is by Chainer.here
- Python 3.5
- Pytorch 0.4 & torchvision
- numpy
- matplotlib (not necessary unless the need for the result figure)
The backbone of the network is Resnet-34.
It is implemented in /models/renset.py.
Here only Resnet-34 and Resnet-18 is available.
There are two steps to folllow.
- First: Train the noisy dataset and update labels.
Train the network on the Symmetric Noise CIFAR-10 dataset:
python train.py --gpus 0 --noise_ratio 0.2 --alpha 0.8 --beta 0.4 --dataset_type "sym_noise"
Train the network on the Asymmetric Noise CIFAR-10 dataset:
python train.py --gpus 0 --noise_ratio 0.2 --alpha 0.8 --beta 0.4 --dataset_type "asym_noise"
- Second: Retrain the updated dataset.
Train the network on the Symmetric Noise CIFAR-10 dataset:
python retrain.py --gpus 0 --lr 0.2 --lr_train 0.03 --noise_ratio 0.2 --alpha 0.8 --beta 0.4 --dataset_type "sym_noise"
Train the network on the Asymmetric Noise CIFAR-10 dataset:
python retrain.py --gpus 0 --lr 0.2 --lr_train 0.03 --noise_ratio 0.2 --alpha 0.8 --beta 0.4 --dataset_type "asym_noise"
supplement intro:
The params used in retrain.py, such as lr_train, alpha and beta, are only used to determine the root for update labels.
So all these params can be merged into one param --labels_root.
- D. Tanaka, D. Ikami, T. Yamasaki and K. Aizawa. "Joint Optimization Framework for Learning with Noisy Labels", in CVPR, 2018.
- Another unofficial implementation for the same paper. here