{"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/kpconv-flexible-and-deformable-convolution","title":"KPConv: Flexible and Deformable Convolution for Point Clouds","arxiv_id":"1904.08889","date":"2019-04-18","proceeding":"ICCV 2019 10","authors":["Hugues Thomas","Charles R. Qi","Jean-Emmanuel Deschaud","Beatriz Marcotegui","François Goulette","Leonidas J. Guibas"],"abstract":"We present Kernel Point Convolution (KPConv), a new design of point convolution, i.e. that operates on point clouds without any intermediate representation. The convolution weights of KPConv are located in Euclidean space by kernel points, and applied to the input points close to them. Its capacity to use any number of kernel points gives KPConv more flexibility than fixed grid convolutions. Furthermore, these locations are continuous in space and can be learned by the network. Therefore, KPConv can be extended to deformable convolutions that learn to adapt kernel points to local geometry. Thanks to a regular subsampling strategy, KPConv is also efficient and robust to varying densities. Whether they use deformable KPConv for complex tasks, or rigid KPconv for simpler tasks, our networks outperform state-of-the-art classification and segmentation approaches on several datasets. We also offer ablation studies and visualizations to provide understanding of what has been learned by KPConv and to validate the descriptive power of deformable KPConv.","url_abs":"https://arxiv.org/abs/1904.08889v2","url_pdf":"https://arxiv.org/pdf/1904.08889v2.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":"kpconv-flexible-and-deformable-convolution","repo_url":"https://github.com/HuguesTHOMAS/KPConv","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"tf","reach":{"status":"ok","spdx":"MIT"}},{"paper_slug":"kpconv-flexible-and-deformable-convolution","repo_url":"https://github.com/Arjun-NA/KPConv_for_DALES","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"tf","reach":{"status":"ok","spdx":"MIT"}},{"paper_slug":"kpconv-flexible-and-deformable-convolution","repo_url":"https://github.com/HuguesTHOMAS/KPConv-PyTorch","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":null},{"paper_slug":"kpconv-flexible-and-deformable-convolution","repo_url":"https://github.com/JohnRomanelis/KPConv_torch_geometric","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok"}},{"paper_slug":"kpconv-flexible-and-deformable-convolution","repo_url":"https://github.com/XuyangBai/KPConv.pytorch","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok"}},{"paper_slug":"kpconv-flexible-and-deformable-convolution","repo_url":"https://github.com/Yacovitch/EyeNet","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"tf","reach":{"status":"ok","spdx":"NOASSERTION"}},{"paper_slug":"kpconv-flexible-and-deformable-convolution","repo_url":"https://github.com/genglinliu/KPConv_Pytorch","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok"}},{"paper_slug":"kpconv-flexible-and-deformable-convolution","repo_url":"https://github.com/ldkong1205/Robo3D","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok"}},{"paper_slug":"kpconv-flexible-and-deformable-convolution","repo_url":"https://github.com/plusmultiply/mprm","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"tf","reach":{"status":"ok","spdx":"MIT"}},{"paper_slug":"kpconv-flexible-and-deformable-convolution","repo_url":"https://github.com/isl-org/Open3D-ML","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":0,"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":"3d-semantic-segmentation","task_name":"3D Semantic Segmentation"},{"task_slug":"descriptive","task_name":"Descriptive"},{"task_slug":"lidar-semantic-segmentation","task_name":"LIDAR Semantic Segmentation"},{"task_slug":"robust-3d-semantic-segmentation","task_name":"Robust 3D Semantic Segmentation"},{"task_slug":"scene-segmentation","task_name":"Scene Segmentation"},{"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-shapenet-part","task":"3D Part Segmentation","dataset":"ShapeNet-Part","model":"KPConv","rank_in_archive_order":25,"of":67,"metrics":{"Class Average IoU":"85.1","Instance Average IoU":"86.4"},"uses_additional_data":false},{"leaderboard":"/sota/3d-point-cloud-classification-on-modelnet40","task":"3D Point Cloud Classification","dataset":"ModelNet40","model":"KPConv","rank_in_archive_order":79,"of":111,"metrics":{"Overall Accuracy":"92.9"},"uses_additional_data":false},{"leaderboard":"/sota/3d-semantic-segmentation-on-dales","task":"3D Semantic Segmentation","dataset":"DALES","model":"KPConv","rank_in_archive_order":1,"of":9,"metrics":{"Model size":"14M","Overall Accuracy":"97.8","mIoU":"81.1"},"uses_additional_data":false},{"leaderboard":"/sota/3d-semantic-segmentation-on-stpls3d","task":"3D Semantic Segmentation","dataset":"STPLS3D","model":"KpConv","rank_in_archive_order":1,"of":6,"metrics":{"mIOU":"53.73"},"uses_additional_data":false},{"leaderboard":"/sota/3d-semantic-segmentation-on-semantickitti","task":"3D Semantic Segmentation","dataset":"SemanticKITTI","model":"KPConv","rank_in_archive_order":23,"of":45,"metrics":{"test mIoU":"58.8%"},"uses_additional_data":false},{"leaderboard":"/sota/3d-semantic-segmentation-on-sensaturban","task":"3D Semantic Segmentation","dataset":"SensatUrban","model":"KPConv","rank_in_archive_order":4,"of":8,"metrics":{"mIoU":"57.58"},"uses_additional_data":false},{"leaderboard":"/sota/lidar-semantic-segmentation-on-paris-lille-3d","task":"LIDAR Semantic Segmentation","dataset":"Paris-Lille-3D","model":"KPConv deform","rank_in_archive_order":5,"of":9,"metrics":{"mIOU":"0.759"},"uses_additional_data":false},{"leaderboard":"/sota/robust-3d-semantic-segmentation-on","task":"Robust 3D Semantic Segmentation","dataset":"SemanticKITTI-C","model":"KPConv","rank_in_archive_order":2,"of":22,"metrics":{"mean Corruption Error (mCE)":"99.54%"},"uses_additional_data":false},{"leaderboard":"/sota/scene-segmentation-on-scannet","task":"Scene Segmentation","dataset":"ScanNet","model":"KPConv","rank_in_archive_order":3,"of":3,"metrics":{"3DIoU":"68.6"},"uses_additional_data":false},{"leaderboard":"/sota/semantic-segmentation-on-s3dis","task":"Semantic Segmentation","dataset":"S3DIS","model":"KPConv","rank_in_archive_order":23,"of":54,"metrics":{"Mean IoU":"70.6","Number of params":"14.1M","Params (M)":"14.1","mAcc":"79.1"},"uses_additional_data":false},{"leaderboard":"/sota/semantic-segmentation-on-s3dis-area5","task":"Semantic Segmentation","dataset":"S3DIS Area5","model":"KPConv","rank_in_archive_order":42,"of":61,"metrics":{"Number of params":"14.1M","mAcc":"72.8","mIoU":"67.1"},"uses_additional_data":false},{"leaderboard":"/sota/semantic-segmentation-on-scannet","task":"Semantic Segmentation","dataset":"ScanNet","model":"KpConv","rank_in_archive_order":29,"of":45,"metrics":{"test mIoU":"68.0","val mIoU":"69.2"},"uses_additional_data":false},{"leaderboard":"/sota/semantic-segmentation-on-semantic3d","task":"Semantic Segmentation","dataset":"Semantic3D","model":"KPConv","rank_in_archive_order":7,"of":17,"metrics":{"mIoU":"74.6%"},"uses_additional_data":false}],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=1904.08889","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"1904.08889"}},"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/ldkong1205/Robo3D","reach":{"status":"ok"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/plusmultiply/mprm","reach":{"status":"ok","spdx":"MIT"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/Arjun-NA/KPConv_for_DALES","reach":{"status":"ok","spdx":"MIT"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/HuguesTHOMAS/KPConv","reach":{"status":"ok","spdx":"MIT"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/XuyangBai/KPConv.pytorch","reach":{"status":"ok"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/isl-org/Open3D-ML","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/Yacovitch/EyeNet","reach":{"status":"ok","spdx":"NOASSERTION"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/HuguesTHOMAS/KPConv-PyTorch","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/genglinliu/KPConv_Pytorch","reach":{"status":"ok"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/JohnRomanelis/KPConv_torch_geometric","reach":{"status":"ok"}}],"summary":{"ran_draft_wrong":3,"ran_honours":1,"ran_fixture":1,"unverified":7},"by_repo_kind":{"official":{"samples":6,"ran":0,"repositories":1},"listed":{"samples":6,"ran":5,"repositories":2}},"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":3,"samples":[{"code_sha256_prefix":"bbafdd82ae3987bf","entry":"closest_pool","repo":"isl-org/Open3D-ML","repo_kind":"listed","path":"ml3d/torch/models/kpconv.py","file_url":"https://github.com/isl-org/Open3D-ML/blob/HEAD/ml3d/torch/models/kpconv.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":"invariant","behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"bbafdd82ae3987bf"}},{"code_sha256_prefix":"c545a5b0a698e295","entry":"create_3D_rotations","repo":"HuguesTHOMAS/KPConv-PyTorch","repo_kind":"listed","path":"kernels/kernel_points.py","file_url":"https://github.com/HuguesTHOMAS/KPConv-PyTorch/blob/HEAD/kernels/kernel_points.py","link_basis":"first_harvest_node","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":"c545a5b0a698e295"}},{"code_sha256_prefix":"9a89c500824a1c5c","entry":"gather","repo":"isl-org/Open3D-ML","repo_kind":"listed","path":"ml3d/torch/models/kpconv.py","file_url":"https://github.com/isl-org/Open3D-ML/blob/HEAD/ml3d/torch/models/kpconv.py","link_basis":"first_harvest_node","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":"invariant","behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"9a89c500824a1c5c"}},{"code_sha256_prefix":"a40d478bb51450e9","entry":"kernel_point_optimization_debug","repo":"HuguesTHOMAS/KPConv-PyTorch","repo_kind":"listed","path":"kernels/kernel_points.py","file_url":"https://github.com/HuguesTHOMAS/KPConv-PyTorch/blob/HEAD/kernels/kernel_points.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"a40d478bb51450e9"}},{"code_sha256_prefix":"c0186f8ddb0bc115","entry":"radius_gaussian","repo":"isl-org/Open3D-ML","repo_kind":"listed","path":"ml3d/torch/models/kpconv.py","file_url":"https://github.com/isl-org/Open3D-ML/blob/HEAD/ml3d/torch/models/kpconv.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"c0186f8ddb0bc115"}},{"code_sha256_prefix":"814a2fe9241bee1e","entry":"IoU_class_metrics","repo":"HuguesTHOMAS/KPConv","repo_kind":"official","path":"plot_convergence.py","file_url":"https://github.com/HuguesTHOMAS/KPConv/blob/HEAD/plot_convergence.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":"814a2fe9241bee1e"}},{"code_sha256_prefix":"09d5696850a35aee","entry":"IoU_multi_metrics","repo":"HuguesTHOMAS/KPConv","repo_kind":"official","path":"plot_convergence.py","file_url":"https://github.com/HuguesTHOMAS/KPConv/blob/HEAD/plot_convergence.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":"09d5696850a35aee"}},{"code_sha256_prefix":"6a88f1ae24fa26b2","entry":"bias_variable","repo":"HuguesTHOMAS/KPConv","repo_kind":"official","path":"models/network_blocks.py","file_url":"https://github.com/HuguesTHOMAS/KPConv/blob/HEAD/models/network_blocks.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":"6a88f1ae24fa26b2"}},{"code_sha256_prefix":"4383ecd8cc0719fa","entry":"ind_max_pool","repo":"HuguesTHOMAS/KPConv","repo_kind":"official","path":"models/network_blocks.py","file_url":"https://github.com/HuguesTHOMAS/KPConv/blob/HEAD/models/network_blocks.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":"4383ecd8cc0719fa"}},{"code_sha256_prefix":"9b6e188d38ea6880","entry":"p2p_fitting_regularizer","repo":"HuguesTHOMAS/KPConv-PyTorch","repo_kind":"listed","path":"models/architectures.py","file_url":"https://github.com/HuguesTHOMAS/KPConv-PyTorch/blob/HEAD/models/architectures.py","link_basis":"first_harvest_node","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":"9b6e188d38ea6880"}},{"code_sha256_prefix":"2e38027f9a1a89e6","entry":"running_mean","repo":"HuguesTHOMAS/KPConv","repo_kind":"official","path":"plot_convergence.py","file_url":"https://github.com/HuguesTHOMAS/KPConv/blob/HEAD/plot_convergence.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":"2e38027f9a1a89e6"}},{"code_sha256_prefix":"5a6188c7d118c3fc","entry":"weight_variable","repo":"HuguesTHOMAS/KPConv","repo_kind":"official","path":"models/network_blocks.py","file_url":"https://github.com/HuguesTHOMAS/KPConv/blob/HEAD/models/network_blocks.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":"5a6188c7d118c3fc"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}