GithubHelp home page GithubHelp logo

picassoplus's Introduction

Mesh Convolution With Continuous Filters for 3-D Surface Parsing

alt text

Introduction

Geometric feature learning for 3-D surfaces is critical for many applications in computer graphics and 3-D vision. However, deep learning currently lags in hierarchical modeling of 3-D surfaces due to the lack of required operations and/or their efficient implementations. This journal work is a sigificant extension of our original work presented in CVPR 2021. Together, we provide PicassoPlus for deep learning over heterogeneous 3D meshes. We propose a series of modular operations for effective geometric feature learning from 3-D triangle meshes. These operations include novel mesh convolutions, efficient mesh decimation, and associated mesh (un)poolings. Our mesh convolutions exploit spherical harmonics as orthonormal bases to create continuous convolutional filters. The mesh decimation module is GPU-accelerated and able to process batched meshes on-the-fly, while the (un)pooling operations compute features for upsampled/downsampled meshes. Leveraging the modular operations of PicassoPlus, we further contribute a neural network, PicassoNet++, for 3-D surface parsing. It achieves highly competitive performance for shape analysis and scene segmentation on prominent 3-D benchmarks.

Note: PicassoPlus has been moved to Pytorch. We no longer provide tensorflow support.

Citation

If you find our work useful in your research, please consider citing:

@article{lei2023mesh,
  title={Mesh Convolution With Continuous Filters for 3-D Surface Parsing},
  author={Lei, Huan and Akhtar, Naveed and Shah, Mubarak and Mian, Ajmal},
  journal={IEEE Transactions on Neural Networks and Learning Systems},
  year={2023},
  publisher={IEEE}
}
@inproceedings{lei2021picasso,
  title={Picasso: A CUDA-based Library for Deep Learning over 3D Meshes},
  author={Lei, Huan and Akhtar, Naveed and Mian, Ajmal},
  booktitle={Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition},
  pages={13854--13864},
  year={2021}
} 

Please also cite the original dataset if you use their data or our reprocessed data, and follow their original terms of use.

Pytorch Environment

1. Installation of Picasso

  • Install Pytorch and the other dependences in requirements.txt. For compatibility, we recommend install torch-scatter from source. Then install picasso:
    $ git clone https://github.com/EnyaHermite/PicassoPlus
    $ bash install_picasso.sh
    
  • The code has been test on GPU 3090, 4090 for multiple versions of python/pytorch/cuda/cudnn/ubuntu. Note: We assumed that the GPU supports a block of 1024 threads.

2. Data Preparation

  • Download the shared data of MeshCNN using download_extract_shapes.py, and S3DIS dataset using download_extract_scenes.sh.

    $ cd data
    $ python download_extract_shapes.py
    $ python download_extract_scenes.sh   
    $ cd ../preprocess
    $ python process_coseg_label.py
    $ python process_cubes_shrec_label.py
    $ python process_human_label.py
    
  • The MPI-Fasut dataset can be downloaded manually from here. After extracting its compressed file, run the following command from /preprocess folder to prepare its labels:

    $ python prepare_faust_label.py

  • Sorry, we cannot provide the scannet data. The remeshed ShapeNetCore data might be shared to the public after communication with the original organizers.

3. Usage of PicassoNet++

  • Shape Analysis

    • The training script takes $(dataset name) and $(gpu id) as input arguments. The supported dataset names are ['shrec', 'cubes', 'human', 'coseg_aliens', 'coseg_chairs', 'coseg_vases']. For example, to train the coseg_vases dataset on gpu 0, run the following command in the root folder:

      $ bash train_shapes.sh coseg_vases 0

  • Scene Segmentation

    • train
      $ bash train_scenes.sh s3dis 0
    • test
      $ bash eval_scenes.sh s3dis 0 /path/to/trained_model

4. How to design arbitrary mesh neural networks in PicassoPlus?

picassoplus's People

Contributors

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

picassoplus's Issues

pytorch code not even close to working

Hi @EnyaHermite

I am attempting to execute your pytorch version of PicassoNetII as defined in shape_cls.py and it is FAR from being executable.

I have encountered numerous operations in which two inputs are on gpu and cpu, wrong argument count for DualBlock and EncoderMeshBlock, and class attributes that do not exist (named incorrectly).

