Giter VIP home page Giter VIP logo

pointgl's Introduction

PointGL: A Simple Global-Local Framework for Efficient Point Cloud Analysis [TMM 2024]

Official implementation of [PointGL: A Simple Global-Local Framework for Efficient Point Cloud Analysis].

The paper has been accepted by TMM.

Introduction

Efficient analysis of point clouds holds paramount significance in real-world 3D applications. Currently, prevailing point-based models adhere to the PointNet++ methodology, which involves embedding and abstracting point features within a sequence of spatially overlapping local point sets, resulting in noticeable computational redundancy. Drawing inspiration from the streamlined paradigm of pixel embedding followed by regional pooling in Convolutional Neural Networks (CNNs), we introduce a novel, uncomplicated yet potent architecture known as PointGL, crafted to facilitate efficient point cloud analysis. PointGL employs a hierarchical process of feature acquisition through two recursive steps. First, the Global Point Embedding leverages straightforward residual Multilayer Perceptrons (MLPs) to effectuate feature embedding for each individual point. Second, the novel Local Graph Pooling technique characterizes point-to-point relationships and abstracts regional representations through succinct local graphs. The harmonious fusion of one-time point embedding and parameter-free graph pooling contributes to PointGL's defining attributes of minimized model complexity and heightened efficiency. Our PointGL attains state-of-the-art accuracy on the ScanObjectNN dataset while exhibiting a runtime that is more than 5 times faster and utilizing only approximately 4% of the FLOPs and 30% of the parameters compared to the recent PointMLP model.

Requirements

Install

# Create a new conda environment
conda create -n pointgl python=3.8 -y

# install CUDA 11.3 torch 1.12
pip install torch==1.12.1+cu113 torchvision==0.13.1+cu113 torchaudio==0.12.1 --extra-index-url https://download.pytorch.org/whl/cu113

# install requirements
pip install -r requirements.txt

# install cpp extensions, the pointnet++ library
cd openpoints/cpp/pointnet2_batch
python setup.py install
cd ../

# grid_subsampling library. necessary only if interested in S3DIS_sphere
cd subsampling
python setup.py build_ext --inplace
cd ..


# point transformer library. Necessary only if interested in Point Transformer and Stratified Transformer
cd pointops/
python setup.py install
cd ..

# Blow are functions that optional. Necessary only if interested in reconstruction tasks such as completion
cd chamfer_dist
python setup.py install
cd ../emd
python setup.py install
cd ../../../

Dataset

ScanObjectNN

Download ScanObjectNN and unzip the folder under ./data/ScanObjectNN. The directory structure should be:

|data/
|--- ...
|--- ScanObjectNN
    |--- h5_files
        |--- main_split
            |--- training_objectdataset_augmentedrot_scale75.h5
            |--- test_objectdataset_augmentedrot_scale75.h5

ScanObjectNN-C

Download ScanObjectNN-C dataset and unzip the folder under ./data/ScanObjectNN_C. The directory structure should be:

│data/
|--- ...
|--- ScanObjectNN_C/
    |--- scanobjectnn_c/
        |--- scale_0.h5
        |--- ...
        |--- scale_4.h5

Get Started

ScanObjectNN

CUDA_VISIBLE_DEVICES=0 python examples/classification/main.py --cfg cfgs/scanobjectnn/pointgl.yaml

Acknowlegment

This repo benefits from ModelNet-C, PointCloud-C and the excellent codebase PointNext. Thanks for their wonderful works.

Citation


Contact

If you have any question about this project, please feel free to contact [email protected].

pointgl's People

Contributors

roywangj avatar

Stargazers

GKr avatar Romain Janvier avatar Jingxu Wang avatar  avatar  avatar  avatar Md Meraz avatar  avatar  avatar

Watchers

 avatar

Forkers

liuxinren456852

pointgl's Issues

网络结构上的问题

大佬你好,我在梳理pointGL网络结构(直接debug该代码openpoints/backbone/pointgl.py)的时候发现了有几个问题,特地来向你求证一下:
1.第271行中(fps_idx = furthest_point_sample(xyz, xyz.shape[1]//self.reduce).long())最远点采样的点数应该是self.reduce吧,如果是xyz.shape[1]//self.reduce的话,则每次最远点采样的点数是2,感觉不合理。
2.经过local graph pooling后输出的x的通道数和下一层中point embedding卷积操作的通道数不一致,比如经过stage1后得到的x_shape为(1,131,512),而stage2中embedding卷积的输入通道数要求为128,即应该输入的x_shape应该为(1,128,512)。

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.