[ICCV 2021 Oral] PoinTr: Diverse Point Cloud Completion with Geometry-Aware Transformers
Alternatives To Pointr
Project NameStarsDownloadsRepos Using ThisPackages Using ThisMost Recent CommitTotal ReleasesLatest ReleaseOpen IssuesLicenseLanguage
Opencv69,1613515 hours ago29September 22, 20222,466apache-2.0C++
Open Source Computer Vision Library
Cs Video Courses56,257
a day ago17
List of Computer Science courses with video lectures.
D2l Zh44,013
1a day ago45March 25, 202234apache-2.0Python
a month ago235otherC++
OpenPose: Real-time multi-person keypoint detection library for body, face, hands, and foot estimation
Applied Ml24,242
7 days ago3mit
📚 Papers & tech blogs by companies sharing their work on data science & machine learning in production.
Mediapipe21,9739415 hours ago24June 28, 2022293apache-2.0C++
Cross-platform, customizable ML solutions for live and streaming media.
3 months agon,ullotherC
YOLOv4 / Scaled-YOLOv4 / YOLO - Neural Networks for Object Detection (Windows and Linux version of Darknet )
Pytorch Cyclegan And Pix2pix19,434
3 months ago476otherPython
Image-to-Image Translation in PyTorch
4 days ago252Jupyter Notebook
Learn OpenCV : C++ and Python Examples
D2l En18,001
2 days ago99otherPython
Interactive deep learning book with multi-framework code, math, and discussions. Adopted at 400 universities from 60 countries including Stanford, MIT, Harvard, and Cambridge.
Alternatives To Pointr
Select To Compare

Alternative Project Comparisons

PoinTr: Diverse Point Cloud Completion with Geometry-Aware Transformers


Created by Xumin Yu*, Yongming Rao*, Ziyi Wang, Zuyan Liu, Jiwen Lu, Jie Zhou

[arXiv] [Video] [Dataset] [Models] [supp]

This repository contains PyTorch implementation for PoinTr: Diverse Point Cloud Completion with Geometry-Aware Transformers (ICCV 2021 Oral Presentation).

