Papers › PointConv: Deep Convolutional Networks on 3D Point Clouds

PointConv: Deep Convolutional Networks on 3D Point Clouds

17 Nov 2018CVPR 2019 6arXiv:1811.07246archive 2025-07-28

Wenxuan Wu, Zhongang Qi, Li Fuxin

Unlike images which are represented in regular dense grids, 3D point clouds are irregular and unordered, hence applying convolution on them can be difficult. In this paper, we extend the dynamic filter to a new convolution operation, named PointConv. PointConv can be applied on point clouds to build deep convolutional networks. We treat convolution kernels as nonlinear functions of the local coordinates of 3D points comprised of weight and density functions. With respect to a given point, the weight functions are learned with multi-layer perceptron networks and density functions through kernel density estimation. The most important contribution of this work is a novel reformulation proposed for efficiently computing the weight functions, which allowed us to dramatically scale up the network and significantly improve its performance. The learned convolution kernel can be used to compute translation-invariant and permutation-invariant convolution on any point set in the 3D space. Besides, PointConv can also be used as deconvolution operators to propagate features from a subsampled point cloud back to its original resolution. Experiments on ModelNet40, ShapeNet, and ScanNet show that deep convolutional neural networks built on PointConv are able to achieve state-of-the-art on challenging semantic segmentation benchmarks on 3D point clouds. Besides, our experiments converting CIFAR-10 into a point cloud showed that networks built on PointConv can match the performance of convolutional networks in 2D images of a similar structure.

PaperPDFConference PDFCodeCode Syntology ran

In Syntology Open this paper in Syntology's Atlas, the map of the papers in Syntology's graph and their citations.

For agents, Syntology's MCP tool lists every function and class Syntology harvested from this paper and whether it ran (how to connect): get_harvested_code_for_paper(arxiv_id="1811.07246")

Code

Syntology Ran 11 of 15 code samples harvested from 4 repositories linked to this paper; 4 have no recorded run. Of those that ran: 2 ran · honoured contract; 2 ran · our draft was wrong; 5 ran · fixture could not drive it; 2 ran with no contract checked.

By repository: official repository: 1 sample from 1 repository, 1 ran; community (archive-listed): 14 samples from 3 repositories, 10 ran. The run record, sample by sample. “Ran” means executed on a synthesized input, not that the code is correct or reproduces the paper.

DylanWusee/pointconv officialmentioned in papermentioned on GitHubtf report
DylanWusee/pointconv_pytorch mentioned on GitHubpytorchMIT report
Ghailen-Ben-Achour/PointConv_segmentation mentioned on GitHubtfNOASSERTION report
THHHomas/mls mentioned on GitHubpytorch report
Young98CN/pointconv_pytorch mentioned on GitHubpytorchMIT report
koritsky/pointconv mentioned on GitHubtfNOASSERTION report
vinits5/learning3d mentioned on GitHubpytorch report

Repository list and official/mentioned flags are the archive's, frozen 2025-07-28. Reachability, where shown, is from one Syntology probe window (2026-09-16 to 2026-09-18); repositories not probed show nothing. GitHub stars are not tracked.

Code Syntology ran Syntology

15 samples harvested; 11 ran; 2 honoured the contract we drafted; 4 have no recorded run. Read from Syntology's graph 2026-09-24; that is when this build read the record, not when the samples ran.

2ran · honoured contract
2ran · our draft was wrong
5ran · fixture could not drive it
2ran
4unverified

Licence: 1 of the 15 samples is pointer only, meaning Syntology does not serve that copy's text. This page shows no code text for any sample; each one links to its file in the repository.

Harvested from 4 repositories linked to this paper, official or community; each sample names its own and says which. “Ran” means the sample executed on a synthesized input. It does not mean the output is correct, and nothing here reproduces the paper's results. “Honoured” and “violated” refer to a contract Syntology drafted from the code itself; “our draft was wrong” and “fixture could not drive it” are failures of Syntology's instrument, not of the code.

Each sample ends with its code_sha256, Syntology's identity for that exact code. An agent fetches the stored sample with Syntology's MCP tool get_code(code_sha256="…") (how to connect); click an identity to copy that call.

Repository labels, per sample. official repository: The archive marks this repository official for the paper. named in the paper: The archive records that the paper mentions this repository; it is not marked official. community (archive-listed): In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper. found in paper text by Syntology: Syntology found this repository in the paper's own text; whether it is the authors' implementation is not asserted. community: Not in the archive's code links for this paper; a community repository Syntology harvested. Samples from a repository marked official are listed first. Licence labels name the repository's licence as recorded at harvest. “Pointer only” means Syntology does not serve that copy's text, for one of four reasons: no licence file was found; the licence was not identified; the licence is recorded as permissive but that copy's record is not marked cleared; or the licence is outside the permissive list Syntology serves text under (MIT, Apache-2.0, BSD and similar). Some licences outside that list permit redistribution, such as WTFPL, and GPL-3.0 under its conditions; they are simply not on the list. Hover a licence label for the reason. File links open the file on GitHub at the default branch, which may have changed since the harvest.

