Giter Club home page Giter Club logo

grid-gcn's Introduction

Grid-GCN for Fast and Scalable Point Cloud Learning (CVPR2020)

Please cite us:

@article{1912.02984,
  Author = {Qiangeng Xu and Xudong Sun and Cho-Ying Wu and Panqu Wang and Ulrich Neumann},
  Title = {Grid-GCN for Fast and Scalable Point Cloud Learning},
  Year = {2019},
  Eprint = {arXiv:1912.02984},
  Howpublished = {Proceedings of the IEEE Conference on Computer Vision and Pattern
    Recognition (CVPR 2020)}
}

Requirement: GGCN implemented by MXNET 1.5.0

make sure you have gcc version suggested by MXNET 1.5.0

Install Our CUDA modules to MXNET Libary:

cd gridifyop
vim Makefile  # then change mx_home to your mxnet-apache directory, and adjust nvcc command according to your gpu model and cuda version. here we use compute power 61 and 75 for 1080 ti and 2080 ti. save the change
make
cd ..

Data Preparation

  • Classification

    • ModelNet40

    We refer to pointnet https://github.com/charlesq34/pointnet/blob/master/provider.py

    cd data/
    wget https://shapenet.cs.stanford.edu/media/modelnet40_ply_hdf5_2048.zip
    unzip modelnet40_ply_hdf5_2048.zip
    unzip it and put it inside data/
    
    • ModelNet10

    please refer to pointnet++'s github

    download  modelnet40_normal_resampled from https://github.com/charlesq34/pointnet2
    take the modelnet10_train.txt, modelnet10_test.txt and extract from modelnet40_ply_hdf5_2048 to create a modelnet10_ply_hdf5_2048
    or use modelnet40_normal_resampled directly, but configuration file configs_10.yaml new: True -> False
    
  • Segmentation/ScanNet

    Please refer to pointnet++ for downloading ScanNet use link:

    # in data/
    wget https://shapenet.cs.stanford.edu/media/scannet_data_pointnet2.zip
    unzip scannet_data_pointnet2.zip
    mv data scannet
    
    
    

Training

  • Classification

    • ModelNet40

    cd classification
    nohup python -u train/train_gpu_ggcn_mdl40.py &> mdl40.log & 
    
    
    • ModelNet10

    please refer to pointnet++

    cd classification
    nohup python -u train/train_gpu_ggcn_mdl10.py &> mdl10.log &
    
    
  • Segmentation

    • ScanNet

    Please refer to pointnet++ for downloading ScanNet use link:

    cd segmentation
    
    ### then you cd configs -> go to configs.yaml to choose 8192 points model or 81920 points model by leaving one of them uncommented
    
    nohup python -u train_test/train_ggcn_scannet.py &> train.log  &
    

Testing

  • Segmentation

    • ScanNet

    cd segmentation
    
    ### then you cd configs -> go to configs.yaml to choose 8192 points model or 81920 points model by leaving one of them uncommented
    ### you should also change load_model_prefix to the intented trained model file in your output directory.
    
    nohup python -u train_test/test_ggcn_scannet.py &> test.log  &
    

grid-gcn's People

Contributors

xharlie 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  avatar  avatar  avatar  avatar

grid-gcn's Issues

about gridifyops compling

Hello, Thanks for sharing your codes. It is an interesting work!
To use the 3rdparty, I install mxnet=1.5.0 from the source code. I test it with an example to make sure the functions are correct.

image

Following the procedure suggested by the author, I change the mx_home and set the compute power as 61.
However, there is an error.

image

image

Makefile:25: recipe for target 'gridifyknn.o' failed
make: *** [gridifyknn.o] Error 1

I have no idea how to deal with it. Could you give me some advice? Thanks!

Question about voxel size in CAS

Thanks for your work, it is great.
I have question about the voxel size, in your down sample part, if the voxel size is too large, there is not enough number of voxel centers, that means I cannot get M points firstly.
I think the down sample will be broken in this situation?
Am i correct or do you have some methods to solve it ?

grid gcn交流

你好,请问你把这个网络调通了吗?方便留个联系方式交流一下吗

Question on Environmental configuration

Hello, I'm a novice. I'm sorry to take up your time. After compiling mxnet and your gridofyop module, I was return the following error when I run the dataset:

nohup: 忽略输入
/home/christina/Grid-GCN/classification/train/../../gridifyop/additional.so
terminate called after throwing an instance of 'dmlc::Error'
what(): [10:39:56] /home/christina/incubator-mxnet/src/runtime/registry.cc:73: Check failed: override: Global PackedFunc _Integer is already registered

I don't know what to do. I just come to you when I really can't find a solution.
By the way, in the classification section of readme, you said "refer to Pointnet", it means your program need Pointnet, or it just for comparison with your results?
Thank you very much.

What is proper way to configure mxnet?

Hello. I'm trying to reproduce your work. Thank you for sharing the code perfectly. But I have some problems to configure mxnet(Not sure, maybe).

