Skip to content

Learning with Noisy Labels for Robust Point Cloud Segmentation (ICCV2021 Oral)

Notifications You must be signed in to change notification settings

pleaseconnectwifi/PNAL

Repository files navigation

Learning with Noisy Labels for Robust Point Cloud Segmentation (ICCV2021 Oral)

This repository is the official pytorch implementation of the proposed Point Noise-Adaptive Learning (PNAL) framework our ICCV 2021 oral paper, Learning with Noisy Labels for Robust Point Cloud Segmentation.

Shuquan Ye1, Dongdong Chen2, Songfang Han3, Jing Liao1
1City University of Hong Kong, 2Microsoft Cloud AI,3 University of California

🌟 Pipeline

👌 Updates

2021/10/17: initial release.

Install

👉 Requirements

Ubuntu 18.04 Conda with python = 3.7.7 pytorch = 1.5.0 cuda = 10.1, cudnn = 7.6.3 torchvision = 0.6.0 torch_geometric = 1.6.1

By default, we train with a single GPU >= 10000MiB, with batchsize=12

Refined Dataset

🌟 Download scannet annotation refined by us. 🌟

Refined Annotation

Download and unzip.

Extract point clouds from ScanNetV2 raw data.

Note that point cloud data is NOT included in the above file, according to ScanNet Terms of Use. Download all meshes from ScannNetv2 validation set to mesh/. And then extract by python find_rgb.py

Data Preparation

👏 Noisy and cluster data prepared by us

Download per60_0.018_DBSCANCluster, the S3DIS dataset with 60% symmetric noise and clustered by DBSCAN.

Move it to NL_S3DIS/ and unzip.

🚶 Make noisy and cluster data on your own?

download and unzip data_raw.zip, the clean data and based on this we make noise.

e.g., create 80% symmetric noise:

python make_NL_S3DIS.py --training --replace_method 1 --pre_cluster_path 'per60_0.018_DBSCANCluster/' --precent_NL 80 --root 'data_with_ins_label'

The label noise type can be switched by replace_method (=1 for Symmetry, =2 for Asymmetry, =3 for common Asymmetry), and the noise rate by precent_NL.

You can further switch cluster methods, e.g., ByPartitionMethods, ByDBSCAN, and ByGMM, in S3DIS_instance.

download ply_data_all_h5, the raw S3DIS dataset.

move it to NL_S3DIS/raw and unzip.

done.

👊 How can I check the noise rate?

Go into NL_S3DIS/ and run

python compare_labels.py

. Be patient and wait for it end to print Overall Noise Rate for you.

Run

🔥 PNAL

You can run under ours PNAL pipeline with different configs, by:

bash run_pnal.sh

e.g., run DGCNN on S3DIS with 60% symmetric noise in our prepared configs/PNAL.yaml.

❤️ without PNAL

You can run without ours PNAL pipeline with different configs, by:

bash run.sh

e.g., run DGCNN on S3DIS with Symmetric Cross Entropy (SCE) Loss in our prepared configs/SCE.yaml, and you can run with common Cross Entropy (CE) loss or Generalized Cross Entropy (GCE) Loss by change LOSS_FUNCTION from SCE to "" or GCE...

BibTeX

@article{pnal2021,
  author    = {Ye, Shuquan and Chen, Dongdong and Han, Songfang and Liao, Jing},
  title     = {Learning with Noisy Labels for Robust Point Cloud Segmentation},
  journal   = {International Conference on Computer Vision},
  year      = {2021},
}

😺 Acknowledgements

😸 We thank a lot for the flexible codebase of SELFIE, pytorch_geometric, Truncated-Loss.

😸 I would like to thank Jiaying Lin for providing the initial idea, constructive suggestions, generous support to this project.

About

Learning with Noisy Labels for Robust Point Cloud Segmentation (ICCV2021 Oral)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published