All Projects → tiangexiang → CurveNet

tiangexiang / CurveNet

Licence: other
Official implementation of "Walk in the Cloud: Learning Curves for Point Clouds Shape Analysis", ICCV 2021

Programming Languages

python
139335 projects - #7 most used programming language
shell
77523 projects

Projects that are alternatives of or similar to CurveNet

snarf
Official code release for ICCV 2021 paper SNARF: Differentiable Forward Skinning for Animating Non-rigid Neural Implicit Shapes.
Stars: ✭ 184 (+95.74%)
Mutual labels:  iccv, 3d-vision, iccv2021
SimpleView
Official Code for ICML 2021 paper "Revisiting Point Cloud Shape Classification with a Simple and Effective Baseline"
Stars: ✭ 95 (+1.06%)
Mutual labels:  point-cloud, 3d-vision, point-cloud-processing
simpleICP
Implementations of a rather simple version of the Iterative Closest Point algorithm in various languages.
Stars: ✭ 140 (+48.94%)
Mutual labels:  point-cloud, point-cloud-processing
MinkLocMultimodal
MinkLoc++: Lidar and Monocular Image Fusion for Place Recognition
Stars: ✭ 65 (-30.85%)
Mutual labels:  point-cloud, 3d-vision
lowshot-shapebias
Learning low-shot object classification with explicit shape bias learned from point clouds
Stars: ✭ 37 (-60.64%)
Mutual labels:  point-cloud, 3d-vision
awesome-point-cloud-deep-learning
Paper list of deep learning on point clouds.
Stars: ✭ 39 (-58.51%)
Mutual labels:  point-cloud, 3d-vision
ICCV2021-Single-Image-Desnowing-HDCWNet
This paper is accepted by ICCV 2021.
Stars: ✭ 47 (-50%)
Mutual labels:  iccv, iccv2021
DeepI2P
DeepI2P: Image-to-Point Cloud Registration via Deep Classification. CVPR 2021
Stars: ✭ 130 (+38.3%)
Mutual labels:  point-cloud, 3d-vision
MinkLoc3D
MinkLoc3D: Point Cloud Based Large-Scale Place Recognition
Stars: ✭ 83 (-11.7%)
Mutual labels:  point-cloud, 3d-vision
LEMO
Official Pytorch implementation for 2021 ICCV paper "Learning Motion Priors for 4D Human Body Capture in 3D Scenes" and trained models / data
Stars: ✭ 149 (+58.51%)
Mutual labels:  3d-vision
M3DETR
Code base for M3DeTR: Multi-representation, Multi-scale, Mutual-relation 3D Object Detection with Transformers
Stars: ✭ 47 (-50%)
Mutual labels:  point-cloud
LoFTR
Code for "LoFTR: Detector-Free Local Feature Matching with Transformers", CVPR 2021
Stars: ✭ 1,046 (+1012.77%)
Mutual labels:  3d-vision
PoinTr
[ICCV 2021 Oral] PoinTr: Diverse Point Cloud Completion with Geometry-Aware Transformers
Stars: ✭ 260 (+176.6%)
Mutual labels:  iccv2021
cpnet
Learning Video Representations from Correspondence Proposals (CVPR 2019 Oral)
Stars: ✭ 93 (-1.06%)
Mutual labels:  point-cloud
DeepCD
[ICCV17] DeepCD: Learning Deep Complementary Descriptors for Patch Representations
Stars: ✭ 39 (-58.51%)
Mutual labels:  iccv
CV Learning
Projects related to computer vision and image processing.
Stars: ✭ 20 (-78.72%)
Mutual labels:  3d-vision
costmap depth camera
This is a costmap plugin for costmap_2d pkg. This plugin supports multiple depth cameras and run in real time.
Stars: ✭ 26 (-72.34%)
Mutual labels:  point-cloud
cycle-confusion
Code and models for ICCV2021 paper "Robust Object Detection via Instance-Level Temporal Cycle Confusion".
Stars: ✭ 67 (-28.72%)
Mutual labels:  iccv2021
object nerf
Code for "Learning Object-Compositional Neural Radiance Field for Editable Scene Rendering", ICCV 2021
Stars: ✭ 135 (+43.62%)
Mutual labels:  3d-vision
ple
Probabilistic line extraction from 2-D range scan
Stars: ✭ 47 (-50%)
Mutual labels:  point-cloud-processing

CurveNet

Official implementation of "Walk in the Cloud: Learning Curves for Point Clouds Shape Analysis", ICCV 2021

PWC
PWC

Paper: https://arxiv.org/abs/2105.01288

CurveNet

Requirements

  • Python>=3.7
  • PyTorch>=1.2
  • Packages: glob, h5py, sklearn

Contents

NOTE: Please change your current directory to core/ first before excuting the following commands.

Point Cloud Classification

Data

