{"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/surface-representation-for-point-clouds","title":"Surface Representation for Point Clouds","arxiv_id":"2205.05740","date":"2022-05-11","proceeding":"CVPR 2022 1","authors":["Haoxi Ran","Jun Liu","Chengjie Wang"],"abstract":"Most prior work represents the shapes of point clouds by coordinates. However, it is insufficient to describe the local geometry directly. In this paper, we present \\textbf{RepSurf} (representative surfaces), a novel representation of point clouds to \\textbf{explicitly} depict the very local structure. We explore two variants of RepSurf, Triangular RepSurf and Umbrella RepSurf inspired by triangle meshes and umbrella curvature in computer graphics. We compute the representations of RepSurf by predefined geometric priors after surface reconstruction. RepSurf can be a plug-and-play module for most point cloud models thanks to its free collaboration with irregular points. Based on a simple baseline of PointNet++ (SSG version), Umbrella RepSurf surpasses the previous state-of-the-art by a large margin for classification, segmentation and detection on various benchmarks in terms of performance and efficiency. With an increase of around \\textbf{0.008M} number of parameters, \\textbf{0.04G} FLOPs, and \\textbf{1.12ms} inference time, our method achieves \\textbf{94.7\\%} (+0.5\\%) on ModelNet40, and \\textbf{84.6\\%} (+1.8\\%) on ScanObjectNN for classification, while \\textbf{74.3\\%} (+0.8\\%) mIoU on S3DIS 6-fold, and \\textbf{70.0\\%} (+1.6\\%) mIoU on ScanNet for segmentation. For detection, previous state-of-the-art detector with our RepSurf obtains \\textbf{71.2\\%} (+2.1\\%) mAP$\\mathit{_{25}}$, \\textbf{54.8\\%} (+2.0\\%) mAP$\\mathit{_{50}}$ on ScanNetV2, and \\textbf{64.9\\%} (+1.9\\%) mAP$\\mathit{_{25}}$, \\textbf{47.7\\%} (+2.5\\%) mAP$\\mathit{_{50}}$ on SUN RGB-D. Our lightweight Triangular RepSurf performs its excellence on these benchmarks as well. The code is publicly available at \\url{https://github.com/hancyran/RepSurf}.","url_abs":"https://arxiv.org/abs/2205.05740v2","url_pdf":"https://arxiv.org/pdf/2205.05740v2.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":"surface-representation-for-point-clouds","repo_url":"https://github.com/hancyran/RepSurf","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"Apache-2.0"}}],"tasks":[{"task_slug":"3d-object-detection","task_name":"3D Object Detection"},{"task_slug":"3d-point-cloud-classification","task_name":"3D Point Cloud Classification"},{"task_slug":"3d-semantic-segmentation","task_name":"3D Semantic Segmentation"},{"task_slug":"semantic-segmentation","task_name":"Semantic Segmentation"},{"task_slug":"supervised-only-3d-point-cloud-classification","task_name":"Supervised Only 3D Point Cloud Classification"},{"task_slug":"surface-reconstruction","task_name":"Surface Reconstruction"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[{"leaderboard":"/sota/3d-object-detection-on-sun-rgbd-val","task":"3D Object Detection","dataset":"SUN-RGBD val","model":"RepSurf-U","rank_in_archive_order":13,"of":32,"metrics":{"mAP@0.25":"64.9","mAP@0.5":"47.7"},"uses_additional_data":false},{"leaderboard":"/sota/3d-object-detection-on-scannetv2","task":"3D Object Detection","dataset":"ScanNetV2","model":"RepSurf-U","rank_in_archive_order":18,"of":33,"metrics":{"mAP@0.25":"71.2","mAP@0.5":"54.8"},"uses_additional_data":false},{"leaderboard":"/sota/3d-point-cloud-classification-on-modelnet40","task":"3D Point Cloud Classification","dataset":"ModelNet40","model":"RepSurf-U","rank_in_archive_order":9,"of":111,"metrics":{"FLOPs":"0.81G","Number of params":"1.48M","Overall Accuracy":"94.7"},"uses_additional_data":false},{"leaderboard":"/sota/3d-point-cloud-classification-on-scanobjectnn","task":"3D Point Cloud Classification","dataset":"ScanObjectNN","model":"RepSurf-U (2x)","rank_in_archive_order":52,"of":77,"metrics":{"FLOPs":"2.43G","Number of params":"6.80M","Overall Accuracy":"86.0"},"uses_additional_data":false},{"leaderboard":"/sota/3d-point-cloud-classification-on-scanobjectnn","task":"3D Point Cloud Classification","dataset":"ScanObjectNN","model":"RepSurf-U","rank_in_archive_order":58,"of":77,"metrics":{"FLOPs":"0.81G","Number of params":"1.48M","Overall Accuracy":"84.6"},"uses_additional_data":false},{"leaderboard":"/sota/semantic-segmentation-on-s3dis","task":"Semantic Segmentation","dataset":"S3DIS","model":"RepSurf-U","rank_in_archive_order":14,"of":54,"metrics":{"FLOPs":"1.04G","Mean IoU":"74.3","Number of params":"0.97M","Params (M)":"0.97","mAcc":"82.6","oAcc":"90.8"},"uses_additional_data":false},{"leaderboard":"/sota/semantic-segmentation-on-s3dis-area5","task":"Semantic Segmentation","dataset":"S3DIS Area5","model":"RepSurf-U","rank_in_archive_order":36,"of":61,"metrics":{"FLOPs":"1.04G","Number of params":"0.97M","mAcc":"76.0","mIoU":"68.9","oAcc":"90.2"},"uses_additional_data":false}],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2205.05740","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2205.05740"}},"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/hancyran/RepSurf","reach":{"status":"ok","spdx":"Apache-2.0"}}],"summary":{"ran":2,"unverified":13},"by_repo_kind":{"official":{"samples":15,"ran":2,"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":0,"samples":[{"code_sha256_prefix":"bdaeeb5851d70f67","entry":"xyz2cylind","repo":"hancyran/RepSurf","repo_kind":"official","path":"segmentation/modules/polar_utils.py","file_url":"https://github.com/hancyran/RepSurf/blob/HEAD/segmentation/modules/polar_utils.py","link_basis":"harvester_set","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":"bdaeeb5851d70f67"}},{"code_sha256_prefix":"bcf83718dbe85554","entry":"xyz2sphere","repo":"hancyran/RepSurf","repo_kind":"official","path":"segmentation/modules/polar_utils.py","file_url":"https://github.com/hancyran/RepSurf/blob/HEAD/segmentation/modules/polar_utils.py","link_basis":"harvester_set","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":"bcf83718dbe85554"}},{"code_sha256_prefix":"90abbae1e8a9515c","entry":"cal_normal","repo":"hancyran/RepSurf","repo_kind":"official","path":"classification/modules/recons_utils.py","file_url":"https://github.com/hancyran/RepSurf/blob/HEAD/classification/modules/recons_utils.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"90abbae1e8a9515c"}},{"code_sha256_prefix":"e165142db58e96b5","entry":"farthest_point_sample","repo":"hancyran/RepSurf","repo_kind":"official","path":"classification/modules/pointnet2_utils.py","file_url":"https://github.com/hancyran/RepSurf/blob/HEAD/classification/modules/pointnet2_utils.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"e165142db58e96b5"}},{"code_sha256_prefix":"b6178ce69e144ce7","entry":"get_aug_args","repo":"hancyran/RepSurf","repo_kind":"official","path":"classification/modules/ptaug_utils.py","file_url":"https://github.com/hancyran/RepSurf/blob/HEAD/classification/modules/ptaug_utils.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"b6178ce69e144ce7"}},{"code_sha256_prefix":"25dec942fa25547e","entry":"index_points","repo":"hancyran/RepSurf","repo_kind":"official","path":"classification/modules/pointnet2_utils.py","file_url":"https://github.com/hancyran/RepSurf/blob/HEAD/classification/modules/pointnet2_utils.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"25dec942fa25547e"}},{"code_sha256_prefix":"43f6d0436aebc666","entry":"pca","repo":"hancyran/RepSurf","repo_kind":"official","path":"classification/modules/recons_utils.py","file_url":"https://github.com/hancyran/RepSurf/blob/HEAD/classification/modules/recons_utils.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"43f6d0436aebc666"}},{"code_sha256_prefix":"ef36d757b28c9f41","entry":"resort_points","repo":"hancyran/RepSurf","repo_kind":"official","path":"classification/modules/repsurface_utils.py","file_url":"https://github.com/hancyran/RepSurf/blob/HEAD/classification/modules/repsurface_utils.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"ef36d757b28c9f41"}},{"code_sha256_prefix":"cf984792acb072ff","entry":"shift_point_cloud","repo":"hancyran/RepSurf","repo_kind":"official","path":"classification/modules/ptaug_utils.py","file_url":"https://github.com/hancyran/RepSurf/blob/HEAD/classification/modules/ptaug_utils.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"cf984792acb072ff"}},{"code_sha256_prefix":"9d026e3279fe6446","entry":"square_distance","repo":"hancyran/RepSurf","repo_kind":"official","path":"classification/modules/pointnet2_utils.py","file_url":"https://github.com/hancyran/RepSurf/blob/HEAD/classification/modules/pointnet2_utils.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"9d026e3279fe6446"}},{"code_sha256_prefix":"8a2b98e6b1b0965e","entry":"transform_point_cloud","repo":"hancyran/RepSurf","repo_kind":"official","path":"classification/modules/ptaug_utils.py","file_url":"https://github.com/hancyran/RepSurf/blob/HEAD/classification/modules/ptaug_utils.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"8a2b98e6b1b0965e"}},{"code_sha256_prefix":"6b78fa00ee2dcd42","entry":"transform_point_cloud_coord","repo":"hancyran/RepSurf","repo_kind":"official","path":"segmentation/modules/aug_utils.py","file_url":"https://github.com/hancyran/RepSurf/blob/HEAD/segmentation/modules/aug_utils.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"6b78fa00ee2dcd42"}},{"code_sha256_prefix":"1794cefb931feef6","entry":"transform_point_cloud_rgb","repo":"hancyran/RepSurf","repo_kind":"official","path":"segmentation/modules/aug_utils.py","file_url":"https://github.com/hancyran/RepSurf/blob/HEAD/segmentation/modules/aug_utils.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"1794cefb931feef6"}},{"code_sha256_prefix":"ab4a32fde08cd85f","entry":"xyz2cylind","repo":"hancyran/RepSurf","repo_kind":"official","path":"classification/modules/polar_utils.py","file_url":"https://github.com/hancyran/RepSurf/blob/HEAD/classification/modules/polar_utils.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"ab4a32fde08cd85f"}},{"code_sha256_prefix":"c5f00144812c665a","entry":"xyz2sphere","repo":"hancyran/RepSurf","repo_kind":"official","path":"classification/modules/polar_utils.py","file_url":"https://github.com/hancyran/RepSurf/blob/HEAD/classification/modules/polar_utils.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"c5f00144812c665a"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}