add_vote DylanWusee/pointconv/evaluate_scannet.py official repository ran · honoured contract licence not identified · pointer only · 0182cf468fff0658 · report
create_pointconv vinits5/learning3d/models/pointconv.py community (archive-listed) ran · our draft was wrong MIT (permissive) · 02c94555b6069d2e · report
generate_new_view THHHomas/mls/eval_cls_conv.py community (archive-listed) ran · fixture could not drive it fingerprinted MIT (permissive) · 47e1f8a08b59cb74 · report
index_points DylanWusee/pointconv_pytorch/utils/pointconv_util.py community (archive-listed) ran · fixture could not drive it MIT (permissive) · 573cb024ea47999f · report
normalize_data DylanWusee/pointconv_pytorch/provider.py community (archive-listed) ran fingerprinted MIT (permissive) · 59e9008f0a3743f1 · report
pc_normalize DylanWusee/pointconv_pytorch/data_utils/ModelNetDataLoader.py community (archive-listed) ran · honoured contract fingerprinted MIT (permissive) · 4783fbece52f500e · report
rotate_point_cloud_by_angle THHHomas/mls/eval_cls_conv.py community (archive-listed) ran · fixture could not drive it fingerprinted MIT (permissive) · 1e76fe3207797dd7 · report
shuffle_data DylanWusee/pointconv_pytorch/provider.py community (archive-listed) ran MIT (permissive) · 06353aadebc1724b · report
shuffle_points DylanWusee/pointconv_pytorch/provider.py community (archive-listed) ran · fixture could not drive it fingerprinted MIT (permissive) · a97f76b9c0811c93 · report
square_distance DylanWusee/pointconv_pytorch/utils/pointconv_util.py community (archive-listed) ran · fixture could not drive it MIT (permissive) · 580dee6761649b29 · report
to_categorical DylanWusee/pointconv_pytorch/utils/utils.py community (archive-listed) ran · our draft was wrong fingerprinted MIT (permissive) · 767b99615bbda28e · report
compute_cat_iou DylanWusee/pointconv_pytorch/utils/utils.py community (archive-listed) unverified MIT (permissive) · aa14435a8eb76c18 · report
farthest_point_sample DylanWusee/pointconv_pytorch/data_utils/ModelNetDataLoader.py community (archive-listed) unverified MIT (permissive) · f80066a00e7156a2 · report
test DylanWusee/pointconv_pytorch/utils/utils.py community (archive-listed) unverified MIT (permissive) · 3fbd70fccfa67f08 · report
timeit DylanWusee/pointconv_pytorch/utils/pointconv_util.py community (archive-listed) unverified MIT (permissive) · b1227ddb721e2999 · report

Tasks

3D Part Segmentation3D Point Cloud ClassificationDensity EstimationSemantic Segmentation

Results from the paper archive 2025-07-28

TaskDatasetModelMetricValueRank at snapshotLeaderboardReport
3D Part Segmentation IntrA PointConv DSC (A) 86.52 #2 of 7 Archive leaderboard report
3D Part Segmentation IntrA PointConv DSC (V) 97.18 #2 of 7 Archive leaderboard report
3D Part Segmentation IntrA PointConv IoU (A) 79.53 #2 of 7 Archive leaderboard report
3D Part Segmentation IntrA PointConv IoU (V) 94.65 #2 of 7 Archive leaderboard report
3D Part Segmentation ShapeNet-Part PointConv Class Average IoU 82.8 #43 of 67 Archive leaderboard report
3D Part Segmentation ShapeNet-Part PointConv Instance Average IoU 85.7 #43 of 67 Archive leaderboard report
3D Point Cloud Classification IntrA PointConv F1 score (5-fold) 0.883 #5 of 12 Archive leaderboard report
3D Point Cloud Classification ModelNet40 PointConv Overall Accuracy 92.5 #87 of 111 Archive leaderboard report
Semantic Segmentation ScanNet PointConv test mIoU 55.6 #31 of 45 Archive leaderboard report
Semantic Segmentation ScanNet PointConv val mIoU 61.0 #31 of 45 Archive leaderboard report

Ranks are positions in the archive's leaderboards as they stood at the 2025-07-28 snapshot. Results published since then are not among these rows, so a rank here is not a current standing.

Methods

Convolution

Report a problem or propose a change · a person checks every report against the paper or source before anything changes; decisions are listed on /corrections