Giter Club home page Giter Club logo

point-transformer's People

Contributors

chrockey avatar hmyang0727 avatar junha-l avatar kwonyoung9120 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

point-transformer's Issues

Reproducibility

Hello,

I tried to reproduce the results of Point Transformer for semantic segmentation using your repository, and I could not reach the reported 70 mIoU on S3DIS Area 5. I used the data from PAConv and PointWeb and reach 67.5 mIoU for the best model and 68 mIoU for the last model.

Can you please provide a pretrained model or at least the evaluation log.

Best regards,
Hani

How to solve this error? No module named "SharedArray"

Hi, how to solve this error? I have use the command: pip install SharedArray, but the error still occurs.

point-transformer_repro/util/s3dis.py", line 4, in
import SharedArray as SA
ModuleNotFoundError: No module named 'SharedArray'

Thanks a lot.

Clarification for pointops.queryandgroup function

Hello, thank you for the clean codebase! I have a question regarding the pointops.queryandgroup function. In particular, in the following line, we notice that the newly grouped points of shape (m, n_sample, 3) are being subtracted from the points of shape (m, 1, 3):

grouped_xyz -= new_xyz.unsqueeze(1) # (m, nsample, 3)

What is the reason for doing this subtraction?

Also, specifically for the TransitionDown block of the PointTransformer architecture, this subtracted group of points is concatenated to the final grouped features (use_xyz=True option in the function call). Is this 100% correct? Because there is no mention of that in the PointTransformer paper.

Thank you very much!
Konstantinos

Use the all points cloud

I found one of the big differences from the previous method is that you use the whole points of the s3dis instance. It looks like it significantly improves the performance, does it?

NaN Loss

Hi,
first of all thank you for the great repository and the efficient implementation. Does someone else encounter a NaN loss due to the sum operation in the TransitionUP module of the decoder 5. I removed the two linear layers and the training works fine. Please comment if you solved the issue.

Question about positional embedding

Hi,

Thanks for sharing the repo. I am quite confused about the positional embedding:
p_r = layer(p_r.transpose(1, 2).contiguous()).transpose(1, 2).contiguous() if i == 1 else layer(p_r)

I don't know why the input of the first layer is the transpose(1,2) of p_r. Since the size of p_r should be (n, nsample, 3), why not directly feed it into the embedding block.

Thanks,

Empty S3DIS data link

Hi, thanks for providing nice code.
But the Google Driver Link is empty, Can you provide a new link?
I also find the dataset from PAConv, which link is also invalid.

why use input shape as "pxo"?

Hi, thanks very much for your excellent codes. But I am curious about the input shape of Transformer layer, as depicted in the following picture. I am confused that there is no batch dimension, and what is o(offset)? In other papers, the point cloud shape is usually represented as (B C N) or (B N C), which is easy to understand. But I got confusion when reading your codes. Hoping to your guide!

pt

How is the structure of features in the dataset?

I don't understand the structure of the dataset, how a point in the dataset is described. A point is described with 9 features. What are these features, and how can the network train with its own data set?

Building error with point_transformer_ops

Hi,
I use python 3.7, cuda10.1, pytorch 1.7.1 to build the point_transformer_ops, but there are a lot of errors. It uses the default CUDA 9.0, and the compling has error with nvcc fatal : Unsupported gpu architecture 'compute_75'. How to deal with these errors? Thanks.

No CUDA runtime is found, using CUDA_HOME='/cm/shared/apps/cuda90/toolkit/9.0.176'
running install
running build
running build_py
creating build
creating build/lib.linux-x86_64-3.7
creating build/lib.linux-x86_64-3.7/point_transformer_ops
copying point_transformer_ops/__init__.py -> build/lib.linux-x86_64-3.7/point_transformer_ops
copying point_transformer_ops/point_transformer_modules.py -> build/lib.linux-x86_64-3.7/point_transformer_ops
copying point_transformer_ops/_version.py -> build/lib.linux-x86_64-3.7/point_transformer_ops
copying point_transformer_ops/point_transformer_utils.py -> build/lib.linux-x86_64-3.7/point_transformer_ops
running egg_info
writing point_transformer_ops.egg-info/PKG-INFO
writing dependency_links to point_transformer_ops.egg-info/dependency_links.txt
writing requirements to point_transformer_ops.egg-info/requires.txt
writing top-level names to point_transformer_ops.egg-info/top_level.txt
reading manifest file 'point_transformer_ops.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
writing manifest file 'point_transformer_ops.egg-info/SOURCES.txt'
creating build/lib.linux-x86_64-3.7/point_transformer_ops/_ext-src
creating build/lib.linux-x86_64-3.7/point_transformer_ops/_ext-src/include
copying point_transformer_ops/_ext-src/include/ball_query.h -> build/lib.linux-x86_64-3.7/point_transformer_ops/_ext-src/include
copying point_transformer_ops/_ext-src/include/cuda_utils.h -> build/lib.linux-x86_64-3.7/point_transformer_ops/_ext-src/include
copying point_transformer_ops/_ext-src/include/group_points.h -> build/lib.linux-x86_64-3.7/point_transformer_ops/_ext-src/include
copying point_transformer_ops/_ext-src/include/interpolate.h -> build/lib.linux-x86_64-3.7/point_transformer_ops/_ext-src/include
copying point_transformer_ops/_ext-src/include/sampling.h -> build/lib.linux-x86_64-3.7/point_transformer_ops/_ext-src/include
copying point_transformer_ops/_ext-src/include/utils.h -> build/lib.linux-x86_64-3.7/point_transformer_ops/_ext-src/include
creating build/lib.linux-x86_64-3.7/point_transformer_ops/_ext-src/src
copying point_transformer_ops/_ext-src/src/ball_query.cpp -> build/lib.linux-x86_64-3.7/point_transformer_ops/_ext-src/src
copying point_transformer_ops/_ext-src/src/ball_query_gpu.cu -> build/lib.linux-x86_64-3.7/point_transformer_ops/_ext-src/src
copying point_transformer_ops/_ext-src/src/bindings.cpp -> build/lib.linux-x86_64-3.7/point_transformer_ops/_ext-src/src
copying point_transformer_ops/_ext-src/src/group_points.cpp -> build/lib.linux-x86_64-3.7/point_transformer_ops/_ext-src/src
copying point_transformer_ops/_ext-src/src/group_points_gpu.cu -> build/lib.linux-x86_64-3.7/point_transformer_ops/_ext-src/src
copying point_transformer_ops/_ext-src/src/interpolate.cpp -> build/lib.linux-x86_64-3.7/point_transformer_ops/_ext-src/src
copying point_transformer_ops/_ext-src/src/interpolate_gpu.cu -> build/lib.linux-x86_64-3.7/point_transformer_ops/_ext-src/src
copying point_transformer_ops/_ext-src/src/sampling.cpp -> build/lib.linux-x86_64-3.7/point_transformer_ops/_ext-src/src
copying point_transformer_ops/_ext-src/src/sampling_gpu.cu -> build/lib.linux-x86_64-3.7/point_transformer_ops/_ext-src/src
running build_ext
building 'point_transformer_ops._ext' extension
creating /tmp/pip-req-build-comdcmt1/build/temp.linux-x86_64-3.7
creating /tmp/pip-req-build-comdcmt1/build/temp.linux-x86_64-3.7/point_transformer_ops
creating /tmp/pip-req-build-comdcmt1/build/temp.linux-x86_64-3.7/point_transformer_ops/_ext-src
creating /tmp/pip-req-build-comdcmt1/build/temp.linux-x86_64-3.7/point_transformer_ops/_ext-src/src
Emitting ninja build file /tmp/pip-req-build-comdcmt1/build/temp.linux-x86_64-3.7/build.ninja...
Compiling objects...
Allowing ninja to set a default number of workers... (overridable by setting the environment variable MAX_JOBS=N)
[1/9] /cm/shared/apps/cuda90/toolkit/9.0.176/bin/nvcc -I/tmp/pip-req-build-comdcmt1/point_transformer_ops/_ext-src/include -I/export/home/hanxiaobing/anaconda3/envs/pytorch-Point-Transformer/lib/python3.7/site-packages/torch/include -I/export/home/hanxiaobing/anaconda3/envs/pytorch-Point-Transformer/lib/python3.7/site-packages/torch/include/torch/csrc/api/include -I/export/home/hanxiaobing/anaconda3/envs/pytorch-Point-Transformer/lib/python3.7/site-packages/torch/include/TH -I/export/home/hanxiaobing/anaconda3/envs/pytorch-Point-Transformer/lib/python3.7/site-packages/torch/include/THC -I/cm/shared/apps/cuda90/toolkit/9.0.176/include -I/export/home/hanxiaobing/anaconda3/envs/pytorch-Point-Transformer/include/python3.7m -c -c /tmp/pip-req-build-comdcmt1/point_transformer_ops/_ext-src/src/interpolate_gpu.cu -o /tmp/pip-req-build-comdcmt1/build/temp.linux-x86_64-3.7/point_transformer_ops/_ext-src/src/interpolate_gpu.o -D__CUDA_NO_HALF_OPERATORS__ -D__CUDA_NO_HALF_CONVERSIONS__ -D__CUDA_NO_HALF2_OPERATORS__ --expt-relaxed-constexpr --compiler-options ''"'"'-fPIC'"'"'' -O3 -Xfatbin -compress-all -DTORCH_API_INCLUDE_EXTENSION_H '-DPYBIND11_COMPILER_TYPE="_gcc"' '-DPYBIND11_STDLIB="_libstdcpp"' '-DPYBIND11_BUILD_ABI="_cxxabi1011"' -DTORCH_EXTENSION_NAME=_ext -D_GLIBCXX_USE_CXX11_ABI=0 -gencode=arch=compute_37,code=sm_37 -gencode=arch=compute_60,code=sm_60 -gencode=arch=compute_62,code=sm_62 -gencode=arch=compute_75,code=sm_75 -gencode=arch=compute_50,code=sm_50 -gencode=arch=compute_61,code=sm_61 -gencode=arch=compute_70,code=sm_70 -gencode=arch=compute_37,code=compute_37 -std=c++14
FAILED: /tmp/pip-req-build-comdcmt1/build/temp.linux-x86_64-3.7/point_transformer_ops/_ext-src/src/interpolate_gpu.o
/cm/shared/apps/cuda90/toolkit/9.0.176/bin/nvcc -I/tmp/pip-req-build-comdcmt1/point_transformer_ops/_ext-src/include -I/export/home/hanxiaobing/anaconda3/envs/pytorch-Point-Transformer/lib/python3.7/site-packages/torch/include -I/export/home/hanxiaobing/anaconda3/envs/pytorch-Point-Transformer/lib/python3.7/site-packages/torch/include/torch/csrc/api/include -I/export/home/hanxiaobing/anaconda3/envs/pytorch-Point-Transformer/lib/python3.7/site-packages/torch/include/TH -I/export/home/hanxiaobing/anaconda3/envs/pytorch-Point-Transformer/lib/python3.7/site-packages/torch/include/THC -I/cm/shared/apps/cuda90/toolkit/9.0.176/include -I/export/home/hanxiaobing/anaconda3/envs/pytorch-Point-Transformer/include/python3.7m -c -c /tmp/pip-req-build-comdcmt1/point_transformer_ops/_ext-src/src/interpolate_gpu.cu -o /tmp/pip-req-build-comdcmt1/build/temp.linux-x86_64-3.7/point_transformer_ops/_ext-src/src/interpolate_gpu.o -D__CUDA_NO_HALF_OPERATORS__ -D__CUDA_NO_HALF_CONVERSIONS__ -D__CUDA_NO_HALF2_OPERATORS__ --expt-relaxed-constexpr --compiler-options ''"'"'-fPIC'"'"'' -O3 -Xfatbin -compress-all -DTORCH_API_INCLUDE_EXTENSION_H '-DPYBIND11_COMPILER_TYPE="_gcc"' '-DPYBIND11_STDLIB="_libstdcpp"' '-DPYBIND11_BUILD_ABI="_cxxabi1011"' -DTORCH_EXTENSION_NAME=_ext -D_GLIBCXX_USE_CXX11_ABI=0 -gencode=arch=compute_37,code=sm_37 -gencode=arch=compute_60,code=sm_60 -gencode=arch=compute_62,code=sm_62 -gencode=arch=compute_75,code=sm_75 -gencode=arch=compute_50,code=sm_50 -gencode=arch=compute_61,code=sm_61 -gencode=arch=compute_70,code=sm_70 -gencode=arch=compute_37,code=compute_37 -std=c++14
nvcc fatal   : Unsupported gpu architecture 'compute_75'

