Stratified Transformer for 3D Point Cloud Segmentation (CVPR 2022)

Overview

Stratified Transformer for 3D Point Cloud Segmentation

Xin Lai*, Jianhui Liu*, Li Jiang, Liwei Wang, Hengshuang Zhao, Shu Liu, Xiaojuan Qi, Jiaya Jia

This is the official PyTorch implementation of our paper Stratified Transformer for 3D Point Cloud Segmentation that has been accepted to CVPR 2022. [arXiv]

Highlight

  1. Our method (Stratified Transformer) achieves the state-of-the-art performance on 3D point cloud semantic segmentation on both S3DIS and ScanNetv2 datasets. It is the first time for a point-based method to outperform the voxel-based ones, such as SparseConvNet and MinkowskiNet;
  2. Stratified Transformer is point-based, and constructed by Transformer with standard multi-head self-attention, enjoying large receptive field, robust generalization ability as well as competitive performance;
  3. This repository develops a memory-efficient implementation to combat the issue of variant-length tokens with several CUDA kernels, avoiding unnecessary momery occupation of vacant tokens. We also use shared memory for further acceleration.

Get Started

Environment

Install dependencies (we recommend using conda and pytorch>=1.8.0 for quick installation, but 1.6.0+ should work with this repo)

# install torch_points3d

# If you use conda and pytorch>=1.8.0, (this enables quick installation)
conda install pytorch-cluster -c pyg
conda install pytorch-sparse -c pyg
conda install pyg -c pyg
pip install torch_points3d

# Otherwise,
pip install torch_points3d

Install other dependencies

pip install tensorboard timm termcolor tensorboardX

If you meet issues with the above commands, you can also directly install the environment via pip install -r requirements.txt.

