{"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/rethinking-network-design-and-local-geometry-1","title":"Rethinking Network Design and Local Geometry in Point Cloud: A Simple Residual MLP Framework","arxiv_id":"2202.07123","date":"2022-02-15","proceeding":"ICLR 2022 4","authors":["Xu Ma","Can Qin","Haoxuan You","Haoxi Ran","Yun Fu"],"abstract":"Point cloud analysis is challenging due to irregularity and unordered data structure. To capture the 3D geometries, prior works mainly rely on exploring sophisticated local geometric extractors using convolution, graph, or attention mechanisms. These methods, however, incur unfavorable latency during inference, and the performance saturates over the past few years. In this paper, we present a novel perspective on this task. We notice that detailed local geometrical information probably is not the key to point cloud analysis -- we introduce a pure residual MLP network, called PointMLP, which integrates no sophisticated local geometrical extractors but still performs very competitively. Equipped with a proposed lightweight geometric affine module, PointMLP delivers the new state-of-the-art on multiple datasets. On the real-world ScanObjectNN dataset, our method even surpasses the prior best method by 3.3% accuracy. We emphasize that PointMLP achieves this strong performance without any sophisticated operations, hence leading to a superior inference speed. Compared to most recent CurveNet, PointMLP trains 2x faster, tests 7x faster, and is more accurate on ModelNet40 benchmark. We hope our PointMLP may help the community towards a better understanding of point cloud analysis. The code is available at https://github.com/ma-xu/pointMLP-pytorch.","url_abs":"https://arxiv.org/abs/2202.07123v2","url_pdf":"https://arxiv.org/pdf/2202.07123v2.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":"rethinking-network-design-and-local-geometry-1","repo_url":"https://github.com/ma-xu/pointmlp-pytorch","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"Apache-2.0"}}],"tasks":[{"task_slug":"3d-point-cloud-classification","task_name":"3D Point Cloud Classification"},{"task_slug":"point-cloud-segmentation","task_name":"Point Cloud Segmentation"},{"task_slug":"supervised-only-3d-point-cloud-classification","task_name":"Supervised Only 3D Point Cloud Classification"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[{"leaderboard":"/sota/3d-point-cloud-classification-on-modelnet40","task":"3D Point Cloud Classification","dataset":"ModelNet40","model":"PointMLP","rank_in_archive_order":11,"of":111,"metrics":{"Mean Accuracy":"91.4","Overall Accuracy":"94.5"},"uses_additional_data":false},{"leaderboard":"/sota/3d-point-cloud-classification-on-scanobjectnn","task":"3D Point Cloud Classification","dataset":"ScanObjectNN","model":"PointMLP","rank_in_archive_order":53,"of":77,"metrics":{"Mean Accuracy":"84.4","Overall Accuracy":"85.7"},"uses_additional_data":false},{"leaderboard":"/sota/3d-point-cloud-classification-on-scanobjectnn","task":"3D Point Cloud Classification","dataset":"ScanObjectNN","model":"PointMLP-elite","rank_in_archive_order":60,"of":77,"metrics":{"Mean Accuracy":"81.8","Overall Accuracy":" 83.8"},"uses_additional_data":false},{"leaderboard":"/sota/point-cloud-segmentation-on-pointcloud-c","task":"Point Cloud Segmentation","dataset":"PointCloud-C","model":"PointMLP","rank_in_archive_order":4,"of":11,"metrics":{"mean Corruption Error (mCE)":"0.977"},"uses_additional_data":false},{"leaderboard":"/sota/supervised-only-3d-point-cloud-classification","task":"Supervised Only 3D Point Cloud Classification","dataset":"ScanObjectNN","model":"PointMLP","rank_in_archive_order":8,"of":12,"metrics":{"GFLOPs":"31.4","Number of params (M)":"12.6","Overall Accuracy (PB_T50_RS)":"85.4"},"uses_additional_data":false}],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2202.07123","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2202.07123"}},"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":"deterministic:regex_extraction","url":"https://github.com/ma-xu/pointMLP-pytorch","reach":{"status":"ok","spdx":"Apache-2.0"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/ma-xu/pointmlp-pytorch","reach":{"status":"ok","spdx":"Apache-2.0"}}],"summary":{"ran_fixture":3,"ran":6,"ran_draft_wrong":1},"by_repo_kind":{"official":{"samples":8,"ran":8,"repositories":1}},"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":2,"samples":[{"code_sha256_prefix":"449a0265144f6530","entry":"index_points","repo":null,"repo_kind":null,"path":null,"file_url":null,"link_basis":"identical_code_first_harvested_elsewhere","language":"python","status":"ran_fixture","verification_level":2,"contract_check":"RAISES","metamorphic_tier":"invariant","behaviour_fingerprint":false,"licence":null,"inline_ok":false,"mcp_get_code":{"code_sha256":"449a0265144f6530"}},{"code_sha256_prefix":"26a19f56c677c289","entry":"ConvBNReLU1D","repo":"ma-xu/pointmlp-pytorch","repo_kind":"official","path":"classification_ModelNet40/models/pointmlp.py","file_url":"https://github.com/ma-xu/pointmlp-pytorch/blob/HEAD/classification_ModelNet40/models/pointmlp.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"26a19f56c677c289"}},{"code_sha256_prefix":"4016e6fe8b4197d0","entry":"ConvBNReLURes1D","repo":"ma-xu/pointmlp-pytorch","repo_kind":"official","path":"classification_ModelNet40/models/pointmlp.py","file_url":"https://github.com/ma-xu/pointmlp-pytorch/blob/HEAD/classification_ModelNet40/models/pointmlp.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"4016e6fe8b4197d0"}},{"code_sha256_prefix":"a59e49e189815469","entry":"LocalGrouper","repo":"ma-xu/pointmlp-pytorch","repo_kind":"official","path":"classification_ModelNet40/models/pointmlp.py","file_url":"https://github.com/ma-xu/pointmlp-pytorch/blob/HEAD/classification_ModelNet40/models/pointmlp.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"a59e49e189815469"}},{"code_sha256_prefix":"c1bbda9d8854e8d6","entry":"Model","repo":"ma-xu/pointmlp-pytorch","repo_kind":"official","path":"classification_ModelNet40/models/pointmlp.py","file_url":"https://github.com/ma-xu/pointmlp-pytorch/blob/HEAD/classification_ModelNet40/models/pointmlp.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"c1bbda9d8854e8d6"}},{"code_sha256_prefix":"01c6204da6d2e1e3","entry":"PosExtraction","repo":"ma-xu/pointmlp-pytorch","repo_kind":"official","path":"classification_ModelNet40/models/pointmlp.py","file_url":"https://github.com/ma-xu/pointmlp-pytorch/blob/HEAD/classification_ModelNet40/models/pointmlp.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"01c6204da6d2e1e3"}},{"code_sha256_prefix":"87c2190f708f0959","entry":"PreExtraction","repo":"ma-xu/pointmlp-pytorch","repo_kind":"official","path":"classification_ModelNet40/models/pointmlp.py","file_url":"https://github.com/ma-xu/pointmlp-pytorch/blob/HEAD/classification_ModelNet40/models/pointmlp.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"87c2190f708f0959"}},{"code_sha256_prefix":"194020d4610c8bad","entry":"get_activation","repo":"ma-xu/pointmlp-pytorch","repo_kind":"official","path":"classification_ModelNet40/models/pointmlp.py","file_url":"https://github.com/ma-xu/pointmlp-pytorch/blob/HEAD/classification_ModelNet40/models/pointmlp.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"194020d4610c8bad"}},{"code_sha256_prefix":"3fc6f6b239b211f9","entry":"knn_point","repo":"ma-xu/pointmlp-pytorch","repo_kind":"official","path":"classification_ModelNet40/models/pointmlp.py","file_url":"https://github.com/ma-xu/pointmlp-pytorch/blob/HEAD/classification_ModelNet40/models/pointmlp.py","link_basis":"first_harvest_node","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"3fc6f6b239b211f9"}},{"code_sha256_prefix":"3bfe172e686075cd","entry":"square_distance","repo":null,"repo_kind":null,"path":null,"file_url":null,"link_basis":"identical_code_first_harvested_elsewhere","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":null,"inline_ok":false,"mcp_get_code":{"code_sha256":"3bfe172e686075cd"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}