undefined symbol: _ZNK2at10TensorBase8data_ptrIfEEPT_v

hi! when I run the train.py at line 88 mp.spawn(main_workers,nprocs=args.ngpus_per_node, args=(args.ngpus_per_node, args)),I got an error .Do you know how to solve it?
ImportError: /home/xjw/anaconda3/envs/pointtransformer/lib/python3.7/site-packages/pointops-0.0.0-py3.7-linux-x86_64.egg/pointops_cuda.cpython-37m-x86_64-linux-gnu.so: undefined symbol: _ZNK2at10TensorBase8data_ptrIfEEPT_v

A lightweight Cylinder3D model with much higher performance is now available!!!

Recently, we have released a lightweight Cylinder3D model with much higher performance here. In this codebase, the reproduced Cylinder3D model is 2.9 point higher than the original Cylinder3D model in SemanticKITTI test set (single-scan). Besides, the released models achieve competitive performance in three benchmarks, i.e., ranks 1st in Waymo 3D Semantic Segmentation Challenge, ranks 1st in SemanticKITTI LiDAR Semantic Segmentation Challenge (single-scan) and ranks 2nd in SemanticKITTI LiDAR Semantic Segmentation Challenge (multi-scan). The trained model has been used in one NeurIPS 2022 submission! More LiDAR semantic segmentation models will be supported in the future. Do not hesitate to use the trained models!

Confuse about attention calculating process

Hi. It is a nice work!
But I'm confused about the attention calculating process?
In the original Transformer, the attention matrix is calculated by q*k. But in your paper and code, you use q-k instead.
What's the reason for that? Are there any other papers also using this method to calculate attention matrix?
image

Trouble executing S3DIS : No module named 'pointops_cuda'

Hello,

I am having an error when executing the semantic segmentation on S3DIS with the command given in the readme :

Totally 204 samples in train set.
Totally 68 samples in val set.
Traceback (most recent call last):
  File "/home/user/Documents/git_zip/point-transformer/exp/s3dis/pointtransformer_repro/train.py", line 371, in <module>
    main()
  File "/home/user/Documents/git_zip/point-transformer/exp/s3dis/pointtransformer_repro/train.py", line 88, in main
    mp.spawn(main_worker, nprocs=args.ngpus_per_node, args=(args.ngpus_per_node, args))
  File "/home/user/anaconda3/lib/python3.9/site-packages/torch/multiprocessing/spawn.py", line 230, in spawn
    return start_processes(fn, args, nprocs, join, daemon, start_method='spawn')
  File "/home/user/anaconda3/lib/python3.9/site-packages/torch/multiprocessing/spawn.py", line 188, in start_processes
    while not context.join():
  File "/home/user/anaconda3/lib/python3.9/site-packages/torch/multiprocessing/spawn.py", line 150, in join
    raise ProcessRaisedException(msg, error_index, failed_process.pid)
torch.multiprocessing.spawn.ProcessRaisedException: 

-- Process 0 terminated with the following error:
Traceback (most recent call last):
  File "/home/user/anaconda3/lib/python3.9/site-packages/torch/multiprocessing/spawn.py", line 59, in _wrap
    fn(i, *args)
  File "/home/user/Documents/git_zip/point-transformer/exp/s3dis/pointtransformer_repro/train.py", line 104, in main_worker
    from model.pointtransformer.pointtransformer_seg import pointtransformer_seg_repro as Model
  File "/home/user/Documents/git_zip/point-transformer/model/pointtransformer/pointtransformer_seg.py", line 4, in <module>
    from lib.pointops.functions import pointops
  File "/home/user/Documents/git_zip/point-transformer/lib/pointops/functions/pointops.py", line 7, in <module>
    import pointops_cuda
ModuleNotFoundError: No module named 'pointops_cuda'

Normally, there was no error during compilation of point ops :

running install
running bdist_egg
running egg_info
writing pointops.egg-info/PKG-INFO
writing dependency_links to pointops.egg-info/dependency_links.txt
writing top-level names to pointops.egg-info/top_level.txt
reading manifest file 'pointops.egg-info/SOURCES.txt'
writing manifest file 'pointops.egg-info/SOURCES.txt'
installing library code to build/bdist.linux-x86_64/egg
running install_lib
running build_ext
building 'pointops_cuda' extension
Emitting ninja build file /home/user/Documents/git_zip/point-transformer/lib/pointops/build/temp.linux-x86_64-3.7/build.ninja...
Compiling objects...
Allowing ninja to set a default number of workers... (overridable by setting the environment variable MAX_JOBS=N)
[1/13] c++ -MMD -MF /home/user/Documents/git_zip/point-transformer/lib/pointops/build/temp.linux-x86_64-3.7/src/aggregation/aggregation_cuda.o.d -pthread -B /home/user/anaconda3/envs/pt/compiler_compat -Wl,--sysroot=/ -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -I/home/user/anaconda3/envs/pt/lib/python3.7/site-packages/torch/include -I/home/user/anaconda3/envs/pt/lib/python3.7/site-packages/torch/include/torch/csrc/api/include -I/home/user/anaconda3/envs/pt/lib/python3.7/site-packages/torch/include/TH -I/home/user/anaconda3/envs/pt/lib/python3.7/site-packages/torch/include/THC -I/usr/local/cuda-11.1/include -I/home/user/anaconda3/envs/pt/include/python3.7m -c -c /home/user/Documents/git_zip/point-transformer/lib/pointops/src/aggregation/aggregation_cuda.cpp -o /home/user/Documents/git_zip/point-transformer/lib/pointops/build/temp.linux-x86_64-3.7/src/aggregation/aggregation_cuda.o -g -DTORCH_API_INCLUDE_EXTENSION_H '-DPYBIND11_COMPILER_TYPE="_gcc"' '-DPYBIND11_STDLIB="_libstdcpp"' '-DPYBIND11_BUILD_ABI="_cxxabi1011"' -DTORCH_EXTENSION_NAME=pointops_cuda -D_GLIBCXX_USE_CXX11_ABI=0 -std=c++14
cc1plus: warning: command line option ‘-Wstrict-prototypes’ is valid for C/ObjC but not for C++
In file included from /home/user/anaconda3/envs/pt/lib/python3.7/site-packages/torch/include/ATen/Parallel.h:140,
                 from /home/user/anaconda3/envs/pt/lib/python3.7/site-packages/torch/include/TH/THTensorApply.h:4,
                 from /home/user/anaconda3/envs/pt/lib/python3.7/site-packages/torch/include/TH/THTensor.h:5,
                 from /home/user/anaconda3/envs/pt/lib/python3.7/site-packages/torch/include/THC/THCTensor.h:4,
                 from /home/user/anaconda3/envs/pt/lib/python3.7/site-packages/torch/include/THC/THC.h:12,
                 from /home/user/Documents/git_zip/point-transformer/lib/pointops/src/aggregation/aggregation_cuda.cpp:2:
/home/user/anaconda3/envs/pt/lib/python3.7/site-packages/torch/include/ATen/ParallelOpenMP.h:87: warning: ignoring #pragma omp parallel [-Wunknown-pragmas]
   87 | #pragma omp parallel for if ((end - begin) >= grain_size)
      | 
[2/13] c++ -MMD -MF /home/user/Documents/git_zip/point-transformer/lib/pointops/build/temp.linux-x86_64-3.7/src/sampling/sampling_cuda.o.d -pthread -B /home/user/anaconda3/envs/pt/compiler_compat -Wl,--sysroot=/ -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -I/home/user/anaconda3/envs/pt/lib/python3.7/site-packages/torch/include -I/home/user/anaconda3/envs/pt/lib/python3.7/site-packages/torch/include/torch/csrc/api/include -I/home/user/anaconda3/envs/pt/lib/python3.7/site-packages/torch/include/TH -I/home/user/anaconda3/envs/pt/lib/python3.7/site-packages/torch/include/THC -I/usr/local/cuda-11.1/include -I/home/user/anaconda3/envs/pt/include/python3.7m -c -c /home/user/Documents/git_zip/point-transformer/lib/pointops/src/sampling/sampling_cuda.cpp -o /home/user/Documents/git_zip/point-transformer/lib/pointops/build/temp.linux-x86_64-3.7/src/sampling/sampling_cuda.o -g -DTORCH_API_INCLUDE_EXTENSION_H '-DPYBIND11_COMPILER_TYPE="_gcc"' '-DPYBIND11_STDLIB="_libstdcpp"' '-DPYBIND11_BUILD_ABI="_cxxabi1011"' -DTORCH_EXTENSION_NAME=pointops_cuda -D_GLIBCXX_USE_CXX11_ABI=0 -std=c++14
cc1plus: warning: command line option ‘-Wstrict-prototypes’ is valid for C/ObjC but not for C++
In file included from /home/user/anaconda3/envs/pt/lib/python3.7/site-packages/torch/include/ATen/Parallel.h:140,
                 from /home/user/anaconda3/envs/pt/lib/python3.7/site-packages/torch/include/TH/THTensorApply.h:4,
                 from /home/user/anaconda3/envs/pt/lib/python3.7/site-packages/torch/include/TH/THTensor.h:5,
                 from /home/user/anaconda3/envs/pt/lib/python3.7/site-packages/torch/include/THC/THCTensor.h:4,
                 from /home/user/anaconda3/envs/pt/lib/python3.7/site-packages/torch/include/THC/THC.h:12,
                 from /home/user/Documents/git_zip/point-transformer/lib/pointops/src/sampling/sampling_cuda.cpp:2:
/home/user/anaconda3/envs/pt/lib/python3.7/site-packages/torch/include/ATen/ParallelOpenMP.h:87: warning: ignoring #pragma omp parallel [-Wunknown-pragmas]
   87 | #pragma omp parallel for if ((end - begin) >= grain_size)
      | 
[3/13] c++ -MMD -MF /home/user/Documents/git_zip/point-transformer/lib/pointops/build/temp.linux-x86_64-3.7/src/interpolation/interpolation_cuda.o.d -pthread -B /home/user/anaconda3/envs/pt/compiler_compat -Wl,--sysroot=/ -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -I/home/user/anaconda3/envs/pt/lib/python3.7/site-packages/torch/include -I/home/user/anaconda3/envs/pt/lib/python3.7/site-packages/torch/include/torch/csrc/api/include -I/home/user/anaconda3/envs/pt/lib/python3.7/site-packages/torch/include/TH -I/home/user/anaconda3/envs/pt/lib/python3.7/site-packages/torch/include/THC -I/usr/local/cuda-11.1/include -I/home/user/anaconda3/envs/pt/include/python3.7m -c -c /home/user/Documents/git_zip/point-transformer/lib/pointops/src/interpolation/interpolation_cuda.cpp -o /home/user/Documents/git_zip/point-transformer/lib/pointops/build/temp.linux-x86_64-3.7/src/interpolation/interpolation_cuda.o -g -DTORCH_API_INCLUDE_EXTENSION_H '-DPYBIND11_COMPILER_TYPE="_gcc"' '-DPYBIND11_STDLIB="_libstdcpp"' '-DPYBIND11_BUILD_ABI="_cxxabi1011"' -DTORCH_EXTENSION_NAME=pointops_cuda -D_GLIBCXX_USE_CXX11_ABI=0 -std=c++14
cc1plus: warning: command line option ‘-Wstrict-prototypes’ is valid for C/ObjC but not for C++
In file included from /home/user/anaconda3/envs/pt/lib/python3.7/site-packages/torch/include/ATen/Parallel.h:140,
                 from /home/user/anaconda3/envs/pt/lib/python3.7/site-packages/torch/include/TH/THTensorApply.h:4,
                 from /home/user/anaconda3/envs/pt/lib/python3.7/site-packages/torch/include/TH/THTensor.h:5,
                 from /home/user/anaconda3/envs/pt/lib/python3.7/site-packages/torch/include/THC/THCTensor.h:4,
                 from /home/user/anaconda3/envs/pt/lib/python3.7/site-packages/torch/include/THC/THC.h:12,
                 from /home/user/Documents/git_zip/point-transformer/lib/pointops/src/interpolation/interpolation_cuda.cpp:2:
/home/user/anaconda3/envs/pt/lib/python3.7/site-packages/torch/include/ATen/ParallelOpenMP.h:87: warning: ignoring #pragma omp parallel [-Wunknown-pragmas]
   87 | #pragma omp parallel for if ((end - begin) >= grain_size)
      | 
[4/13] c++ -MMD -MF /home/user/Documents/git_zip/point-transformer/lib/pointops/build/temp.linux-x86_64-3.7/src/grouping/grouping_cuda.o.d -pthread -B /home/user/anaconda3/envs/pt/compiler_compat -Wl,--sysroot=/ -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -I/home/user/anaconda3/envs/pt/lib/python3.7/site-packages/torch/include -I/home/user/anaconda3/envs/pt/lib/python3.7/site-packages/torch/include/torch/csrc/api/include -I/home/user/anaconda3/envs/pt/lib/python3.7/site-packages/torch/include/TH -I/home/user/anaconda3/envs/pt/lib/python3.7/site-packages/torch/include/THC -I/usr/local/cuda-11.1/include -I/home/user/anaconda3/envs/pt/include/python3.7m -c -c /home/user/Documents/git_zip/point-transformer/lib/pointops/src/grouping/grouping_cuda.cpp -o /home/user/Documents/git_zip/point-transformer/lib/pointops/build/temp.linux-x86_64-3.7/src/grouping/grouping_cuda.o -g -DTORCH_API_INCLUDE_EXTENSION_H '-DPYBIND11_COMPILER_TYPE="_gcc"' '-DPYBIND11_STDLIB="_libstdcpp"' '-DPYBIND11_BUILD_ABI="_cxxabi1011"' -DTORCH_EXTENSION_NAME=pointops_cuda -D_GLIBCXX_USE_CXX11_ABI=0 -std=c++14
cc1plus: warning: command line option ‘-Wstrict-prototypes’ is valid for C/ObjC but not for C++
In file included from /home/user/anaconda3/envs/pt/lib/python3.7/site-packages/torch/include/ATen/Parallel.h:140,
                 from /home/user/anaconda3/envs/pt/lib/python3.7/site-packages/torch/include/TH/THTensorApply.h:4,
                 from /home/user/anaconda3/envs/pt/lib/python3.7/site-packages/torch/include/TH/THTensor.h:5,
                 from /home/user/anaconda3/envs/pt/lib/python3.7/site-packages/torch/include/THC/THCTensor.h:4,
                 from /home/user/anaconda3/envs/pt/lib/python3.7/site-packages/torch/include/THC/THC.h:12,
                 from /home/user/Documents/git_zip/point-transformer/lib/pointops/src/grouping/grouping_cuda.cpp:2:
/home/user/anaconda3/envs/pt/lib/python3.7/site-packages/torch/include/ATen/ParallelOpenMP.h:87: warning: ignoring #pragma omp parallel [-Wunknown-pragmas]
   87 | #pragma omp parallel for if ((end - begin) >= grain_size)
      | 