The ModelNet40 dataset is primarily used for the classification experiments. At your first run, the program will automatically download the data if it is not in data/. Or, you can manually download the offical data and unzip to data/.

Alternatively, you can place your downloaded data anywhere you like, and link the path to DATA_DIR in core/data.py. Otherwise, the download will still be automatically triggered.

Train

Train with our default settings (same as in the paper):

python3 main_cls.py --exp_name=curvenet_cls_1

Train with customized settings with the flags: --lr, --scheduler, --batch_size.

Alternatively, you can directly modify core/start_cls.sh and simply run:

./start_cls.sh

NOTE: Our reported model achieves 93.8%/94.2% accuracy (see sections below). However, due to randomness, the best result might require repeated training processes. Hence, we also provide another benchmark result here (where we repeated 5 runs with different random seeds, and report their average), which is 93.65% accuracy.

Evaluation

Evaluate without voting:

python3 main_cls.py --exp_name=curvenet_cls_1 --eval=True --model_path=PATH_TO_YOUR_MODEL

Alternatively, you can directly modify core/test_cls.sh and simply run:

./test_cls.sh

For voting, we used the voting_evaluate_cls.pyscript provided in RSCNN. Please refer to their license for usage.

Evaluation with our pretrained model:

Please download our pretrained model cls/ at google drive.

And then run:

python3 main_cls.py --exp_name=curvenet_cls_pretrained --eval --model_path=PATH_TO_PRETRAINED/cls/models/model.t7

 

Point Cloud Part Segmentation

Data

The ShapeNet Part dataset is primarily used for the part segmentation experiments. At your first run, the program will automatically download the data if it is not in data/. Or, you can manually download the offical data and unzip to data/.

Alternatively, you can place your downloaded data anywhere you like, and link the path to DATA_DIR in core/data.py. Otherwise, the download will still be automatically triggered.

Train

Train with our default settings (same as in the paper):

python3 main_partseg.py --exp_name=curvenet_seg_1

Train with customized settings with the flags: --lr, --scheduler, --batch_size.

Alternatively, you can directly modify core/start_part.sh and simply run:

./start_part.sh

NOTE: Our reported model achieves 86.6%/86.8% mIoU (see sections below). However, due to randomness, the best result might require repeated training processes. Hence, we also provide another benchmark result here (where we repeated 5 runs with different random seeds, and report their average), which is 86.46 mIoU.

Evaluation

Evaluate without voting:

python3 main_partseg.py --exp_name=curvenet_seg_1 --eval=True --model_path=PATH_TO_YOUR_MODEL

Alternatively, you can directly modify core/test_part.sh and simply run:

./test_part.sh

For voting, we used the voting_evaluate_partseg.pyscript provided in RSCNN. Please refer to their license for usage.

Evaluation with our pretrained model:

Please download our pretrained model partseg/ at google drive.

And then run:

python3 main_partseg.py --exp_name=curvenet_seg_pretrained --eval=True --model_path=PATH_TO_PRETRAINED/partseg/models/model.t7

 

Point Cloud Normal Estimation

Data

The ModelNet40 dataset is used for the normal estimation experiments. We have preprocessed the raw ModelNet40 dataset into .h5 files. Each point cloud instance contains 2048 randomly sampled points and point-to-point normal ground truths.

Please download our processed data here and place it to data/, or you need to specify the data root path in core/data.py.

Train

Train with our default settings (same as in the paper):

python3 main_normal.py --exp_name=curvenet_normal_1

Train with customized settings with the flags: --multiplier, --lr, --scheduler, --batch_size.

Alternatively, you can directly modify core/start_normal.sh and simply run:

./start_normal.sh

Evaluation

Evaluate without voting:

python3 main_normal.py --exp_name=curvenet_normal_1 --eval=True --model_path=PATH_TO_YOUR_MODEL

Alternatively, you can directly modify core/test_normal.sh and simply run:

./test_normal.sh

Evaluation with our pretrained model:

Please download our pretrained model normal/ at google drive.

And then run:

python3 main_normal.py --exp_name=curvenet_normal_pretrained --eval=True --model_path=PATH_TO_PRETRAINED/normal/models/model.t7

 

Point Cloud Classification Under Corruptions

In a recent work, Sun et al. studied robustness of state-of-the-art point cloud processing architectures under common corruptions. CurveNet was verifed by them to be the best architecture to function on common corruptions. Please refer to their official repo for details.

Citation

If you find this repo useful in your work or research, please cite:

@InProceedings{Xiang_2021_ICCV,
    author    = {Xiang, Tiange and Zhang, Chaoyi and Song, Yang and Yu, Jianhui and Cai, Weidong},
    title     = {Walk in the Cloud: Learning Curves for Point Clouds Shape Analysis},
    booktitle = {Proceedings of the IEEE/CVF International Conference on Computer Vision (ICCV)},
    month     = {October},
    year      = {2021},
    pages     = {915-924}
}

Acknowledgement

Our code borrows a lot from:

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].