I am unsure if I can use this code. It is clear the pytorch PicassoNetII as defined in shape_cls.py was never tested.

Data Preparation

Hi @EnyaHermite, thanks for open-sourcing the code for this awesome work.
Could you please provide more information on how to process the datasets, such as scannet, scannet_texture, etc? I'm trying to run the pytorch branch of this repo.

Moreover, the gdrive link for the trained models is not working?

picasso can't installed perfectly

nnquery_gpu.cu
D:\vs2019\VC\Tools\MSVC\14.29.30133\bin\HostX86\x64\link.exe /nologo /INCREMENTAL:NO /LTCG /DLL /MANIFEST:EMBED,ID=2 /MANIFESTUAC:NO /LIBPATH:D:\Anaconda\envs\picassoplus\lib\site-packages\torch\lib "/LIBPATH:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.3\lib/x64" /LIBPATH:D:\Anaconda\envs\picassoplus\libs /LIBPATH:D:\Anaconda\envs\picassoplus /LIBPATH:D:\Anaconda\envs\picassoplus\PCbuild\amd64 /LIBPATH:D:\vs2019\VC\Tools\MSVC\14.29.30133\lib\x64 "/LIBPATH:C:\Program Files (x86)\Windows Kits\10\lib\10.0.19041.0\ucrt\x64" "/LIBPATH:C:\Program Files (x86)\Windows Kits\10\lib\10.0.19041.0\um\x64" c10.lib torch.lib torch_cpu.lib torch_python.lib cudart.lib c10_cuda.lib torch_cuda_cu.lib torch_cuda_cpp.lib /EXPORT:PyInit_point_nnquery build\temp.win-amd64-cpython-38\Release\picasso/point/pi_modules/source/nnquery.obj build\temp.win-amd64-cpython-38\Release\picasso/point/pi_modules/source/nnquery_gpu.obj /OUT:build\lib.win-amd64-cpython-38\point_nnquery.cp38-win_amd64.pyd /IMPLIB:build\temp.win-amd64-cpython-38\Release\picasso/point/pi_modules/source\point_nnquery.cp38-win_amd64.lib
正在创建库 build\temp.win-amd64-cpython-38\Release\picasso/point/pi_modules/source\point_nnquery.cp38-win_amd64.lib 和对象 build\temp.win-amd64-cpython-38\Release\picasso/point/pi_modules/source\point_nnquery.cp38-win_amd64.exp
nnquery.obj : error LNK2001: 无法解析的外部符号 "public: long * __cdecl at::TensorBase::data_ptr(void)const " (??$data_ptr@J@TensorBase@at@@QEBAPEAJXZ)
build\lib.win-amd64-cpython-38\point_nnquery.cp38-win_amd64.pyd : fatal error LNK1120: 1 个无法解析的外部命令
error: command 'D:\vs2019\VC\Tools\MSVC\14.29.30133\bin\HostX86\x64\link.exe' failed with exit code 1120

I don't konw how can I resolve this question,I think .cu files need modify by some ways

Dataset link failure

Hi,
I Try many times to download the dataset through your link, but there is nothing in the cloud drive.
I would greatly appreciate it if you could share another effective link to obtain the dataset.
Thanks!

about point-based covolution batch input

Thank you for the great work! In point-based covolution, input point features are input in batches, rather than concat each sample like mesh-based covulution. This requires the number of vertices in each sample to be the same. But due to the triangle degeneration, the real vertex number for every cropped sample will slightly differ from each other. How did you solve the problem of the different number of vertices in each sample in point-based covolution. Is it to fill the vertices of each sample in the batch according to the desired vertex size in each resolution mesh?
Hungry for your reply, thank you very much!

CUDA free failed: cudaErrorInvalidAdressSpace

Dear Enya,
I'm a masters student from Technical University of Denmark who is trying to use your framework for a project of mine.
I don't have much experience with TensorFlow so I'm using your Pytorch implementation.
I'm running the PicassoNet-II on a GPU-cluster operating on on a Ubuntu 18.04.6 LTS GPU cluster and i encounter the following error:

terminate called after throwing an instance of 'thrust::system::system_error'
what(): CUDA free failed: cudaErrorInvalidAddressSpace: operation not supported on global/shared address space

I believe the error comes from the decimate_gpu.cu however I'm not entirely sure why or how.
Can you help with this one?

Best,
Bjonze

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.