[5/13] c++ -MMD -MF /home/user/Documents/git_zip/point-transformer/lib/pointops/build/temp.linux-x86_64-3.7/src/knnquery/knnquery_cuda.o.d -pthread -B /home/user/anaconda3/envs/pt/compiler_compat -Wl,--sysroot=/ -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -I/home/user/anaconda3/envs/pt/lib/python3.7/site-packages/torch/include -I/home/user/anaconda3/envs/pt/lib/python3.7/site-packages/torch/include/torch/csrc/api/include -I/home/user/anaconda3/envs/pt/lib/python3.7/site-packages/torch/include/TH -I/home/user/anaconda3/envs/pt/lib/python3.7/site-packages/torch/include/THC -I/usr/local/cuda-11.1/include -I/home/user/anaconda3/envs/pt/include/python3.7m -c -c /home/user/Documents/git_zip/point-transformer/lib/pointops/src/knnquery/knnquery_cuda.cpp -o /home/user/Documents/git_zip/point-transformer/lib/pointops/build/temp.linux-x86_64-3.7/src/knnquery/knnquery_cuda.o -g -DTORCH_API_INCLUDE_EXTENSION_H '-DPYBIND11_COMPILER_TYPE="_gcc"' '-DPYBIND11_STDLIB="_libstdcpp"' '-DPYBIND11_BUILD_ABI="_cxxabi1011"' -DTORCH_EXTENSION_NAME=pointops_cuda -D_GLIBCXX_USE_CXX11_ABI=0 -std=c++14
cc1plus: warning: command line option ‘-Wstrict-prototypes’ is valid for C/ObjC but not for C++
In file included from /home/user/anaconda3/envs/pt/lib/python3.7/site-packages/torch/include/ATen/Parallel.h:140,
                 from /home/user/anaconda3/envs/pt/lib/python3.7/site-packages/torch/include/TH/THTensorApply.h:4,
                 from /home/user/anaconda3/envs/pt/lib/python3.7/site-packages/torch/include/TH/THTensor.h:5,
                 from /home/user/anaconda3/envs/pt/lib/python3.7/site-packages/torch/include/THC/THCTensor.h:4,
                 from /home/user/anaconda3/envs/pt/lib/python3.7/site-packages/torch/include/THC/THC.h:12,
                 from /home/user/Documents/git_zip/point-transformer/lib/pointops/src/knnquery/knnquery_cuda.cpp:2:
/home/user/anaconda3/envs/pt/lib/python3.7/site-packages/torch/include/ATen/ParallelOpenMP.h:87: warning: ignoring #pragma omp parallel [-Wunknown-pragmas]
   87 | #pragma omp parallel for if ((end - begin) >= grain_size)
      | 
[6/13] c++ -MMD -MF /home/user/Documents/git_zip/point-transformer/lib/pointops/build/temp.linux-x86_64-3.7/src/subtraction/subtraction_cuda.o.d -pthread -B /home/user/anaconda3/envs/pt/compiler_compat -Wl,--sysroot=/ -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -I/home/user/anaconda3/envs/pt/lib/python3.7/site-packages/torch/include -I/home/user/anaconda3/envs/pt/lib/python3.7/site-packages/torch/include/torch/csrc/api/include -I/home/user/anaconda3/envs/pt/lib/python3.7/site-packages/torch/include/TH -I/home/user/anaconda3/envs/pt/lib/python3.7/site-packages/torch/include/THC -I/usr/local/cuda-11.1/include -I/home/user/anaconda3/envs/pt/include/python3.7m -c -c /home/user/Documents/git_zip/point-transformer/lib/pointops/src/subtraction/subtraction_cuda.cpp -o /home/user/Documents/git_zip/point-transformer/lib/pointops/build/temp.linux-x86_64-3.7/src/subtraction/subtraction_cuda.o -g -DTORCH_API_INCLUDE_EXTENSION_H '-DPYBIND11_COMPILER_TYPE="_gcc"' '-DPYBIND11_STDLIB="_libstdcpp"' '-DPYBIND11_BUILD_ABI="_cxxabi1011"' -DTORCH_EXTENSION_NAME=pointops_cuda -D_GLIBCXX_USE_CXX11_ABI=0 -std=c++14
cc1plus: warning: command line option ‘-Wstrict-prototypes’ is valid for C/ObjC but not for C++
In file included from /home/user/anaconda3/envs/pt/lib/python3.7/site-packages/torch/include/ATen/Parallel.h:140,
                 from /home/user/anaconda3/envs/pt/lib/python3.7/site-packages/torch/include/TH/THTensorApply.h:4,
                 from /home/user/anaconda3/envs/pt/lib/python3.7/site-packages/torch/include/TH/THTensor.h:5,
                 from /home/user/anaconda3/envs/pt/lib/python3.7/site-packages/torch/include/THC/THCTensor.h:4,
                 from /home/user/anaconda3/envs/pt/lib/python3.7/site-packages/torch/include/THC/THC.h:12,
                 from /home/user/Documents/git_zip/point-transformer/lib/pointops/src/subtraction/subtraction_cuda.cpp:2:
/home/user/anaconda3/envs/pt/lib/python3.7/site-packages/torch/include/ATen/ParallelOpenMP.h:87: warning: ignoring #pragma omp parallel [-Wunknown-pragmas]
   87 | #pragma omp parallel for if ((end - begin) >= grain_size)
      | 