PoinTr is a transformer-based model for point cloud completion. By representing the point cloud as a set of unordered groups of points with position embeddings, we convert the point cloud to a sequence of point proxies and employ a transformer encoder-decoder architecture for generation. We also propose two more challenging benchmarks ShapeNet-55/34 with more diverse incomplete point clouds that can better reflect the real-world scenarios to promote future research.



  • 2023-1-11 Release AdaPoinTr (PoinTr + Adaptive Denoising Queries), achieving SOTA performance on various benchmarks. Arxiv.
  • 2022-06-01 Implement SnowFlakeNet.
  • 2021-10-07 Our solution based on PoinTr wins the Championship on MVP Completion Challenge (ICCV Workshop 2021). The code will come soon.
  • 2021-09-09 Fix a bug in datasets/PCNDataset.py(#27), and update the performance of PoinTr on PCN benchmark (CD from 8.38 to 7.26).

Pretrained Models

We provide pretrained PoinTr models: | dataset | url| performance | | --- | --- | --- | | ShapeNet-55 | [Tsinghua Cloud] / [Google Drive] / [BaiDuYun] (code:erdh) | CD = 1.09e-3| | ShapeNet-34 | [Tsinghua Cloud] / [Google Drive] / [BaiDuYun] (code:atbb ) | CD = 2.05e-3| | PCN | [Tsinghua Cloud] / [Google Drive] / [BaiDuYun] (code:9g79) | CD = 8.38e-3| | PCN_new | [Tsinghua Cloud] / [Google Drive] / [BaiDuYun] (code:aru3 ) |CD = 7.26e-3| | KITTI | [Tsinghua Cloud] / [Google Drive] / [BaiDuYun] (code:99om) | MMD = 5.04e-4 |

We provide pretrained AdaPoinTr models (coming soon): | dataset | url| performance | | --- | --- | --- | | ShapeNet-55 | Tsinghua Cloud / Google Drive / BaiDuYun | CD = 0.81e-3| | ShapeNet-34 | Tsinghua Cloud / Google Drive / BaiDuYun | CD = 1.23e-3| | PCN | [Tsinghua Cloud] / [Google Drive] / [BaiDuYun](code:rc7p) | CD = 6.53e-3|



  • PyTorch >= 1.7.0
  • python >= 3.7
  • CUDA >= 9.0
  • GCC >= 4.9
  • torchvision
  • timm
  • open3d
  • tensorboardX
pip install -r requirements.txt

Building Pytorch Extensions for Chamfer Distance, PointNet++ and kNN

NOTE: PyTorch >= 1.7 and GCC >= 4.9 are required.

# Chamfer Distance
bash install.sh

The solution for a common bug in chamfer distance installation can be found in Issue #6

# PointNet++
pip install "git+https://github.com/erikwijmans/Pointnet2_PyTorch.git#egg=pointnet2_ops&subdirectory=pointnet2_ops_lib"
pip install --upgrade https://github.com/unlimblue/KNN_CUDA/releases/download/0.2/KNN_CUDA-0.2-py3-none-any.whl

Note: If you still get ModuleNotFoundError: No module named 'gridding' or something similar then run these steps

    1. cd into extensions/Module (eg extensions/gridding)
    2. run `python setup.py install`

That will fix the ModuleNotFoundError.


The details of our new ShapeNet-55/34 datasets and other existing datasets can be found in DATASET.md.


To inference sample(s) with pretrained model

python tools/inference.py \
[--pc_root <path> or --pc <file>] \
[--save_vis_img] \
[--out_pc_root <dir>] \

For example, inference all samples under demo/ and save the results under inference_result/

python tools/inference.py \
cfgs/PCN_models/AdaPoinTr.yaml ckpts/AdaPoinTr_PCN.pth \
--pc_root demo/ \ 
--save_vis_img  \
--out_pc_root inference_result/ \


To evaluate a pre-trained PoinTr model on the Three Dataset with single GPU, run:

bash ./scripts/test.sh <GPU_IDS>  \
    --ckpts <path> \
    --config <config> \
    --exp_name <name> \
    [--mode <easy/median/hard>]

Some examples:

Test the PoinTr pretrained model on the PCN benchmark:

bash ./scripts/test.sh 0 \
    --ckpts ./pretrained/PoinTr_PCN.pth \
    --config ./cfgs/PCN_models/PoinTr.yaml \
    --exp_name example

Test the PoinTr pretrained model on ShapeNet55 benchmark (easy mode):

bash ./scripts/test.sh 0 \
    --ckpts ./pretrained/PoinTr_ShapeNet55.pth \
    --config ./cfgs/ShapeNet55_models/PoinTr.yaml \
    --mode easy \
    --exp_name example

Test the PoinTr pretrained model on the KITTI benchmark:

bash ./scripts/test.sh 0 \
    --ckpts ./pretrained/PoinTr_KITTI.pth \
    --config ./cfgs/KITTI_models/PoinTr.yaml \
    --exp_name example
CUDA_VISIBLE_DEVICES=0 python KITTI_metric.py \
    --vis <visualization_path> 


To train a point cloud completion model from scratch, run:

# Use DistributedDataParallel (DDP)
bash ./scripts/dist_train.sh <NUM_GPU> <port> \
    --config <config> \
    --exp_name <name> \
    [--resume] \
    [--start_ckpts <path>] \
    [--val_freq <int>]
# or just use DataParallel (DP)
bash ./scripts/train.sh <GPUIDS> \
    --config <config> \
    --exp_name <name> \
    [--resume] \
    [--start_ckpts <path>] \
    [--val_freq <int>]

Some examples:

Train a PoinTr model on PCN benchmark with 2 gpus:

CUDA_VISIBLE_DEVICES=0,1 bash ./scripts/dist_train.sh 2 13232 \
    --config ./cfgs/PCN_models/PoinTr.yaml \
    --exp_name example

Resume a checkpoint:

CUDA_VISIBLE_DEVICES=0,1 bash ./scripts/dist_train.sh 2 13232 \
    --config ./cfgs/PCN_models/PoinTr.yaml \
    --exp_name example --resume

Finetune a PoinTr on PCNCars

CUDA_VISIBLE_DEVICES=0,1 bash ./scripts/dist_train.sh 2 13232 \
    --config ./cfgs/KITTI_models/PoinTr.yaml \
    --exp_name example \
    --start_ckpts ./weight.pth

Train a PoinTr model with a single GPU:

bash ./scripts/train.sh 0 \
    --config ./cfgs/KITTI_models/PoinTr.yaml \
    --exp_name example

We also provide the Pytorch implementation of several baseline models including GRNet, PCN, TopNet and FoldingNet. For example, to train a GRNet model on ShapeNet-55, run:

CUDA_VISIBLE_DEVICES=0,1 bash ./scripts/dist_train.sh 2 13232 \
    --config ./cfgs/ShapeNet55_models/GRNet.yaml \
    --exp_name example

Completion Results on ShapeNet55 and KITTI-Cars



MIT License


Our code is inspired by GRNet and mmdetection3d.


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

  title={PoinTr: Diverse Point Cloud Completion with Geometry-Aware Transformers},
  author={Yu, Xumin and Rao, Yongming and Wang, Ziyi and Liu, Zuyan and Lu, Jiwen and Zhou, Jie},
Popular Deep Learning Projects
Popular Computer Vision Projects
Popular Machine Learning Categories
Related Searches

Get A Weekly Email With Trending Projects For These Categories
No Spam. Unsubscribe easily at any time.
Deep Learning
Computer Vision