Currently, I use the docker image from Nvidia. (https://ngc.nvidia.com/catalog/containers/nvidia:mxnet)

It seems your gridifyop need headers on 3rdparty, src and include to build. So I added apache/incubator-mxnet on my workspace with following command.

git clone -b 1.5.0 --recursive https://github.com/apache/incubator-mxnet mxnet

And I update Makefile as the following image.

image

Then, I got an error like the followings.

$ CUDA_VISIBLE_DEVICES=1 python -u train/train_gpu_ggcn_mdl40.py > .
./../GAPCN/GridGCN_v1_20200921/mdl40.log
terminate called after throwing an instance of 'std::bad_alloc'
  what():  std::bad_alloc
Aborted (core dumped

Now, I have some questions.

  1. Is there a docker image that you use?
  2. Do I have to build mxnet from the source?
  3. Is there a way to get more detail debug log?

Thank you :)

about compiling

Hi, When I use Anaconda to install mxnet=1.5.1,like Command:pip install mxnet-cu100==1.5.1,
I can run the example successfully, But when I try to find the 'mx_home', there is no those directions such as follows.
Could you tell where are those directions: ../3rdparty/..
thank you for your kind help!

dmlc_inc=${mx_home}/3rdparty/dmlc-core/include
nnvm_inc=${mx_home}/3rdparty/nnvm/include
mshadow_inc=${mx_home}/3rdparty/mshadow
dlpack_inc=${mx_home}/3rdparty/dlpack/include
mxnet_src_inc=${mx_home}/src/operator
mxnet_common_inc=${mx_home}/src/common

ndim check failed

Hello, I'm a novice. I'm sorry to take up your time. After compiling mxnet and your gridofyop module, I was return the following error when I run the dataset:

nohup: 忽略输入
terminate called after throwing an instance of 'dmlc::Error'
what(): [10:57:02] /home/christina/apache-mxnet-src-1.5.0-incubating/include/mxnet/./tuple.h:354: Check failed: ndim >= -1 (-131976896 vs. -1) : ndim cannot be less than -1, received -131976896
Stack trace:
[bt] (0) /home/christina/Grid-GCN/classification/train/../../gridifyop/additional.so(dmlc::LogMessageFatal::~LogMessageFatal()+0x43) [0x7ffa179ea333]
[bt] (1) /home/christina/Grid-GCN/classification/train/../../gridifyop/additional.so(mxnet::Tuple::SetDim(int)+0x1cb) [0x7ffa179eccdb]
[bt] (2) /usr/lib/libmxnet.so(dmlc::parameter::FieldEntryBase<dmlc::parameter::FieldEntry<mxnet::Tuple >, mxnet::Tuple >::GetStringValueabi:cxx11 const+0xaa) [0x7ff9eeb0c25a]
[bt] (3) /home/christina/Grid-GCN/classification/train/../../gridifyop/additional.so(dmlc::parameter::ParamManager::GetFieldInfo() const+0x2c7) [0x7ffa179ec667]
[bt] (4) /usr/lib/libmxnet.so(+0x1dda1dd) [0x7ff9ee5ed1dd]
[bt] (5) /lib64/ld-linux-x86-64.so.2(+0x10783) [0x7ffa256c7783]
[bt] (6) /lib64/ld-linux-x86-64.so.2(+0x1524f) [0x7ffa256cc24f]
[bt] (7) /lib/x86_64-linux-gnu/libc.so.6(_dl_catch_exception+0x6f) [0x7ffa2520e51f]
[bt] (8) /lib64/ld-linux-x86-64.so.2(+0x1481a) [0x7ffa256cb81a]

I don't know what to do. I just come to you when I really can't find a solution.
By the way, in the classification section of readme, you said "refer to Pointnet", it means your program need Pointnet, or it just for comparison with your results?
Thank you very much.

about the mxnet configuration

hello.
I got some errors when making the file.
when I try to make the file, there is error:
/usr/bin/ld: cannot find -lmxnet

could you pls give me some instructions?

Question on kpt consistency

Hello! I joined CVPR2020 to talk with you but I coudln't as you don't answer me ;/

I have no choice but to write my question here so please understand me.

I'm trying to get only some(maybe 8) meaningful keypoint(such as FPS points) as below
plane_spin this pic shows the detected results from KeypointNet.
(https://keypointnet.github.io/)
the Figure5 in your paper shows an example of sampled kpts on airplane and I wonder your method can detect(sample) on the same positions on the surface consistently as the above picture?

especially I want to find the keypoint on a symmetric object like a cup or a bottle.

that's really what I'm looking for! if not can you suggest an idea to achieve my goal?
I guess I need to train your model with an additional loss function like the one used in KeypointNet.

please give me some hint.

Thank you!

handling RGB point clouds

Hi Xharlie,

I'm trying to use grid-gcn for point cloud segmentation. From your paper it seems you trained the network using RGB- point clouds, nevertheless, I feel the code you provided deals with points only having (x, y, z) coordinates as features. I'm trying to modify the code to use other features but I'm struggling to understand the code that builds the network symbol.
I would really appreciate if you could guide me so that I can extend the code to the usage of input points with additional features, showing me what are the lines I should modify.

Thank you in advance.

modelnet10

Hello, could you provide a data set modelnet10_ply_hdf5_2048, thank you very much!

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.