[7/13] /usr/local/cuda-11.1/bin/nvcc  -I/home/user/anaconda3/envs/pt/lib/python3.7/site-packages/torch/include -I/home/user/anaconda3/envs/pt/lib/python3.7/site-packages/torch/include/torch/csrc/api/include -I/home/user/anaconda3/envs/pt/lib/python3.7/site-packages/torch/include/TH -I/home/user/anaconda3/envs/pt/lib/python3.7/site-packages/torch/include/THC -I/usr/local/cuda-11.1/include -I/home/user/anaconda3/envs/pt/include/python3.7m -c -c /home/user/Documents/git_zip/point-transformer/lib/pointops/src/subtraction/subtraction_cuda_kernel.cu -o /home/user/Documents/git_zip/point-transformer/lib/pointops/build/temp.linux-x86_64-3.7/src/subtraction/subtraction_cuda_kernel.o -D__CUDA_NO_HALF_OPERATORS__ -D__CUDA_NO_HALF_CONVERSIONS__ -D__CUDA_NO_BFLOAT16_CONVERSIONS__ -D__CUDA_NO_HALF2_OPERATORS__ --expt-relaxed-constexpr --compiler-options ''"'"'-fPIC'"'"'' -O2 -DTORCH_API_INCLUDE_EXTENSION_H '-DPYBIND11_COMPILER_TYPE="_gcc"' '-DPYBIND11_STDLIB="_libstdcpp"' '-DPYBIND11_BUILD_ABI="_cxxabi1011"' -DTORCH_EXTENSION_NAME=pointops_cuda -D_GLIBCXX_USE_CXX11_ABI=0 -gencode=arch=compute_86,code=compute_86 -gencode=arch=compute_86,code=sm_86 -std=c++14
[8/13] /usr/local/cuda-11.1/bin/nvcc  -I/home/user/anaconda3/envs/pt/lib/python3.7/site-packages/torch/include -I/home/user/anaconda3/envs/pt/lib/python3.7/site-packages/torch/include/torch/csrc/api/include -I/home/user/anaconda3/envs/pt/lib/python3.7/site-packages/torch/include/TH -I/home/user/anaconda3/envs/pt/lib/python3.7/site-packages/torch/include/THC -I/usr/local/cuda-11.1/include -I/home/user/anaconda3/envs/pt/include/python3.7m -c -c /home/user/Documents/git_zip/point-transformer/lib/pointops/src/sampling/sampling_cuda_kernel.cu -o /home/user/Documents/git_zip/point-transformer/lib/pointops/build/temp.linux-x86_64-3.7/src/sampling/sampling_cuda_kernel.o -D__CUDA_NO_HALF_OPERATORS__ -D__CUDA_NO_HALF_CONVERSIONS__ -D__CUDA_NO_BFLOAT16_CONVERSIONS__ -D__CUDA_NO_HALF2_OPERATORS__ --expt-relaxed-constexpr --compiler-options ''"'"'-fPIC'"'"'' -O2 -DTORCH_API_INCLUDE_EXTENSION_H '-DPYBIND11_COMPILER_TYPE="_gcc"' '-DPYBIND11_STDLIB="_libstdcpp"' '-DPYBIND11_BUILD_ABI="_cxxabi1011"' -DTORCH_EXTENSION_NAME=pointops_cuda -D_GLIBCXX_USE_CXX11_ABI=0 -gencode=arch=compute_86,code=compute_86 -gencode=arch=compute_86,code=sm_86 -std=c++14
[9/13] /usr/local/cuda-11.1/bin/nvcc  -I/home/user/anaconda3/envs/pt/lib/python3.7/site-packages/torch/include -I/home/user/anaconda3/envs/pt/lib/python3.7/site-packages/torch/include/torch/csrc/api/include -I/home/user/anaconda3/envs/pt/lib/python3.7/site-packages/torch/include/TH -I/home/user/anaconda3/envs/pt/lib/python3.7/site-packages/torch/include/THC -I/usr/local/cuda-11.1/include -I/home/user/anaconda3/envs/pt/include/python3.7m -c -c /home/user/Documents/git_zip/point-transformer/lib/pointops/src/aggregation/aggregation_cuda_kernel.cu -o /home/user/Documents/git_zip/point-transformer/lib/pointops/build/temp.linux-x86_64-3.7/src/aggregation/aggregation_cuda_kernel.o -D__CUDA_NO_HALF_OPERATORS__ -D__CUDA_NO_HALF_CONVERSIONS__ -D__CUDA_NO_BFLOAT16_CONVERSIONS__ -D__CUDA_NO_HALF2_OPERATORS__ --expt-relaxed-constexpr --compiler-options ''"'"'-fPIC'"'"'' -O2 -DTORCH_API_INCLUDE_EXTENSION_H '-DPYBIND11_COMPILER_TYPE="_gcc"' '-DPYBIND11_STDLIB="_libstdcpp"' '-DPYBIND11_BUILD_ABI="_cxxabi1011"' -DTORCH_EXTENSION_NAME=pointops_cuda -D_GLIBCXX_USE_CXX11_ABI=0 -gencode=arch=compute_86,code=compute_86 -gencode=arch=compute_86,code=sm_86 -std=c++14
[10/13] /usr/local/cuda-11.1/bin/nvcc  -I/home/user/anaconda3/envs/pt/lib/python3.7/site-packages/torch/include -I/home/user/anaconda3/envs/pt/lib/python3.7/site-packages/torch/include/torch/csrc/api/include -I/home/user/anaconda3/envs/pt/lib/python3.7/site-packages/torch/include/TH -I/home/user/anaconda3/envs/pt/lib/python3.7/site-packages/torch/include/THC -I/usr/local/cuda-11.1/include -I/home/user/anaconda3/envs/pt/include/python3.7m -c -c /home/user/Documents/git_zip/point-transformer/lib/pointops/src/grouping/grouping_cuda_kernel.cu -o /home/user/Documents/git_zip/point-transformer/lib/pointops/build/temp.linux-x86_64-3.7/src/grouping/grouping_cuda_kernel.o -D__CUDA_NO_HALF_OPERATORS__ -D__CUDA_NO_HALF_CONVERSIONS__ -D__CUDA_NO_BFLOAT16_CONVERSIONS__ -D__CUDA_NO_HALF2_OPERATORS__ --expt-relaxed-constexpr --compiler-options ''"'"'-fPIC'"'"'' -O2 -DTORCH_API_INCLUDE_EXTENSION_H '-DPYBIND11_COMPILER_TYPE="_gcc"' '-DPYBIND11_STDLIB="_libstdcpp"' '-DPYBIND11_BUILD_ABI="_cxxabi1011"' -DTORCH_EXTENSION_NAME=pointops_cuda -D_GLIBCXX_USE_CXX11_ABI=0 -gencode=arch=compute_86,code=compute_86 -gencode=arch=compute_86,code=sm_86 -std=c++14
[11/13] /usr/local/cuda-11.1/bin/nvcc  -I/home/user/anaconda3/envs/pt/lib/python3.7/site-packages/torch/include -I/home/user/anaconda3/envs/pt/lib/python3.7/site-packages/torch/include/torch/csrc/api/include -I/home/user/anaconda3/envs/pt/lib/python3.7/site-packages/torch/include/TH -I/home/user/anaconda3/envs/pt/lib/python3.7/site-packages/torch/include/THC -I/usr/local/cuda-11.1/include -I/home/user/anaconda3/envs/pt/include/python3.7m -c -c /home/user/Documents/git_zip/point-transformer/lib/pointops/src/knnquery/knnquery_cuda_kernel.cu -o /home/user/Documents/git_zip/point-transformer/lib/pointops/build/temp.linux-x86_64-3.7/src/knnquery/knnquery_cuda_kernel.o -D__CUDA_NO_HALF_OPERATORS__ -D__CUDA_NO_HALF_CONVERSIONS__ -D__CUDA_NO_BFLOAT16_CONVERSIONS__ -D__CUDA_NO_HALF2_OPERATORS__ --expt-relaxed-constexpr --compiler-options ''"'"'-fPIC'"'"'' -O2 -DTORCH_API_INCLUDE_EXTENSION_H '-DPYBIND11_COMPILER_TYPE="_gcc"' '-DPYBIND11_STDLIB="_libstdcpp"' '-DPYBIND11_BUILD_ABI="_cxxabi1011"' -DTORCH_EXTENSION_NAME=pointops_cuda -D_GLIBCXX_USE_CXX11_ABI=0 -gencode=arch=compute_86,code=compute_86 -gencode=arch=compute_86,code=sm_86 -std=c++14
[12/13] /usr/local/cuda-11.1/bin/nvcc  -I/home/user/anaconda3/envs/pt/lib/python3.7/site-packages/torch/include -I/home/user/anaconda3/envs/pt/lib/python3.7/site-packages/torch/include/torch/csrc/api/include -I/home/user/anaconda3/envs/pt/lib/python3.7/site-packages/torch/include/TH -I/home/user/anaconda3/envs/pt/lib/python3.7/site-packages/torch/include/THC -I/usr/local/cuda-11.1/include -I/home/user/anaconda3/envs/pt/include/python3.7m -c -c /home/user/Documents/git_zip/point-transformer/lib/pointops/src/interpolation/interpolation_cuda_kernel.cu -o /home/user/Documents/git_zip/point-transformer/lib/pointops/build/temp.linux-x86_64-3.7/src/interpolation/interpolation_cuda_kernel.o -D__CUDA_NO_HALF_OPERATORS__ -D__CUDA_NO_HALF_CONVERSIONS__ -D__CUDA_NO_BFLOAT16_CONVERSIONS__ -D__CUDA_NO_HALF2_OPERATORS__ --expt-relaxed-constexpr --compiler-options ''"'"'-fPIC'"'"'' -O2 -DTORCH_API_INCLUDE_EXTENSION_H '-DPYBIND11_COMPILER_TYPE="_gcc"' '-DPYBIND11_STDLIB="_libstdcpp"' '-DPYBIND11_BUILD_ABI="_cxxabi1011"' -DTORCH_EXTENSION_NAME=pointops_cuda -D_GLIBCXX_USE_CXX11_ABI=0 -gencode=arch=compute_86,code=compute_86 -gencode=arch=compute_86,code=sm_86 -std=c++14
[13/13] c++ -MMD -MF /home/user/Documents/git_zip/point-transformer/lib/pointops/build/temp.linux-x86_64-3.7/src/pointops_api.o.d -pthread -B /home/user/anaconda3/envs/pt/compiler_compat -Wl,--sysroot=/ -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -I/home/user/anaconda3/envs/pt/lib/python3.7/site-packages/torch/include -I/home/user/anaconda3/envs/pt/lib/python3.7/site-packages/torch/include/torch/csrc/api/include -I/home/user/anaconda3/envs/pt/lib/python3.7/site-packages/torch/include/TH -I/home/user/anaconda3/envs/pt/lib/python3.7/site-packages/torch/include/THC -I/usr/local/cuda-11.1/include -I/home/user/anaconda3/envs/pt/include/python3.7m -c -c /home/user/Documents/git_zip/point-transformer/lib/pointops/src/pointops_api.cpp -o /home/user/Documents/git_zip/point-transformer/lib/pointops/build/temp.linux-x86_64-3.7/src/pointops_api.o -g -DTORCH_API_INCLUDE_EXTENSION_H '-DPYBIND11_COMPILER_TYPE="_gcc"' '-DPYBIND11_STDLIB="_libstdcpp"' '-DPYBIND11_BUILD_ABI="_cxxabi1011"' -DTORCH_EXTENSION_NAME=pointops_cuda -D_GLIBCXX_USE_CXX11_ABI=0 -std=c++14
cc1plus: warning: command line option ‘-Wstrict-prototypes’ is valid for C/ObjC but not for C++
In file included from /home/user/anaconda3/envs/pt/lib/python3.7/site-packages/torch/include/ATen/Parallel.h:140,
                 from /home/user/anaconda3/envs/pt/lib/python3.7/site-packages/torch/include/torch/csrc/api/include/torch/utils.h:3,
                 from /home/user/anaconda3/envs/pt/lib/python3.7/site-packages/torch/include/torch/csrc/api/include/torch/nn/cloneable.h:5,
                 from /home/user/anaconda3/envs/pt/lib/python3.7/site-packages/torch/include/torch/csrc/api/include/torch/nn.h:3,
                 from /home/user/anaconda3/envs/pt/lib/python3.7/site-packages/torch/include/torch/csrc/api/include/torch/all.h:13,
                 from /home/user/anaconda3/envs/pt/lib/python3.7/site-packages/torch/include/torch/extension.h:4,
                 from /home/user/Documents/git_zip/point-transformer/lib/pointops/src/pointops_api.cpp:2:
/home/user/anaconda3/envs/pt/lib/python3.7/site-packages/torch/include/ATen/ParallelOpenMP.h:87: warning: ignoring #pragma omp parallel [-Wunknown-pragmas]
   87 | #pragma omp parallel for if ((end - begin) >= grain_size)
      | 
