tsunghan-wu / ReDAL

🍀 Official pytorch implementation of "ReDAL: Region-based and Diversity-aware Active Learning for Point Cloud Semantic Segmentation. Wu et al. ICCV 2021."
41 stars 10 forks source link
3d-vision active-learning computer-vision point-cloud pytorch-implementation semantic-segmentation

ReDAL: Region-based and Diversity-aware Active Learning for Point Cloud Semantic Segmentation

Official pytorch implementation of "ReDAL: Region-based and Diversity-aware Active Learning for Point Cloud Semantic Segmentation. Wu et al. ICCV 2021." (presentation video)

In this work, we present ReDAL, a general active learning framework for point cloud semantic segmentation. By selecting only informative but diverse regions for label acquisition, the labeling effort can be hugely reduced. Here shows a demo video.

https://user-images.githubusercontent.com/22555914/134839515-93f6523f-994f-4b22-b0ae-d8b554357f26.mp4

Environmental Setup

Note:

  1. One might need to install libsparsehash-dev before installing torchsparse. For more information, please see the official website.
  2. We only support torchsparse@v1.2.0.
  3. torchsparse will automatically install the corresponding version of the package based on the the highest supported CUDA version of the nvidia-driver, where would be an alternative to install the torchsparse package.

Data Preparation

This repo supports S3DIS and SemanticKITTI datasets. (Support for scannetv2 dataset is still in beta.)

Please see this documentation.

Active Training Script

A. Supervised Training (Upperbound)

CUDA_VISIBLE_DEVICES=X python3 train_supervision.py -n <dataset> -d <dataset-path> -p <stored-ckpt-path> \
                        -m <model-backbone> --train_batch_size <train-batch-size> --val_batch_size <val-batch-size> \
                        --ignore_idx <invalid-category-idx> --max-epoch <epochs> [--distributed_training]

B. Scene-based Active Leraning (Baselines)

CUDA_VISIBLE_DEVICES=X python3 train_scene_active.py -n <dataset> -d <dataset-path> -p <stored-ckpt-directory> \
                        -m <model-backbone> --train_batch_size <train-batch-size> --val_batch_size <val-batch-size> \
                        --ignore_idx <invalid-category-idx> --training-epoch <epochs> --finetune-epoch <epochs> \
                        --active_method <valid-active-method> --max_iterations <AL iterations> \
                        --active_selection_size <number of scene labels per query> [--distributed_training]

C. Region-based Active Learning

CUDA_VISIBLE_DEVICES=X python3 train_region_active.py -n <dataset> -d <dataset-path> -p <stored-ckpt-directory> \
                        -m <model-backbone> --train_batch_size <train-batch-size> --val_batch_size <val-batch-size> \
                        --ignore_idx <invalid-category-idx> --training-epoch <epochs> --finetune-epoch <epochs> \
                        --active_method <valid-active-method> --max_iterations <AL iterations> \
                        --active_percent <percent of labels per query> [--distributed_training]

Citation

If you use this code, please cite the paper:

@inproceedings{wu2021redal,
  title={ReDAL: Region-based and Diversity-aware Active Learning for Point Cloud Semantic Segmentation},
  author={Wu, Tsung-Han and Liu, Yueh-Cheng and Huang, Yu-Kai and Lee, Hsin-Ying and Su, Hung-Ting and Huang, Ping-Chia and Hsu, Winston H},
  booktitle={Proceedings of the IEEE/CVF International Conference on Computer Vision},
  pages={15510--15519},
  year={2021}
}