Make sure you have installed gcc and cuda, and nvcc can work (Note that if you install cuda by conda, it won't provide nvcc and you should install cuda manually.). Then, compile and install pointops2 as follows. (We have tested on gcc==7.5.0 and cuda==10.1)

cd lib/pointops2
python3 setup.py install

Datasets Preparation

S3DIS

Please refer to https://github.com/yanx27/Pointnet_Pointnet2_pytorch for S3DIS preprocessing. Then modify the data_root entry in the .yaml configuration file.

ScanNetv2

Please refer to https://github.com/dvlab-research/PointGroup for the ScanNetv2 preprocessing. Then change the data_root entry in the .yaml configuration file accordingly.

Training

S3DIS

  • Stratified Transformer
python3 train.py --config config/s3dis/s3dis_stratified_transformer.yaml
  • 3DSwin Transformer (The vanilla version shown in our paper)
python3 train.py --config config/s3dis/s3dis_swin3d_transformer.yaml

ScanNetv2

  • Stratified Transformer
python3 train.py --config config/scannetv2/scannetv2_stratified_transformer.yaml
  • 3DSwin Transformer (The vanilla version shown in our paper)
python3 train.py --config config/scannetv2/scannetv2_swin3d_transformer.yaml

Note: It is normal to see the the results on S3DIS fluctuate between -0.5% and +0.5% mIoU maybe because the size of S3DIS is relatively small, while the results on ScanNetv2 are relatively stable.

Testing

For testing, first change the model_path, save_folder and data_root_val (if applicable) accordingly. Then, run the following command.

python3 test.py --config [YOUR_CONFIG_PATH]

Pre-trained Models

For your convenience, you can download the pre-trained models and training/testing logs from Here.

Citation

If you find this project useful, please consider citing:

@inproceedings{lai2022stratified,
  title     = {Stratified Transformer for 3D Point Cloud Segmentation},
  author    = {Xin Lai, Jianhui Liu, Li Jiang, Liwei Wang, Hengshuang Zhao, Shu Liu, Xiaojuan Qi, Jiaya Jia},
  booktitle = {CVPR},
  year      = {2022}
}
Comments
  • Loss Nan

    Loss Nan

    Hi, I'm reproducing your excellent work, the loss is reached to the nan with obtained 0 mIou. Is the learning rate set incorrectly?

    aug: True base_lr: 0.006 batch_size: 8 batch_size_test: 4 batch_size_val: 4 channels: [48, 96, 192, 384] classes: 13 concat_xyz: True data_name: s3dis data_root: ../../Dataset/S3DIS/trainval_fullarea depths: [2, 2, 6, 2] dist_backend: nccl dist_url: tcp://127.0.0.1:58501 distributed: True downsample_scale: 8 drop_path_rate: 0.3 drop_rate: 0.5 epochs: 50 eval_freq: 1 evaluate: True fea_dim: 6 grid_size: 0.04 grid_sizes: [0.04, 0.08, 0.16, 0.32] ignore_label: 255 jitter_clip: 0.02 jitter_sigma: 0.005 k: 16 loop: 30 manual_seed: 123 max_batch_points: 140000 max_num_neighbors: 34 model_path: None momentum: 0.9 multiplier: 0.1 multiprocessing_distributed: True names_path: data/s3dis/s3dis_names.txt ngpus_per_node: 4 num_heads: [3, 6, 12, 24] num_layers: 4 optimizer: AdamW patch_size: 0.04 print_freq: 1 quant_size: 0.01 quant_sizes: [0.01, 0.02, 0.04, 0.08] rank: 0 ratio: 0.25 rel_key: True rel_query: True rel_value: True resume: exp/s3dis/stratified_transformer/model/model_last.pth save_folder: None save_freq: 1 save_path: exp/s3dis/stratified_transformer/model scheduler: MultiStep scheduler_update: epoch split: val start_epoch: 0 stem_transformer: True step_epoch: 30 sync_bn: True test_area: 5 test_gpu: [0] test_list: data/s3dis/list/val5.txt test_list_full: data/s3dis/list/val5_full.txt test_workers: 4 train_gpu: [0, 1, 2, 3] transformer_lr_scale: 0.1 up_k: 3 use_amp: True use_xyz: True voxel_max: 80000 voxel_size: 0.04 warmup: linear warmup_iters: 1500 warmup_ratio: 1e-06 weight: None weight_decay: 0.01 window_size: [0.16, 0.32, 0.64, 1.28] workers: 4 world_size: 4

    [06/02 00:16:07 main-logger]: Train result at epoch [23/50]: mIoU/mAcc/allAcc 0.0130/0.0769/0.1693. WARNING:root:NaN or Inf found in input tensor. [06/02 00:16:07 main-logger]: >>>>>>>>>>>>>>>> Start Evaluation >>>>>>>>>>>>>>>> [06/02 00:16:28 main-logger]: Test: [1/17] Data 4.412 (4.412) Batch 21.110 (21.110) Loss nan (nan) Accuracy 0.2793. [06/02 00:16:31 main-logger]: Test: [2/17] Data 0.002 (2.207) Batch 3.324 (12.217) Loss nan (nan) Accuracy 0.1809. [06/02 00:16:36 main-logger]: Test: [3/17] Data 0.001 (1.472) Batch 4.249 (9.561) Loss nan (nan) Accuracy 0.1969. [06/02 00:16:38 main-logger]: Test: [4/17] Data 0.001 (1.104) Batch 2.364 (7.762) Loss nan (nan) Accuracy 0.1815. [06/02 00:16:48 main-logger]: Test: [5/17] Data 0.001 (0.883) Batch 10.526 (8.314) Loss nan (nan) Accuracy 0.1848. [06/02 00:17:02 main-logger]: Test: [6/17] Data 0.001 (0.736) Batch 13.099 (9.112) Loss nan (nan) Accuracy 0.1507. [06/02 00:17:08 main-logger]: Test: [7/17] Data 0.001 (0.631) Batch 5.935 (8.658) Loss nan (nan) Accuracy 0.1931. [06/02 00:17:09 main-logger]: Test: [8/17] Data 0.001 (0.553) Batch 1.564 (7.771) Loss nan (nan) Accuracy 0.1636. [06/02 00:17:10 main-logger]: Test: [9/17] Data 0.001 (0.491) Batch 1.386 (7.062) Loss nan (nan) Accuracy 0.1597. [06/02 00:17:13 main-logger]: Test: [10/17] Data 0.000 (0.442) Batch 2.654 (6.621) Loss nan (nan) Accuracy 0.1734. [06/02 00:17:15 main-logger]: Test: [11/17] Data 0.001 (0.402) Batch 2.049 (6.205) Loss nan (nan) Accuracy 0.2362. [06/02 00:17:26 main-logger]: Test: [12/17] Data 0.001 (0.369) Batch 11.297 (6.630) Loss nan (nan) Accuracy 0.1980. [06/02 00:17:29 main-logger]: Test: [13/17] Data 0.002 (0.340) Batch 2.617 (6.321) Loss nan (nan) Accuracy 0.1651. [06/02 00:17:55 main-logger]: Test: [14/17] Data 0.001 (0.316) Batch 25.620 (7.700) Loss nan (nan) Accuracy 0.1804. [06/02 00:18:04 main-logger]: Test: [15/17] Data 0.001 (0.295) Batch 9.624 (7.828) Loss nan (nan) Accuracy 0.1890. [06/02 00:18:06 main-logger]: Test: [16/17] Data 0.001 (0.277) Batch 1.992 (7.463) Loss nan (nan) Accuracy 0.1893. [06/02 00:18:09 main-logger]: Test: [17/17] Data 0.001 (0.260) Batch 2.720 (7.184) Loss nan (nan) Accuracy 0.1934. [06/02 00:18:10 main-logger]: Val result: mIoU/mAcc/allAcc 0.0146/0.0769/0.1903. [06/02 00:18:10 main-logger]: Class_0 Result: iou/accuracy 0.1903/1.0000. [06/02 00:18:10 main-logger]: Class_1 Result: iou/accuracy 0.0000/0.0000. [06/02 00:18:10 main-logger]: Class_2 Result: iou/accuracy 0.0000/0.0000. [06/02 00:18:10 main-logger]: Class_3 Result: iou/accuracy 0.0000/0.0000. [06/02 00:18:10 main-logger]: Class_4 Result: iou/accuracy 0.0000/0.0000. [06/02 00:18:10 main-logger]: Class_5 Result: iou/accuracy 0.0000/0.0000. [06/02 00:18:10 main-logger]: Class_6 Result: iou/accuracy 0.0000/0.0000. [06/02 00:18:10 main-logger]: Class_7 Result: iou/accuracy 0.0000/0.0000. [06/02 00:18:10 main-logger]: Class_8 Result: iou/accuracy 0.0000/0.0000. [06/02 00:18:10 main-logger]: Class_9 Result: iou/accuracy 0.0000/0.0000. [06/02 00:18:10 main-logger]: Class_10 Result: iou/accuracy 0.0000/0.0000. [06/02 00:18:10 main-logger]: Class_11 Result: iou/accuracy 0.0000/0.0000. [06/02 00:18:10 main-logger]: Class_12 Result: iou/accuracy 0.0000/0.0000. [06/02 00:18:10 main-logger]: <<<<<<<<<<<<<<<<< End Evaluation <<<<<<<<<<<<<<<<< WARNING:root:NaN or Inf found in input tensor. [06/02 00:18:10 main-logger]: Saving checkpoint to: exp/s3dis/stratified_transformer/model/model_last.pth [06/02 00:18:10 main-logger]: lr: [0.006, 0.0006000000000000001] batch_size shortened from 2 to 1, points from 156591 to 80000 [06/02 00:18:20 main-logger]: Epoch: [24/50][1/765] Data 4.474 (4.474) Batch 10.469 (10.469) Remain 60:03:51 Loss nan Lr: [0.006, 0.0006] Accuracy 0.1705.

    opened by Yang-Parky 12
  • CUDA error: device-side assert triggered

    CUDA error: device-side assert triggered

    Hi, authors,

    Thanks a lot for your awesome work.

    I met this error, have you ever met it?

    RuntimeError: Caught RuntimeError in replica 0 on device 0. Original Traceback (most recent call last): File "/home/mmvc/anaconda3/envs/pytorch19/lib/python3.8/site-packages/torch/nn/parallel/parallel_apply.py", line 61, in _worker output = module(*input, **kwargs) File "/home/mmvc/anaconda3/envs/pytorch19/lib/python3.8/site-packages/torch/nn/modules/module.py", line 727, in _call_impl result = self.forward(*input, **kwargs) File "/home/mmvc/Congcong/Stratified-Transformer/model/stratified_transformer.py", line 438, in forward feats = layer(feats, xyz, batch, neighbor_idx) File "/home/mmvc/anaconda3/envs/pytorch19/lib/python3.8/site-packages/torch/nn/modules/module.py", line 727, in _call_impl result = self.forward(*input, **kwargs) File "/home/mmvc/Congcong/Stratified-Transformer/model/stratified_transformer.py", line 357, in forward feats = self.kpconv(xyz, xyz, neighbor_idx, feats) File "/home/mmvc/anaconda3/envs/pytorch19/lib/python3.8/site-packages/torch/nn/modules/module.py", line 727, in _call_impl result = self.forward(*input, **kwargs) File "/home/mmvc/anaconda3/envs/pytorch19/lib/python3.8/site-packages/torch_points3d/modules/KPConv/kernels.py", line 83, in forward new_feat = KPConv_ops( File "/home/mmvc/anaconda3/envs/pytorch19/lib/python3.8/site-packages/torch_points3d/modules/KPConv/convolution_ops.py",line 95, in KPConv_ops neighborhood_features = gather(features, neighbors_indices) File "/home/mmvc/anaconda3/envs/pytorch19/lib/python3.8/site-packages/torch_points3d/core/common_modules/gathering.py", line 10, in gather idx[idx == -1] = x.shape[0] - 1 # Shadow point RuntimeError: CUDA error: device-side assert triggered

    opened by wencc-ucas 11
  • Segmentation fault (core dumped)

    Segmentation fault (core dumped)

    Hi:

    I have install the environment now, but I have met an error. I use one GPU in the .yaml file. I have met the following error.
    

    Segmentation fault (core dumped) Have you ever met this error?

    Best.

    opened by whuhxb 10
  • Does anyone come across the problems of gcc version

    Does anyone come across the problems of gcc version

    _OSError: /lib64/libm.so.6: version `GLIBC_2.27' not found (required by /home/liy0r/anaconda3/envs/stformer/lib/python3.7/site-packages/torch_spline_conv/basis_cuda.so)

    opened by yuchenlichuck 9
  • INT_MAX error

    INT_MAX error

    Hello,

    I am encountering the following error, when using the model on larger pointclouds. I have reduced the model size and batch size, however I still get the following error.

    index_0 = p2v_map.unsqueeze(-1).expand(-1, -1, k)[mask_mat] #[M, ]
    RuntimeError: nonzero is not supported for tensors with more than INT_MAX elements,   file a support request
    

    Do you know what causes this? I havent been able to find anything useful online.

    opened by L-Reichardt 7
  • How to write test results as ply

    How to write test results as ply

    Hi, I was lucky to try your code and test it on the S3DIS dataset, also I noticed the presence of "write_ply_color" and "write_ply_rgb" but it is not obvious how to be used in the test code so, if there a way to do so, it would be appreciated. specifically, how can points argument be passed to the functions

    opened by alien19 7
  • Can anyone run the code successfully

    Can anyone run the code successfully

    Dear all, Does someone successfully install the environment? Can you share with me your version of each third-party library? It looks like there are some libs conflicts when I installed following by the readme files

    opened by yuchenlichuck 6
  • Error running train.py s3dis: The deleter and context arguments are mutually exclusive.

    Error running train.py s3dis: The deleter and context arguments are mutually exclusive.

    I have some errors when I run train.py based on your guideline on s3dis dataset. I also keep configuration files and install libraries like requirements.txt. Because I use Cuda 11.3, I install torch 1.10.0+cu113 and torch_geometric 1.10.0+cu113. Can you help me with this issue?

    [05/27 14:35:26 main-logger]: #Model parameters: 7069114 [05/27 14:35:28 main-logger]: augmentation all [05/27 14:35:28 main-logger]: jitter_sigma: 0.005, jitter_clip: 0.02 Totally 204 samples in train set. [05/27 14:35:28 main-logger]: train_data samples: '6120' Totally 67 samples in val set. [05/27 14:35:28 main-logger]: scheduler: MultiStep. scheduler_update: epoch. milestones: [60, 80], gamma: 0.1 [05/27 14:35:28 main-logger]: lr: [0.006, 0.0006000000000000001] WARNING [05/27 14:35:30 main-logger]: batch_size shortened from 2 to 1, points from 160000 to 80000 WARNING [05/27 14:35:30 main-logger]: batch_size shortened from 2 to 1, points from 160000 to 80000 WARNING [05/27 14:35:30 main-logger]: batch_size shortened from 2 to 1, points from 143440 to 63440 WARNING [05/27 14:35:31 main-logger]: batch_size shortened from 2 to 1, points from 157885 to 77885 WARNING [05/27 14:35:31 main-logger]: batch_size shortened from 2 to 1, points from 159069 to 80000 WARNING [05/27 14:35:31 main-logger]: batch_size shortened from 2 to 1, points from 160000 to 80000 torch.Size([108012, 3]) 0.0025000000000000005 WARNING [05/27 14:35:32 main-logger]: batch_size shortened from 2 to 1, points from 144512 to 80000 WARNING [05/27 14:35:32 main-logger]: batch_size shortened from 2 to 1, points from 140900 to 66523 WARNING [05/27 14:35:33 main-logger]: batch_size shortened from 2 to 1, points from 160000 to 80000 Traceback (most recent call last): File "train.py", line 543, in main() File "train.py", line 84, in main main_worker(args.train_gpu, args.ngpus_per_node, args) File "train.py", line 306, in main_worker loss_train, mIoU_train, mAcc_train, allAcc_train = train(train_loader, model, criterion, optimizer, epoch, scaler, scheduler) File "train.py", line 363, in train neighbor_idx = tp.ball_query(radius, args.max_num_neighbors, coord, coord, mode="partial_dense", batch_x=batch, batch_y=batch)[0] File "/home/pknu/anaconda3/envs/testPt/lib/python3.7/site-packages/torch_points_kernels/torchpoints.py", line 210, in ball_query return ball_query_partial_dense(radius, nsample, x, y, batch_x, batch_y, sort=sort) File "/home/pknu/anaconda3/envs/testPt/lib/python3.7/site-packages/torch_points_kernels/torchpoints.py", line 167, in ball_query_partial_dense ind, dist = tpcpu.batch_ball_query(x, y, batch_x, batch_y, radius, nsample, mode=0, sorted=sort) ValueError: The deleter and context arguments are mutually exclusive.

    opened by anhthuan1999 5
  • C/h template

    C/h template

    Quick question, why did you decide to make C/h a template parameter rather than just passing it as a parameter to the func?

    https://github.com/dvlab-research/Stratified-Transformer/blob/7b2a09218b4362db56a63d065a1e260c8deffd63/lib/pointops2/src/attention_v2/attention_cuda_kernel_v2.cu#L135-L144

    opened by kabouzeid 4
  • stratified_transformer.py, stratified calss , forward function inputs ?

    stratified_transformer.py, stratified calss , forward function inputs ?

    forward function for class Stratified takes these variables as input: features, xyz, offset and batch could you please explain what are these inputs refer to ? I wanna apply this architecture to a different computer vision task with different dataset, I know what are the features and xyz but what is offset?

    thank you so much in advance..

    opened by RokiaAbdeen 4
  • some question about 'n_max'

    some question about 'n_max'

    Hi @X-Lai , Thanks for the released code.

    I am just wondering that why the 'n_max' need to be less than 1024, as you coded in class AttentionStep1_v2(Function). When I note the code 'assert n_max <= 1024', there will be an CUDA error: invalid configuration argument. (I think it is due to the limitation for 'n_max')

    Sorry that I'm not familiar with CUDA C++ coding. So, is there some solution to break the limitation for 'n_max'? Could you give me some advice?

    It could be very nice that you leave me a email address, which could be convenient for discussion. Here is mine: [email protected]

    Wish every success in your work.

    opened by Ultra11nstinct 4
  • DataParallel error -> RuntimeError: Caught RuntimeError in replica 0 on device 0

    DataParallel error -> RuntimeError: Caught RuntimeError in replica 0 on device 0

    I am not able to use your code with multi GPU training using nn.(DataParallel) error. The code is running fine when I do - model = torch.nn.DataParallel(model.cuda()) ----> model = model.cuda()

    Have you tried using the code with DataParallel enabled?

    Log snippets -

    output = net(feat, coord, offset, batch, neighbor_idx) File "/home/prem/anaconda3/envs/alpha/lib/python3.7/site-packages/torch/nn/modules/module.py", line 1051, in _call_impl return forward_call(*input, **kwargs) File "/home/prem/anaconda3/envs/alpha/lib/python3.7/site-packages/torch/nn/parallel/data_parallel.py", line 168, in forward outputs = self.parallel_apply(replicas, inputs, kwargs) File "/home/prem/anaconda3/envs/alpha/lib/python3.7/site-packages/torch/nn/parallel/data_parallel.py", line 178, in parallel_apply return parallel_apply(replicas, inputs, kwargs, self.device_ids[:len(replicas)]) File "/home/prem/anaconda3/envs/alpha/lib/python3.7/site-packages/torch/nn/parallel/parallel_apply.py", line 86, in parallel_apply output.reraise() File "/home/prem/anaconda3/envs/alpha/lib/python3.7/site-packages/torch/_utils.py", line 425, in reraise raise self.exc_type(msg) RuntimeError: Caught RuntimeError in replica 0 on device 0.

    opened by praj441 0
  • No such file or directory: 'data/s3dis/s3dis_names.txt'

    No such file or directory: 'data/s3dis/s3dis_names.txt'

    When I run python test.py --config config/s3dis/s3dis_stratified_transformer.yaml, I encounter the problem and I do not know where to get the s3dis_names.txt. As well as the 'dataset/s3dis/list/val5.txt' and 'dataset/s3dis/list/val5_full.txt', I do not know where to get. The original dataset do not contains the file and the processed file by pointnet2 also do not generate them. What shall I do.

    opened by THHHomas 0
  • ERROR: No matching distribution found for setuptools==50.3.1.post20201107

    ERROR: No matching distribution found for setuptools==50.3.1.post20201107

    when i run pip install -r requirements.txt,error coming,my environment is python3.8 ERROR: Could not find a version that satisfies the requirement setuptools==50.3.1.post20201107 (from versions: 0.6b1, 0.6b2, 0.6b3, 0.6b4, 0.6rc1, 0.6rc2, 0.6rc3, 0.6rc4, 0.6rc5, 0.6rc6, 0.6rc7, 0.6rc8, 0.6rc9, 0.6rc10, 0.6rc11, 0.7.2, 0.7.3, 0.7.4, 0.7.5, 0.7.6, 0.7.7, 0.7.8, 0.8, 0.9, 0.9.1, 0.9.2, 0.9.3, 0.9.4, 0.9.5, 0.9.6, 0.9.7, 0.9.8, 1.0, 1.1, 1.1.1, 1.1.2, 1.1.3, 1.1.4, 1.1.5, 1.1.6, 1.1.7, 1.2, 1.3, 1.3.1, 1.3.2, 1.4, 1.4.1, 1.4.2, 2.0, 2.0.1, 2.0.2, 2.1, 2.1.1, 2.1.2, 2.2, 3.0, 3.0.1, 3.0.2, 3.1, 3.2, 3.3, 3.4, 3.4.1, 3.4.2, 3.4.3, 3.4.4, 3.5, 3.5.1, 3.5.2, 3.6, 3.7, 3.7.1, 3.8, 3.8.1, 4.0, 4.0.1, 5.0, 5.0.1, 5.0.2, 5.1, 5.2, 5.3, 5.4, 5.4.1, 5.4.2, 5.5, 5.5.1, 5.6, 5.7, 5.8, 6.0.1, 6.0.2, 6.1, 7.0, 8.0, 8.0.1, 8.0.2, 8.0.3, 8.0.4, 8.1, 8.2, 8.2.1, 8.3, 9.0, 9.0.1, 9.1, 10.0, 10.0.1, 10.1, 10.2, 10.2.1, 11.0, 11.1, 11.2, 11.3, 11.3.1, 12.0, 12.0.1, 12.0.2, 12.0.3, 12.0.4, 12.0.5, 12.1, 12.2, 12.3, 12.4, 13.0.1, 13.0.2, 14.0, 14.1, 14.1.1, 14.2, 14.3, 14.3.1, 15.0, 15.1, 15.2, 16.0, 17.0, 17.1, 17.1.1, 18.0, 18.0.1, 18.1, 18.2, 18.3, 18.3.1, 18.3.2, 18.4, 18.5, 18.6, 18.6.1, 18.7, 18.7.1, 18.8, 18.8.1, 19.0, 19.1, 19.1.1, 19.2, 19.3, 19.4, 19.4.1, 19.5, 19.6, 19.6.1, 19.6.2, 19.7, 20.0, 20.1, 20.1.1, 20.2.2, 20.3, 20.3.1, 20.4, 20.6.6, 20.6.7, 20.6.8, 20.7.0, 20.8.0, 20.8.1, 20.9.0, 20.10.1, 21.0.0, 21.1.0, 21.2.0, 21.2.1, 21.2.2, 22.0.0, 22.0.1, 22.0.2, 22.0.4, 22.0.5, 23.0.0, 23.1.0, 23.2.0, 23.2.1, 24.0.0, 24.0.1, 24.0.2, 24.0.3, 24.1.0, 24.1.1, 24.2.0, 24.2.1, 24.3.0, 24.3.1, 25.0.0, 25.0.1, 25.0.2, 25.1.0, 25.1.1, 25.1.2, 25.1.3, 25.1.4, 25.1.5, 25.1.6, 25.2.0, 25.3.0, 25.4.0, 26.0.0, 26.1.0, 26.1.1, 27.0.0, 27.1.0, 27.1.2, 27.2.0, 27.3.0, 27.3.1, 28.0.0, 28.1.0, 28.2.0, 28.3.0, 28.4.0, 28.5.0, 28.6.0, 28.6.1, 28.7.0, 28.7.1, 28.8.0, 28.8.1, 29.0.0, 29.0.1, 30.0.0, 30.1.0, 30.2.0, 30.2.1, 30.3.0, 30.4.0, 31.0.0, 31.0.1, 32.0.0, 32.1.0, 32.1.1, 32.1.2, 32.1.3, 32.2.0, 32.3.0, 32.3.1, 33.1.0, 33.1.1, 34.0.0, 34.0.1, 34.0.2, 34.0.3, 34.1.0, 34.1.1, 34.2.0, 34.3.0, 34.3.1, 34.3.2, 34.3.3, 34.4.0, 34.4.1, 35.0.0, 35.0.1, 35.0.2, 36.0.1, 36.1.0, 36.1.1, 36.2.0, 36.2.1, 36.2.2, 36.2.3, 36.2.4, 36.2.5, 36.2.6, 36.2.7, 36.3.0, 36.4.0, 36.5.0, 36.6.0, 36.6.1, 36.7.0, 36.7.1, 36.7.2, 36.8.0, 37.0.0, 38.0.0, 38.1.0, 38.2.0, 38.2.1, 38.2.3, 38.2.4, 38.2.5, 38.3.0, 38.4.0, 38.4.1, 38.5.0, 38.5.1, 38.5.2, 38.6.0, 38.6.1, 38.7.0, 39.0.0, 39.0.1, 39.1.0, 39.2.0, 40.0.0, 40.1.0, 40.1.1, 40.2.0, 40.3.0, 40.4.0, 40.4.1, 40.4.2, 40.4.3, 40.5.0, 40.6.0, 40.6.1, 40.6.2, 40.6.3, 40.7.0, 40.7.1, 40.7.2, 40.7.3, 40.8.0, 40.9.0, 41.0.0, 41.0.1, 41.1.0, 41.2.0, 41.3.0, 41.4.0, 41.5.0, 41.5.1, 41.6.0, 42.0.0, 42.0.1, 42.0.2, 43.0.0, 44.0.0, 44.1.0, 44.1.1, 45.0.0, 45.1.0, 45.2.0, 45.3.0, 46.0.0, 46.1.0, 46.1.1, 46.1.2, 46.1.3, 46.2.0, 46.3.0, 46.3.1, 46.4.0, 47.0.0, 47.1.0, 47.1.1, 47.2.0, 47.3.0, 47.3.1, 47.3.2, 48.0.0, 49.0.0, 49.0.1, 49.1.0, 49.1.1, 49.1.2, 49.1.3, 49.2.0, 49.2.1, 49.3.0, 49.3.1, 49.3.2, 49.4.0, 49.5.0, 49.6.0, 50.0.0, 50.0.1, 50.0.2, 50.0.3, 50.1.0, 50.2.0, 50.3.0, 50.3.1, 50.3.2, 51.0.0, 51.1.0, 51.1.0.post20201221, 51.1.1, 51.1.2, 51.2.0, 51.3.0, 51.3.1, 51.3.2, 51.3.3, 52.0.0, 53.0.0, 53.1.0, 54.0.0, 54.1.0, 54.1.1, 54.1.2, 54.1.3, 54.2.0, 56.0.0, 56.1.0, 56.2.0, 57.0.0, 57.1.0, 57.2.0, 57.3.0, 57.4.0, 57.5.0, 58.0.0, 58.0.1, 58.0.2, 58.0.3, 58.0.4, 58.1.0, 58.2.0, 58.3.0, 58.4.0, 58.5.0, 58.5.1, 58.5.2, 58.5.3, 59.0.1, 59.1.0, 59.1.1, 59.2.0, 59.3.0, 59.4.0, 59.5.0, 59.6.0, 59.7.0, 59.8.0, 60.0.0, 60.0.1, 60.0.2, 60.0.3, 60.0.4, 60.0.5, 60.1.0, 60.1.1, 60.2.0, 60.3.0, 60.3.1, 60.4.0, 60.5.0, 60.6.0, 60.7.0, 60.7.1, 60.8.0, 60.8.1, 60.8.2, 60.9.0, 60.9.1, 60.9.2, 60.9.3, 60.10.0, 61.0.0, 61.1.0, 61.1.1, 61.2.0, 61.3.0, 61.3.1, 62.0.0, 62.1.0, 62.2.0, 62.3.0, 62.3.1, 62.3.2, 62.3.3, 62.3.4, 62.4.0, 62.5.0, 62.6.0, 63.0.0b1, 63.0.0, 63.1.0, 63.2.0, 63.3.0, 63.4.0, 63.4.1, 63.4.2, 63.4.3, 64.0.0, 64.0.1, 64.0.2, 64.0.3, 65.0.0, 65.0.1, 65.0.2, 65.1.0, 65.1.1, 65.2.0, 65.3.0, 65.4.0, 65.4.1, 65.5.0, 65.5.1, 65.6.0, 65.6.1, 65.6.2, 65.6.3) ERROR: No matching distribution found for setuptools==50.3.1.post20201107

    opened by Lizhijian-123 1
  • Data out of range in 'get_indice_pairs' fuction

    Data out of range in 'get_indice_pairs' fuction

    Thank you for your contribution. I encountered a problem in 'get_indice_pairs' function, when code running in here ,I saw the last value of 'downsample_idx' is 34883 and the width of 'downsample_mask' is 34883. It's out of range obviously.

    I have no idea about this issue, I saw 'downsample_idx' is got from FPS, I don't know why it gets the last point of point cloud. image image

    opened by Machinerr 0
  • Environment Bug

    Environment Bug

    When numpy==1.19.5, importing SharedArray will cause a error of low numpy version. When increasing the numpy version, it cannot meet the requirements of torch-point3d-1.3.0 numpy version

    opened by mttbyte 1
Owner
DV Lab
Deep Vision Lab
DV Lab
Style-based Point Generator with Adversarial Rendering for Point Cloud Completion (CVPR 2021)

Style-based Point Generator with Adversarial Rendering for Point Cloud Completion (CVPR 2021) An efficient PyTorch library for Point Cloud Completion.

Microsoft 119 Jan 2, 2023
Implementation of the "Point 4D Transformer Networks for Spatio-Temporal Modeling in Point Cloud Videos" paper.

Point 4D Transformer Networks for Spatio-Temporal Modeling in Point Cloud Videos Introduction Point cloud videos exhibit irregularities and lack of or

Hehe Fan 101 Dec 29, 2022
[ICCV 2021 Oral] SnowflakeNet: Point Cloud Completion by Snowflake Point Deconvolution with Skip-Transformer

This repository contains the source code for the paper SnowflakeNet: Point Cloud Completion by Snowflake Point Deconvolution with Skip-Transformer (ICCV 2021 Oral). The project page is here.

AllenXiang 65 Dec 26, 2022
Not All Points Are Equal: Learning Highly Efficient Point-based Detectors for 3D LiDAR Point Clouds (CVPR 2022, Oral)

Not All Points Are Equal: Learning Highly Efficient Point-based Detectors for 3D LiDAR Point Clouds (CVPR 2022, Oral) This is the official implementat

Yifan Zhang 259 Dec 25, 2022
[CVPR 2021] Few-shot 3D Point Cloud Semantic Segmentation

Few-shot 3D Point Cloud Semantic Segmentation Created by Na Zhao from National University of Singapore Introduction This repository contains the PyTor

null 117 Dec 27, 2022
Semantic Segmentation for Real Point Cloud Scenes via Bilateral Augmentation and Adaptive Fusion (CVPR 2021)

Semantic Segmentation for Real Point Cloud Scenes via Bilateral Augmentation and Adaptive Fusion (CVPR 2021) This repository is for BAAF-Net introduce

null 90 Dec 29, 2022
Official source code of Fast Point Transformer, CVPR 2022

Fast Point Transformer Project Page | Paper This repository contains the official source code and data for our paper: Fast Point Transformer Chunghyun

null 182 Dec 23, 2022
Voxel Set Transformer: A Set-to-Set Approach to 3D Object Detection from Point Clouds (CVPR 2022)

Voxel Set Transformer: A Set-to-Set Approach to 3D Object Detection from Point Clouds (CVPR2022)[paper] Authors: Chenhang He, Ruihuang Li, Shuai Li, L

Billy HE 141 Dec 30, 2022
[CVPR 2022] CoTTA Code for our CVPR 2022 paper Continual Test-Time Domain Adaptation

CoTTA Code for our CVPR 2022 paper Continual Test-Time Domain Adaptation Prerequisite Please create and activate the following conda envrionment. To r

Qin Wang 87 Jan 8, 2023
Implementation of the "PSTNet: Point Spatio-Temporal Convolution on Point Cloud Sequences" paper.

PSTNet: Point Spatio-Temporal Convolution on Point Cloud Sequences Introduction Point cloud sequences are irregular and unordered in the spatial dimen

Hehe Fan 63 Dec 9, 2022
Synthetic LiDAR sequential point cloud dataset with point-wise annotations

SynLiDAR dataset: Learning From Synthetic LiDAR Sequential Point Cloud This is official repository of the SynLiDAR dataset. For technical details, ple

null 78 Dec 27, 2022
Temporally Efficient Vision Transformer for Video Instance Segmentation, CVPR 2022, Oral

Temporally Efficient Vision Transformer for Video Instance Segmentation Temporally Efficient Vision Transformer for Video Instance Segmentation (CVPR

Hust Visual Learning Team 203 Dec 31, 2022
Code for "PV-RAFT: Point-Voxel Correlation Fields for Scene Flow Estimation of Point Clouds", CVPR 2021

PV-RAFT This repository contains the PyTorch implementation for paper "PV-RAFT: Point-Voxel Correlation Fields for Scene Flow Estimation of Point Clou

Yi Wei 43 Dec 5, 2022
PointNetVLAD: Deep Point Cloud Based Retrieval for Large-Scale Place Recognition, CVPR 2018

PointNetVLAD: Deep Point Cloud Based Retrieval for Large-Scale Place Recognition PointNetVLAD: Deep Point Cloud Based Retrieval for Large-Scale Place

Mikaela Uy 294 Dec 12, 2022
PointRCNN: 3D Object Proposal Generation and Detection from Point Cloud, CVPR 2019.

PointRCNN PointRCNN: 3D Object Proposal Generation and Detection from Point Cloud Code release for the paper PointRCNN:3D Object Proposal Generation a

Shaoshuai Shi 1.5k Dec 27, 2022
Pytorch implementation of PCT: Point Cloud Transformer

PCT: Point Cloud Transformer This is a Pytorch implementation of PCT: Point Cloud Transformer.

Yi_Zhang 265 Dec 22, 2022
Jittor implementation of PCT:Point Cloud Transformer

PCT: Point Cloud Transformer This is a Jittor implementation of PCT: Point Cloud Transformer.

MenghaoGuo 547 Jan 3, 2023
GeoTransformer - Geometric Transformer for Fast and Robust Point Cloud Registration

Geometric Transformer for Fast and Robust Point Cloud Registration PyTorch imple

Zheng Qin 220 Jan 5, 2023
Unofficial implementation of Point-Unet: A Context-Aware Point-Based Neural Network for Volumetric Segmentation

Point-Unet This is an unofficial implementation of the MICCAI 2021 paper Point-Unet: A Context-Aware Point-Based Neural Network for Volumetric Segment

Namt0d 9 Dec 7, 2022