{"about":{"site":"https://codewithpapers.app","non_affiliation":"Code with Papers and Syntology are not affiliated with, endorsed by, or sponsored by Papers with Code, Meta, or the pwc-archive mirror.","licence":"CC BY-SA 4.0","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","attribution":"https://codewithpapers.app/attribution","modified":"archive material modified by Syntology; see the attribution page"},"url":"/paper/pointconv-deep-convolutional-networks-on-3d","title":"PointConv: Deep Convolutional Networks on 3D Point Clouds","arxiv_id":"1811.07246","date":"2018-11-17","proceeding":"CVPR 2019 6","authors":["Wenxuan Wu","Zhongang Qi","Li Fuxin"],"abstract":"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.","url_abs":"https://arxiv.org/abs/1811.07246v3","url_pdf":"https://arxiv.org/pdf/1811.07246v3.pdf","source":{"archive":"pwc-archive (Hugging Face), CC BY-SA 4.0","snapshot":"2025-07-28","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","row_kind":"abstracts"},"code_links":[{"paper_slug":"pointconv-deep-convolutional-networks-on-3d","repo_url":"https://github.com/DylanWusee/pointconv","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"tf","reach":null},{"paper_slug":"pointconv-deep-convolutional-networks-on-3d","repo_url":"https://github.com/DylanWusee/pointconv_pytorch","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}},{"paper_slug":"pointconv-deep-convolutional-networks-on-3d","repo_url":"https://github.com/ECE685-FinalProject/3D-object-recognition","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":null},{"paper_slug":"pointconv-deep-convolutional-networks-on-3d","repo_url":"https://github.com/Ghailen-Ben-Achour/PointConv_segmentation","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"tf","reach":{"status":"ok","spdx":"NOASSERTION"}},{"paper_slug":"pointconv-deep-convolutional-networks-on-3d","repo_url":"https://github.com/THHHomas/mls","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":null},{"paper_slug":"pointconv-deep-convolutional-networks-on-3d","repo_url":"https://github.com/Young98CN/pointconv_pytorch","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}},{"paper_slug":"pointconv-deep-convolutional-networks-on-3d","repo_url":"https://github.com/dgriffiths3/pointconv-tensorflow2","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"tf","reach":{"status":"ok"}},{"paper_slug":"pointconv-deep-convolutional-networks-on-3d","repo_url":"https://github.com/koritsky/pointconv","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"tf","reach":{"status":"ok","spdx":"NOASSERTION"}},{"paper_slug":"pointconv-deep-convolutional-networks-on-3d","repo_url":"https://github.com/vinits5/learning3d","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":null}],"tasks":[{"task_slug":"3d-part-segmentation","task_name":"3D Part Segmentation"},{"task_slug":"3d-point-cloud-classification","task_name":"3D Point Cloud Classification"},{"task_slug":"density-estimation","task_name":"Density Estimation"},{"task_slug":"semantic-segmentation","task_name":"Semantic Segmentation"}],"methods":[{"method_slug":"convolution","method_name":"Convolution"}],"datasets_introduced":[],"methods_introduced":[],"results":[{"leaderboard":"/sota/3d-part-segmentation-on-intra","task":"3D Part Segmentation","dataset":"IntrA","model":"PointConv","rank_in_archive_order":2,"of":7,"metrics":{"DSC (A)":"86.52","DSC (V)":"97.18","IoU (A)":"79.53","IoU (V)":"94.65"},"uses_additional_data":false},{"leaderboard":"/sota/3d-part-segmentation-on-shapenet-part","task":"3D Part Segmentation","dataset":"ShapeNet-Part","model":"PointConv","rank_in_archive_order":43,"of":67,"metrics":{"Class Average IoU":"82.8","Instance Average IoU":"85.7"},"uses_additional_data":false},{"leaderboard":"/sota/3d-point-cloud-classification-on-intra","task":"3D Point Cloud Classification","dataset":"IntrA","model":"PointConv","rank_in_archive_order":5,"of":12,"metrics":{"F1 score (5-fold)":"0.883"},"uses_additional_data":false},{"leaderboard":"/sota/3d-point-cloud-classification-on-modelnet40","task":"3D Point Cloud Classification","dataset":"ModelNet40","model":"PointConv","rank_in_archive_order":87,"of":111,"metrics":{"Overall Accuracy":"92.5"},"uses_additional_data":false},{"leaderboard":"/sota/semantic-segmentation-on-scannet","task":"Semantic Segmentation","dataset":"ScanNet","model":"PointConv","rank_in_archive_order":31,"of":45,"metrics":{"test mIoU":"55.6","val mIoU":"61.0"},"uses_additional_data":false}],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=1811.07246","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"1811.07246"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-24T18:15:14+00:00","read_at_is":"when the build read Syntology's graph, not when any sample ran","claim":"Per-sample execution status on synthesized fixtures; not a correctness claim about the paper. Samples come from repositories linked to the paper, official or community; repo_kind says which.","repos":[{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/DylanWusee/pointconv","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/THHHomas/mls","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/Ghailen-Ben-Achour/PointConv_segmentation","reach":{"status":"ok","spdx":"NOASSERTION"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/dgriffiths3/pointconv-tensorflow2","reach":{"status":"ok"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/vinits5/learning3d","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/DylanWusee/pointconv_pytorch","reach":{"status":"ok","spdx":"MIT"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/ECE685-FinalProject/3D-object-recognition","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/koritsky/pointconv","reach":{"status":"ok","spdx":"NOASSERTION"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/Young98CN/pointconv_pytorch","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"ran_honours":2,"ran_draft_wrong":2,"ran_fixture":5,"ran":2,"unverified":4},"by_repo_kind":{"official":{"samples":1,"ran":1,"repositories":1},"listed":{"samples":14,"ran":10,"repositories":3}},"repo_kind_vocabulary":{"official":"The archive marks this repository official for the paper","named_in_paper":"The archive records that the paper mentions this repository; it is not marked official","listed":"In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper","found_in_text":"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"},"n_pointer_only_for_licence":1,"samples":[{"code_sha256_prefix":"0182cf468fff0658","entry":"add_vote","repo":"DylanWusee/pointconv","repo_kind":"official","path":"evaluate_scannet.py","file_url":"https://github.com/DylanWusee/pointconv/blob/HEAD/evaluate_scannet.py","link_basis":"first_harvest_node","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":"invariant","behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"0182cf468fff0658"}},{"code_sha256_prefix":"02c94555b6069d2e","entry":"create_pointconv","repo":"vinits5/learning3d","repo_kind":"listed","path":"models/pointconv.py","file_url":"https://github.com/vinits5/learning3d/blob/HEAD/models/pointconv.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"02c94555b6069d2e"}},{"code_sha256_prefix":"47e1f8a08b59cb74","entry":"generate_new_view","repo":"THHHomas/mls","repo_kind":"listed","path":"eval_cls_conv.py","file_url":"https://github.com/THHHomas/mls/blob/HEAD/eval_cls_conv.py","link_basis":"first_harvest_node","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"47e1f8a08b59cb74"}},{"code_sha256_prefix":"573cb024ea47999f","entry":"index_points","repo":"DylanWusee/pointconv_pytorch","repo_kind":"listed","path":"utils/pointconv_util.py","file_url":"https://github.com/DylanWusee/pointconv_pytorch/blob/HEAD/utils/pointconv_util.py","link_basis":"harvester_set","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":"invariant","behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"573cb024ea47999f"}},{"code_sha256_prefix":"59e9008f0a3743f1","entry":"normalize_data","repo":"DylanWusee/pointconv_pytorch","repo_kind":"listed","path":"provider.py","file_url":"https://github.com/DylanWusee/pointconv_pytorch/blob/HEAD/provider.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"59e9008f0a3743f1"}},{"code_sha256_prefix":"4783fbece52f500e","entry":"pc_normalize","repo":"DylanWusee/pointconv_pytorch","repo_kind":"listed","path":"data_utils/ModelNetDataLoader.py","file_url":"https://github.com/DylanWusee/pointconv_pytorch/blob/HEAD/data_utils/ModelNetDataLoader.py","link_basis":"harvester_set","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"4783fbece52f500e"}},{"code_sha256_prefix":"1e76fe3207797dd7","entry":"rotate_point_cloud_by_angle","repo":"THHHomas/mls","repo_kind":"listed","path":"eval_cls_conv.py","file_url":"https://github.com/THHHomas/mls/blob/HEAD/eval_cls_conv.py","link_basis":"first_harvest_node","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"1e76fe3207797dd7"}},{"code_sha256_prefix":"06353aadebc1724b","entry":"shuffle_data","repo":"DylanWusee/pointconv_pytorch","repo_kind":"listed","path":"provider.py","file_url":"https://github.com/DylanWusee/pointconv_pytorch/blob/HEAD/provider.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"06353aadebc1724b"}},{"code_sha256_prefix":"a97f76b9c0811c93","entry":"shuffle_points","repo":"DylanWusee/pointconv_pytorch","repo_kind":"listed","path":"provider.py","file_url":"https://github.com/DylanWusee/pointconv_pytorch/blob/HEAD/provider.py","link_basis":"harvester_set","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"a97f76b9c0811c93"}},{"code_sha256_prefix":"580dee6761649b29","entry":"square_distance","repo":"DylanWusee/pointconv_pytorch","repo_kind":"listed","path":"utils/pointconv_util.py","file_url":"https://github.com/DylanWusee/pointconv_pytorch/blob/HEAD/utils/pointconv_util.py","link_basis":"harvester_set","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":"invariant","behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"580dee6761649b29"}},{"code_sha256_prefix":"767b99615bbda28e","entry":"to_categorical","repo":"DylanWusee/pointconv_pytorch","repo_kind":"listed","path":"utils/utils.py","file_url":"https://github.com/DylanWusee/pointconv_pytorch/blob/HEAD/utils/utils.py","link_basis":"harvester_set","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"767b99615bbda28e"}},{"code_sha256_prefix":"aa14435a8eb76c18","entry":"compute_cat_iou","repo":"DylanWusee/pointconv_pytorch","repo_kind":"listed","path":"utils/utils.py","file_url":"https://github.com/DylanWusee/pointconv_pytorch/blob/HEAD/utils/utils.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"aa14435a8eb76c18"}},{"code_sha256_prefix":"f80066a00e7156a2","entry":"farthest_point_sample","repo":"DylanWusee/pointconv_pytorch","repo_kind":"listed","path":"data_utils/ModelNetDataLoader.py","file_url":"https://github.com/DylanWusee/pointconv_pytorch/blob/HEAD/data_utils/ModelNetDataLoader.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"f80066a00e7156a2"}},{"code_sha256_prefix":"3fbd70fccfa67f08","entry":"test","repo":"DylanWusee/pointconv_pytorch","repo_kind":"listed","path":"utils/utils.py","file_url":"https://github.com/DylanWusee/pointconv_pytorch/blob/HEAD/utils/utils.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"3fbd70fccfa67f08"}},{"code_sha256_prefix":"b1227ddb721e2999","entry":"timeit","repo":"DylanWusee/pointconv_pytorch","repo_kind":"listed","path":"utils/pointconv_util.py","file_url":"https://github.com/DylanWusee/pointconv_pytorch/blob/HEAD/utils/pointconv_util.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"b1227ddb721e2999"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}