creating build/lib.linux-x86_64-3.7
g++ -pthread -shared -B /home/user/anaconda3/envs/pt/compiler_compat -L/home/user/anaconda3/envs/pt/lib -Wl,-rpath=/home/user/anaconda3/envs/pt/lib -Wl,--no-as-needed -Wl,--sysroot=/ /home/user/Documents/git_zip/point-transformer/lib/pointops/build/temp.linux-x86_64-3.7/src/pointops_api.o /home/user/Documents/git_zip/point-transformer/lib/pointops/build/temp.linux-x86_64-3.7/src/knnquery/knnquery_cuda.o /home/user/Documents/git_zip/point-transformer/lib/pointops/build/temp.linux-x86_64-3.7/src/knnquery/knnquery_cuda_kernel.o /home/user/Documents/git_zip/point-transformer/lib/pointops/build/temp.linux-x86_64-3.7/src/sampling/sampling_cuda.o /home/user/Documents/git_zip/point-transformer/lib/pointops/build/temp.linux-x86_64-3.7/src/sampling/sampling_cuda_kernel.o /home/user/Documents/git_zip/point-transformer/lib/pointops/build/temp.linux-x86_64-3.7/src/grouping/grouping_cuda.o /home/user/Documents/git_zip/point-transformer/lib/pointops/build/temp.linux-x86_64-3.7/src/grouping/grouping_cuda_kernel.o /home/user/Documents/git_zip/point-transformer/lib/pointops/build/temp.linux-x86_64-3.7/src/interpolation/interpolation_cuda.o /home/user/Documents/git_zip/point-transformer/lib/pointops/build/temp.linux-x86_64-3.7/src/interpolation/interpolation_cuda_kernel.o /home/user/Documents/git_zip/point-transformer/lib/pointops/build/temp.linux-x86_64-3.7/src/subtraction/subtraction_cuda.o /home/user/Documents/git_zip/point-transformer/lib/pointops/build/temp.linux-x86_64-3.7/src/subtraction/subtraction_cuda_kernel.o /home/user/Documents/git_zip/point-transformer/lib/pointops/build/temp.linux-x86_64-3.7/src/aggregation/aggregation_cuda.o /home/user/Documents/git_zip/point-transformer/lib/pointops/build/temp.linux-x86_64-3.7/src/aggregation/aggregation_cuda_kernel.o -L/home/user/anaconda3/envs/pt/lib/python3.7/site-packages/torch/lib -L/usr/local/cuda-11.1/lib64 -lc10 -ltorch -ltorch_cpu -ltorch_python -lcudart -lc10_cuda -ltorch_cuda_cu -ltorch_cuda_cpp -o build/lib.linux-x86_64-3.7/pointops_cuda.cpython-37m-x86_64-linux-gnu.so
creating build/bdist.linux-x86_64
creating build/bdist.linux-x86_64/egg
copying build/lib.linux-x86_64-3.7/pointops_cuda.cpython-37m-x86_64-linux-gnu.so -> build/bdist.linux-x86_64/egg
creating stub loader for pointops_cuda.cpython-37m-x86_64-linux-gnu.so
byte-compiling build/bdist.linux-x86_64/egg/pointops_cuda.py to pointops_cuda.cpython-37.pyc
creating build/bdist.linux-x86_64/egg/EGG-INFO
copying pointops.egg-info/PKG-INFO -> build/bdist.linux-x86_64/egg/EGG-INFO
copying pointops.egg-info/SOURCES.txt -> build/bdist.linux-x86_64/egg/EGG-INFO
copying pointops.egg-info/dependency_links.txt -> build/bdist.linux-x86_64/egg/EGG-INFO
copying pointops.egg-info/top_level.txt -> build/bdist.linux-x86_64/egg/EGG-INFO
writing build/bdist.linux-x86_64/egg/EGG-INFO/native_libs.txt
zip_safe flag not set; analyzing archive contents...
__pycache__.pointops_cuda.cpython-37: module references __file__
creating dist
creating 'dist/pointops-0.0.0-py3.7-linux-x86_64.egg' and adding 'build/bdist.linux-x86_64/egg' to it
removing 'build/bdist.linux-x86_64/egg' (and everything under it)
Processing pointops-0.0.0-py3.7-linux-x86_64.egg
creating /home/user/anaconda3/envs/pt/lib/python3.7/site-packages/pointops-0.0.0-py3.7-linux-x86_64.egg
Extracting pointops-0.0.0-py3.7-linux-x86_64.egg to /home/user/anaconda3/envs/pt/lib/python3.7/site-packages
Adding pointops 0.0.0 to easy-install.pth file

Installed /home/user/anaconda3/envs/pt/lib/python3.7/site-packages/pointops-0.0.0-py3.7-linux-x86_64.egg
Processing dependencies for pointops==0.0.0
Finished processing dependencies for pointops==0.0.0

packages versions :

# Name                    Version                   Build  Channel
_libgcc_mutex             0.1                        main  
_openmp_mutex             4.5                       1_gnu  
blas                      1.0                         mkl  
ca-certificates           2021.10.8            ha878542_0    conda-forge
certifi                   2021.10.8        py37h89c1867_1    conda-forge
cudatoolkit               11.1.74              h6bb024c_0    nvidia
freetype                  2.11.0               h70c0345_0  
giflib                    5.2.1                h7b6447c_0  
h5py                      2.10.0           py37hd6299e0_1    anaconda
hdf5                      1.10.6               hb1b8bf9_0    anaconda
intel-openmp              2021.4.0          h06a4308_3561  
jpeg                      9d                   h7f8727e_0  
lcms2                     2.12                 h3be6417_0  
ld_impl_linux-64          2.35.1               h7274673_9  
libffi                    3.3                  he6710b0_2  
libgcc-ng                 9.3.0               h5101ec6_17  
libgfortran-ng            7.3.0                hdf63c60_0    anaconda
libgomp                   9.3.0               h5101ec6_17  
libpng                    1.6.37               hbc83047_0  
libprotobuf               3.15.8               h780b84a_0    conda-forge
libstdcxx-ng              9.3.0               hd4cf53a_17  
libtiff                   4.2.0                h85742a9_0  
libuv                     1.40.0               h7b6447c_0  
libwebp                   1.2.0                h89dd481_0  
libwebp-base              1.2.0                h27cfd23_0  
lz4-c                     1.9.3                h295c915_1  
mkl                       2021.4.0           h06a4308_640  
mkl-service               2.4.0            py37h7f8727e_0  
mkl_fft                   1.3.1            py37hd3c417c_0  
mkl_random                1.2.2            py37h51133e4_0  
ncurses                   6.3                  h7f8727e_2  
ninja                     1.10.2           py37hd09550d_3  
numpy                     1.21.2           py37h20f2e39_0  
numpy-base                1.21.2           py37h79a1101_0  
olefile                   0.46                     py37_0  
openssl                   1.1.1l               h7f8727e_0  
pillow                    8.4.0            py37h5aabda8_0  
pip                       21.2.2           py37h06a4308_0  
pointops                  0.0.0                    pypi_0    pypi
protobuf                  3.15.8           py37hcd2ae1e_0    conda-forge
python                    3.7.11               h12debd9_0  
python_abi                3.7                     2_cp37m    conda-forge
pytorch                   1.9.0           py3.7_cuda11.1_cudnn8.0.5_0    pytorch
pyyaml                    5.3.1            py37h7b6447c_1    anaconda
readline                  8.1                  h27cfd23_0  
setuptools                58.0.4           py37h06a4308_0  
sharedarray               3.2.1            py37h6f94858_2    conda-forge
six                       1.16.0             pyhd3eb1b0_0  
sqlite                    3.36.0               hc218d9a_0  
tensorboardx              2.4                pyhd8ed1ab_0    conda-forge
tk                        8.6.11               h1ccaba5_0  
torchvision               0.2.2                      py_3    pytorch
typing_extensions         3.10.0.2           pyh06a4308_0  
wheel                     0.37.0             pyhd3eb1b0_1  
xz                        5.2.5                h7b6447c_0  
yaml                      0.2.5                h7b6447c_0    anaconda
zlib                      1.2.11               h7b6447c_3  
zstd                      1.4.9                haebb681_0  

nvcc - V gives

nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2020 NVIDIA Corporation
Built on Mon_Oct_12_20:09:46_PDT_2020
Cuda compilation tools, release 11.1, V11.1.105
Build cuda_11.1.TC455_06.29190527_0

Thx !

Quick question about performance

Thank you very much for sharing your nice work. I have a quick question about the implementation. I have found that your original implementation did not reach the paper's reported results. Do you know what are the main reasons, which have been addressed in the author's provided code?

mIoU for s3dis dataset using Area 5 as test set

Hi, thank you for your contribution, especially because I think there is no official code for point-transformers. I see that you report the overall accuracy and compare it with the original paper for the s3dis dataset. Did you get by any chance the mIoU using Area 5 as a test?

Thank you

Empty S3DIS dataset link

Hi,

The google drive link for S3DIS dataset seems to be empty.
Can you please check this?

Thank you very much.

Confusion about the function _make_enc() and _make_dec()

@chrockey @junha-l @hmyang0727 @Kwonyoung-Ryu Thanks for sharing the code.

One point I am confused with is the PointTransformerSeg architecture re-implemented in this repo.

Specifically, in model/pointtransformer/pointtransformer_seg.py, the class PointTransformerSeg defines the function _make_enc(), according to the code, each one in self.enc1, self.enc2, self.enc3, self.enc4, self.enc5 contains multiple Point Transformer Blocks.

However, according to the model architecture given by the paper, there is nothing explicitly indicating that each encoder should consist of multiple Point Transformer Blocks. Multiple point transformer blocks in each encoder make the model unnecessarily complicated, which also applies to the function _make_dec() in same class.

Instead, I mean each encoder should contain one TransitionDown Layer and one Point Transformer Block, and the re-implementations by others also follow this, e.g., Point-Transformers.

use two GPUs (Titan 24g)

Hello, thank you very much for your code. I have a question. I hope you can help me. If I use two GPUs (Titan 24g), can I achieve the performance of (Miou 70)?
If possible, what do you think about the settings of parameters such as (batch size, LR) and network layers?
We look forward to your reply

Pointops - GPU DataParallel Error

Hello I implemented the model into another training loop and it trains fine on a single GPU. However when I use multi-GPU DataParallel the model stops with the following error
ATen/native/cuda/IndexKernel.cu:91: index out of bounds

According to the error message, this is caused by pointops queryandgroup.
Any suggestions what might cause that?

Error Message:

/opt/conda/conda-bld/pytorch_1656352464346/work/aten/src/ATen/native/cuda/IndexKernel.cu:91: operator(): block: [30669,0,0], thread: [31,0,0] Assertion `index >= -sizes[i] && index < sizes[i] && "index out of bounds"` failed.

Traceback ...

