The code for implementing the Learning with Noisy Class Labels for Instance Segmentation.
Instance segmentation has achieved siginificant progress in the presence of correctly annotated datasets. Yet, object classes in largescale datasets are sometimes ambiguous, which easily causes confusion. In addition, limited experience and knowledge of annotators can also lead to mislabeled object classes. To solve this issue, a novel method is proposed in this paper, which uses different losses describing different roles of noisy class labels to enhance the learning. Specifically, in instance segmentation, noisy class labels play different roles in the foregroundbackground sub-task and the foreground-instance sub-task. Hence, on the one hand, the noise-robust loss (e.g., symmetric loss) is used to prevent incorrect gradient guidance for the foreground-instance sub-task. On the other hand, standard cross entropy loss is used to fully exploit correct gradient guidance for the foreground-background sub-task.
The project is based on mmdetection v2.2.0. Main results in the paper are based on older mmdetection (v1.0rc0).
More details will be released.
On Cityscapes dataset:
On COCO dataset:
Please check install.md for installation instructions.
For symmetric noise:
- Open the file noisy_labels_SN_Cityscapes.py.
- Modify the noise rate r, the annotation path p_a and the store path p_g.
- Run the file noisy_labels_SN_Cityscapes.py.
For asymmetric noise:
- Open the file noisy_labels_AN_Cityscapes.py.
- Modify the noise rate r, the annotation path p_a and the store path p_g.
- Run the file noisy_labels_AN_Cityscapes.py.
Similarly, noise under other datasets can be set.
For Cityscapes dataset:
- For the first stage, models should be trained with the config mask_rcnn_r50_fpn_1x_cityscapes_nl_1.py.
- For the second stage, models should be trained with the config mask_rcnn_r50_fpn_1x_cityscapes_nl_2.py:
./tools/dist_train.sh ${CONFIG_FILE} ${GPU_NUM} --resume-from ${MODEL_PATH}
The second stage needs use the model trained in the first stage.
Other datasets should apply similar settings.
Please check getting_started.md for details.
- Our designed loss is provided in new_combination_loss.py.
- PON is not the key contribution of this paper and it brings marginal increase. You can select to use it or not.
- Symmetric cross entropy loss is provided in symmetric_cross_entropy_loss.py
- Generalized cross entropy loss is provided in generalized_cross_entropy_loss.py.
Please consider citing our paper in your publications if the project helps your research. BibTeX reference is as follows.
@inproceedings{yang2020lncis,
title = {Learning with Noisy Class Labels for Instance Segmentation},
author = {Longrong, Yang and Fanman, Meng and Hongliang, Li and Qingbo, Wu and Qishang, Cheng},
booktitle = {European Conference on Computer Vision (ECCV)},
year={2020}
}