RuntimeError: Caught RuntimeError in replica 0 on device 0.
Original Traceback (most recent call last):
  File "/opt/conda/lib/python3.7/site-packages/torch/nn/parallel/parallel_apply.py", line 61, in _worker
    output = module(*input, **kwargs)
  File "/opt/conda/lib/python3.7/site-packages/torch/nn/modules/module.py", line 1130, in _call_impl
    return forward_call(*input, **kwargs)
  File "/home/Paper/model/pointtransformer_seg.py", line 162, in forward
    p1, x1, o1 = self.enc1([p0, x0, o0])
  File "/opt/conda/lib/python3.7/site-packages/torch/nn/modules/module.py", line 1130, in _call_impl
    return forward_call(*input, **kwargs)
  File "/opt/conda/lib/python3.7/site-packages/torch/nn/modules/container.py", line 139, in forward
    input = module(input)
  File "/opt/conda/lib/python3.7/site-packages/torch/nn/modules/module.py", line 1130, in _call_impl
    return forward_call(*input, **kwargs)
  File "/home/Paper/model/pointtransformer_seg.py", line 116, in forward
    x = self.relu(self.bn2(self.transformer2([p, x, o])))
  File "/opt/conda/lib/python3.7/site-packages/torch/nn/modules/module.py", line 1130, in _call_impl
    return forward_call(*input, **kwargs)
  File "/home/Paper/model/pointtransformer_seg.py", line 26, in forward
    x_k = pointops.queryandgroup(self.nsample, p, p, x_k, None, o, o, use_xyz=True)  # (n, nsample, 3+c)
  File "/home/Paper/lib/pointops/functions/pointops.py", line 91, in queryandgroup
    grouped_xyz = xyz[idx.view(-1).long(), :].view(m, nsample, 3) # (m, nsample, 3)
RuntimeError: CUDA error: device-side assert triggered

What is the purpose of `share_planes`?

Hello, thank you for uploading this!

I'm not sure what does share_planes do in the recently added code from the paper authors. It seem that the variable share_planes was originally defined here (where fpn_planes and fpnhead_planes were not used anywhere else):

fpn_planes, fpnhead_planes, share_planes = 128, 64, 8

Later, in PointTransformerLayer's __init__() and forward() functions, share_planes is mostly used as a denominator, to adjust the intermediate dimensions between layers, like here (in function PointTransformerLayer.__init__()):

self.linear_w = nn.Sequential(nn.BatchNorm1d(mid_planes), nn.ReLU(inplace=True),
nn.Linear(mid_planes, mid_planes // share_planes),
nn.BatchNorm1d(mid_planes // share_planes), nn.ReLU(inplace=True),
nn.Linear(out_planes // share_planes, out_planes // share_planes))

And here (in function PointTransformerLayer.forward()):

n, nsample, c = x_v.shape; s = self.share_planes
x = ((x_v + p_r).view(n, nsample, s, c // s) * w.unsqueeze(2)).sum(1).view(n, c)

I failed to infer what does share_planes actually mean. My question here is, when a network layer is constructed by

nn.Linear(mid_planes, mid_planes // share_planes)
  • Does it only mean that the layer will project a mid_planes-dimensional representation onto a mid_planes//share_planes-dimensional space?
  • Does the word share in the variable name share_planes have any meaning?

Also, the unused fpn_planes and fpnhead_planes variables are confusing. Thank you for taking the time to read this, any response would be greatly appreciated.

Part segmentation

Can you provide the test file? I want to visualize the generated prediction file.

.

Deleted because original content of this issue is of no benefit to this repo.

ModuleNotFoundError: No module named 'pointops_cuda'

I come across the problem: Traceback (most recent call last):
File "exp/s3dis/pointtransformer_repro/train.py", line 371, in
main()
File "exp/s3dis/pointtransformer_repro/train.py", line 88, in main
mp.spawn(main_worker, nprocs=args.ngpus_per_node, args=(args.ngpus_per_node, args))
File "/home/liy0r/anaconda3/lib/python3.8/site-packages/torch/multiprocessing/spawn.py", line 171, in spawn
while not spawn_context.join():
File "/home/liy0r/anaconda3/lib/python3.8/site-packages/torch/multiprocessing/spawn.py", line 118, in join
raise Exception(msg)
Exception:

-- Process 2 terminated with the following error:
Traceback (most recent call last):
File "/home/liy0r/anaconda3/lib/python3.8/site-packages/torch/multiprocessing/spawn.py", line 19, in _wrap
fn(i, *args)
File "/ibex/scratch/liy0r/cvpr/point-transformer/exp/s3dis/pointtransformer_repro/train.py", line 104, in main_worker
from model.pointtransformer.pointtransformer_seg import pointtransformer_seg_repro as Model
File "/ibex/scratch/liy0r/cvpr/point-transformer/model/pointtransformer/pointtransformer_seg.py", line 4, in
from lib.pointops.functions import pointops
File "/ibex/scratch/liy0r/cvpr/point-transformer/lib/pointops/functions/pointops.py", line 7, in
import pointops_cuda
ModuleNotFoundError: No module named 'pointops_cuda'

Question about the "share_planes"

Hi, it is a nice work!
But I am confused about the "share_planes" in PointTransformerLayer.
n, nsample, c = x_v.shape; s = self.share_planes
x = ((x_v + p_r).view(n, nsample, s, c // s) * w.unsqueeze(2)).sum(1).view(n, c)
Apparently, w's dimension is reduced by Linear, which is not illustrated in the paper. I think this operation is not consistent with the vector attention, It is more like a compromise of scalar attention and vector attention.
Why partition the feature dimension of (x_v + p_r) into share_planes?

How to compile pointops_cuda?

When I compile the pointops_cuda, I met the following bugs.

srun -p RTXA6Kq -n 1 -w node10 python setup.py install
No CUDA runtime is found, using CUDA_HOME='/cm/shared/apps/cuda11.1/toolkit/11.1.0'
running install
running bdist_egg
running egg_info
creating pointops.egg-info
writing pointops.egg-info/PKG-INFO
writing dependency_links to pointops.egg-info/dependency_links.txt
writing top-level names to pointops.egg-info/top_level.txt
writing manifest file 'pointops.egg-info/SOURCES.txt'
reading manifest file 'pointops.egg-info/SOURCES.txt'
writing manifest file 'pointops.egg-info/SOURCES.txt'
installing library code to build/bdist.linux-x86_64/egg
running install_lib
running build_ext
building 'pointops_cuda' extension
creating /export/home/hanxiaobing/Documents/PlaneNet_PlaneRCNN/DGCNN_PointNet2/SensatUrban/contrastBoundary/pytorch/lib/pointops/build
creating /export/home/hanxiaobing/Documents/PlaneNet_PlaneRCNN/DGCNN_PointNet2/SensatUrban/contrastBoundary/pytorch/lib/pointops/build/temp.linux-x86_64-3.6
creating /export/home/hanxiaobing/Documents/PlaneNet_PlaneRCNN/DGCNN_PointNet2/SensatUrban/contrastBoundary/pytorch/lib/pointops/build/temp.linux-x86_64-3.6/src
creating /export/home/hanxiaobing/Documents/PlaneNet_PlaneRCNN/DGCNN_PointNet2/SensatUrban/contrastBoundary/pytorch/lib/pointops/build/temp.linux-x86_64-3.6/src/knnquery
creating /export/home/hanxiaobing/Documents/PlaneNet_PlaneRCNN/DGCNN_PointNet2/SensatUrban/contrastBoundary/pytorch/lib/pointops/build/temp.linux-x86_64-3.6/src/sampling
creating /export/home/hanxiaobing/Documents/PlaneNet_PlaneRCNN/DGCNN_PointNet2/SensatUrban/contrastBoundary/pytorch/lib/pointops/build/temp.linux-x86_64-3.6/src/grouping
creating /export/home/hanxiaobing/Documents/PlaneNet_PlaneRCNN/DGCNN_PointNet2/SensatUrban/contrastBoundary/pytorch/lib/pointops/build/temp.linux-x86_64-3.6/src/interpolation
creating /export/home/hanxiaobing/Documents/PlaneNet_PlaneRCNN/DGCNN_PointNet2/SensatUrban/contrastBoundary/pytorch/lib/pointops/build/temp.linux-x86_64-3.6/src/subtraction
creating /export/home/hanxiaobing/Documents/PlaneNet_PlaneRCNN/DGCNN_PointNet2/SensatUrban/contrastBoundary/pytorch/lib/pointops/build/temp.linux-x86_64-3.6/src/aggregation
Traceback (most recent call last):
File "setup.py", line 34, in
cmdclass={'build_ext': BuildExtension}
File "/export/home/hanxiaobing/anaconda3/envs/pytorch-Point-Transformer/lib/python3.6/site-packages/setuptools/init.py", line 153, in setup
return distutils.core.setup(**attrs)
File "/export/home/hanxiaobing/anaconda3/envs/pytorch-Point-Transformer/lib/python3.6/distutils/core.py", line 148, in setup
dist.run_commands()
File "/export/home/hanxiaobing/anaconda3/envs/pytorch-Point-Transformer/lib/python3.6/distutils/dist.py", line 955, in run_commands
self.run_command(cmd)
File "/export/home/hanxiaobing/anaconda3/envs/pytorch-Point-Transformer/lib/python3.6/distutils/dist.py", line 974, in run_command
cmd_obj.run()
File "/export/home/hanxiaobing/anaconda3/envs/pytorch-Point-Transformer/lib/python3.6/site-packages/setuptools/command/install.py", line 67, in run
self.do_egg_install()
File "/export/home/hanxiaobing/anaconda3/envs/pytorch-Point-Transformer/lib/python3.6/site-packages/setuptools/command/install.py", line 109, in do_egg_install
self.run_command('bdist_egg')
File "/export/home/hanxiaobing/anaconda3/envs/pytorch-Point-Transformer/lib/python3.6/distutils/cmd.py", line 313, in run_command
self.distribution.run_command(command)
File "/export/home/hanxiaobing/anaconda3/envs/pytorch-Point-Transformer/lib/python3.6/distutils/dist.py", line 974, in run_command
cmd_obj.run()
File "/export/home/hanxiaobing/anaconda3/envs/pytorch-Point-Transformer/lib/python3.6/site-packages/setuptools/command/bdist_egg.py", line 164, in run
cmd = self.call_command('install_lib', warn_dir=0)
File "/export/home/hanxiaobing/anaconda3/envs/pytorch-Point-Transformer/lib/python3.6/site-packages/setuptools/command/bdist_egg.py", line 150, in call_command
self.run_command(cmdname)
File "/export/home/hanxiaobing/anaconda3/envs/pytorch-Point-Transformer/lib/python3.6/distutils/cmd.py", line 313, in run_command
self.distribution.run_command(command)
File "/export/home/hanxiaobing/anaconda3/envs/pytorch-Point-Transformer/lib/python3.6/distutils/dist.py", line 974, in run_command
cmd_obj.run()
File "/export/home/hanxiaobing/anaconda3/envs/pytorch-Point-Transformer/lib/python3.6/site-packages/setuptools/command/install_lib.py", line 11, in run
self.build()
File "/export/home/hanxiaobing/anaconda3/envs/pytorch-Point-Transformer/lib/python3.6/distutils/command/install_lib.py", line 107, in build
self.run_command('build_ext')
File "/export/home/hanxiaobing/anaconda3/envs/pytorch-Point-Transformer/lib/python3.6/distutils/cmd.py", line 313, in run_command
self.distribution.run_command(command)
File "/export/home/hanxiaobing/anaconda3/envs/pytorch-Point-Transformer/lib/python3.6/distutils/dist.py", line 974, in run_command
cmd_obj.run()
File "/export/home/hanxiaobing/anaconda3/envs/pytorch-Point-Transformer/lib/python3.6/site-packages/setuptools/command/build_ext.py", line 79, in run
_build_ext.run(self)
File "/export/home/hanxiaobing/anaconda3/envs/pytorch-Point-Transformer/lib/python3.6/distutils/command/build_ext.py", line 339, in run
self.build_extensions()
File "/export/home/hanxiaobing/anaconda3/envs/pytorch-Point-Transformer/lib/python3.6/site-packages/torch/utils/cpp_extension.py", line 580, in build_extensions
build_ext.build_extensions(self)
File "/export/home/hanxiaobing/anaconda3/envs/pytorch-Point-Transformer/lib/python3.6/distutils/command/build_ext.py", line 448, in build_extensions
self._build_extensions_serial()
File "/export/home/hanxiaobing/anaconda3/envs/pytorch-Point-Transformer/lib/python3.6/distutils/command/build_ext.py", line 473, in _build_extensions_serial
self.build_extension(ext)
File "/export/home/hanxiaobing/anaconda3/envs/pytorch-Point-Transformer/lib/python3.6/site-packages/setuptools/command/build_ext.py", line 196, in build_extension
_build_ext.build_extension(self, ext)
File "/export/home/hanxiaobing/anaconda3/envs/pytorch-Point-Transformer/lib/python3.6/distutils/command/build_ext.py", line 533, in build_extension
depends=ext.depends)
File "/export/home/hanxiaobing/anaconda3/envs/pytorch-Point-Transformer/lib/python3.6/site-packages/torch/utils/cpp_extension.py", line 411, in unix_wrap_ninja_compile
cuda_post_cflags = unix_cuda_flags(cuda_post_cflags)
File "/export/home/hanxiaobing/anaconda3/envs/pytorch-Point-Transformer/lib/python3.6/site-packages/torch/utils/cpp_extension.py", line 336, in unix_cuda_flags
cflags + _get_cuda_arch_flags(cflags))
File "/export/home/hanxiaobing/anaconda3/envs/pytorch-Point-Transformer/lib/python3.6/site-packages/torch/utils/cpp_extension.py", line 1316, in _get_cuda_arch_flags
raise ValueError("Unknown CUDA arch ({}) or GPU not supported".format(arch))
ValueError: Unknown CUDA arch (8.0) or GPU not supported

I have used cuda11.1.
How to solve?

Hi, there!

Thanks for your upload; I found you have already gotten the result based on the point transformer. But your now source code looks not like the implementation of point transformer. Will you update the source code? Thank you!

open3d error

OSError: /lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.27' not found (required by /home/ma-user/work/yanfan/envs/pt/lib/python3.6/site-packages/open3d/cpu/pybind.cpython-36m-x86_64-linux-gnu.so)

how can i solve this?please
change open3d == 0.12.0 ,0.11.0,0.9.0 still does not work

GPU Memory

Hello, I have tried this model as well as the Stratified transformer.

I am getting about 1/4th GPU Memory requirements with this model, which I am not complaining about, but I wonder where this large difference comes from. I thought the two models are closely related.

Is this plausible, or are there some errors in my implementation? I have read the paper and for me it seems plausible. I am getting about 6 GB Memory with 70000 Points. However I have trouble understanding where the seemingly significantly larger memory consumption of Stratified transformer is coming from. Is this possibly related to relative position encoding?

CUDA Version

My graphics card driver supports up to 10.1. Can I run this code?

Backward Issues:You must implement the backward function for custom autograd.Function.

As the code error say,maybe is the custom torch.autograd.Function (FurthestSampling and KNNQuery)do not have its backward.And it do not have weight correlated grad,so I add a backward function to them as well as the codebase.

class FurthestSampling(Function):
    @staticmethod
    def forward(ctx, xyz, offset, new_offset):
        """
        input: xyz: (n, 3), offset: (b), new_offset: (b)
        output: idx: (m)
        """
        assert xyz.is_contiguous()
        n, b, n_max = xyz.shape[0], offset.shape[0], offset[0]
        for i in range(1, b):
            n_max = max(offset[i] - offset[i-1], n_max)
        idx = torch.cuda.IntTensor(new_offset[b-1].item()).zero_()
        tmp = torch.cuda.FloatTensor(n).fill_(1e10)
        pointops_cuda.furthestsampling_cuda(b, n_max, xyz, offset, new_offset, tmp, idx)
        del tmp
        return idx

    @staticmethod
    def backward(ctx, idx=None):
        return None, None, None
furthestsampling = FurthestSampling.apply


class KNNQuery(Function):
    @staticmethod
    def forward(ctx, nsample, xyz, new_xyz, offset, new_offset):
        """
        input: xyz: (n, 3), new_xyz: (m, 3), offset: (b), new_offset: (b)
        output: idx: (m, nsample), dist2: (m, nsample)
        """
        if new_xyz is None: new_xyz = xyz
        assert xyz.is_contiguous() and new_xyz.is_contiguous()
        m = new_xyz.shape[0]
        idx = torch.cuda.IntTensor(m, nsample).zero_()
        dist2 = torch.cuda.FloatTensor(m, nsample).zero_()
        pointops_cuda.knnquery_cuda(m, nsample, xyz, new_xyz, offset, new_offset, idx, dist2)
        return idx, torch.sqrt(dist2)

    @staticmethod
    def backward(ctx, idx=None, d=None):
        return None, None, None, None, None
knnquery = KNNQuery.apply

Running time

Hi,

Could you please share that how long it takes to run on Area 5 for 100 epochs in your settings?
We need around 7 days which is slow.

Thank you!

A few queries regarding the code in `pointops.py`

I went through your code and had a few queries regarding some segments. I have compiled the queries below and I would really appreciate it, if you can clarify them:

  1. In the queryandgroup() function in pointops.py, there are these lines (93 - 94):
grouped_xyz = xyz[idx.view(-1).long(), :].view(m, nsample, 3) # (m, nsample, 3)
grouped_xyz -= new_xyz.unsqueeze(1) # (m, nsample, 3)

My question here is, why is the second line where the difference is taken necessary? As I understand it, grouped_xyz comes from xyz, which is the point-set in the current layer / stage and new_xyz is the point-set for the next layer / stage. grouped_xyz is only ever returned when the parameter use_xyz for queryandgroup() is set to True, which is the case in one call to queryandgroup() in PointTransformerLayer and another call in TransitionDown. In PointTransformerLayer, this represents displacement vectors between all points and their respective neighbours. But in TransitionDown, it represents displacement vectors between points obtained via Furthest Point Sampling (in new_xyz) and points obtained via kNN (in xyz[idx...] and hence grouped_xyz). I am unable to understand why the latter operation is performed and what is its significance?

  1. As I understand it, the interpolation() function in pointops.py works as follows:
    • For each point in new_xyz with n (> m) points, 3 neighbours are found using kNN in xyz, that has m points.
    • Then, the inverse of distance is taken and normalized over the 3 neighbours to get to weight.
    • Finally in these lines (176 - 177), we multiply features for each neighbour with the corresponding weights and sum over the neighbours to get new_feat.

I want to know, if this is a correct summary of the function or if I am missing or misunderstanding something here? Also, why was k set to 3 neighbours in this case? Is it an arbitrary choice? Thanks and regards.

Performance Variance

Hi,

Thanks for your great work and codes.

I run point-transformer several times on the same sever (using same configurations), but the results are quit difference, ranging from 68.x-70.x. Just want to know if someone else meet this variance?

best

what is the point of loop dataset 30 time during training

Hi, Thanks for the amazing work.

I wonder if you could share your thoughts behind looping the dataset 30 times in the training process. Would this case be overfitting issues? (As far as I can see overfitting does occur in the training process where mIOU on training sets reaches 0.95+)
Thanks,
Zhening

training problem

Hi, thanks for your great jobs.

May I know your GPU devices and training details?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.