{"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/self-positioning-point-based-transformer-for","title":"Self-positioning Point-based Transformer for Point Cloud Understanding","arxiv_id":"2303.16450","date":"2023-03-29","proceeding":"CVPR 2023 1","authors":["Jinyoung Park","Sanghyeok Lee","Sihyeon Kim","Yunyang Xiong","Hyunwoo J. Kim"],"abstract":"Transformers have shown superior performance on various computer vision tasks with their capabilities to capture long-range dependencies. Despite the success, it is challenging to directly apply Transformers on point clouds due to their quadratic cost in the number of points. In this paper, we present a Self-Positioning point-based Transformer (SPoTr), which is designed to capture both local and global shape contexts with reduced complexity. Specifically, this architecture consists of local self-attention and self-positioning point-based global cross-attention. The self-positioning points, adaptively located based on the input shape, consider both spatial and semantic information with disentangled attention to improve expressive power. With the self-positioning points, we propose a novel global cross-attention mechanism for point clouds, which improves the scalability of global self-attention by allowing the attention module to compute attention weights with only a small set of self-positioning points. Experiments show the effectiveness of SPoTr on three point cloud tasks such as shape classification, part segmentation, and scene segmentation. In particular, our proposed model achieves an accuracy gain of 2.6% over the previous best models on shape classification with ScanObjectNN. We also provide qualitative analyses to demonstrate the interpretability of self-positioning points. The code of SPoTr is available at https://github.com/mlvlab/SPoTr.","url_abs":"https://arxiv.org/abs/2303.16450v1","url_pdf":"https://arxiv.org/pdf/2303.16450v1.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":"self-positioning-point-based-transformer-for","repo_url":"https://github.com/mlvlab/spotr","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":0,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}}],"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":"scene-segmentation","task_name":"Scene 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"}],"methods":[{"method_slug":"absolute-position-encodings","method_name":"Absolute Position Encodings"},{"method_slug":"adam","method_name":"Adam"},{"method_slug":"attention","method_name":"Attention"},{"method_slug":"bpe","method_name":"BPE"},{"method_slug":"dense-connections","method_name":"Dense Connections"},{"method_slug":"dropout","method_name":"Dropout"},{"method_slug":"label-smoothing","method_name":"Label Smoothing"},{"method_slug":"layer-normalization","method_name":"Layer Normalization"},{"method_slug":"linear-layer","method_name":"Linear Layer"},{"method_slug":"multi-head-attention","method_name":"Multi-Head Attention"},{"method_slug":"position-wise-feed-forward-layer","method_name":"Position-Wise Feed-Forward Layer"},{"method_slug":"residual-connection","method_name":"Residual Connection"},{"method_slug":"softmax","method_name":"Softmax"},{"method_slug":"transformer","method_name":"Transformer"}],"datasets_introduced":[],"methods_introduced":[],"results":[{"leaderboard":"/sota/3d-part-segmentation-on-shapenet-part","task":"3D Part Segmentation","dataset":"ShapeNet-Part","model":"SPoTr","rank_in_archive_order":4,"of":67,"metrics":{"Class Average IoU":"85.4","Instance Average IoU":"87.2"},"uses_additional_data":false},{"leaderboard":"/sota/3d-point-cloud-classification-on-scanobjectnn","task":"3D Point Cloud Classification","dataset":"ScanObjectNN","model":"SPoTr","rank_in_archive_order":34,"of":77,"metrics":{"Mean Accuracy":"86.8","Overall Accuracy":"88.6"},"uses_additional_data":false},{"leaderboard":"/sota/semantic-segmentation-on-s3dis-area5","task":"Semantic Segmentation","dataset":"S3DIS Area5","model":"SPoTr","rank_in_archive_order":30,"of":61,"metrics":{"Number of params":"N/A","mAcc":"76.4","mIoU":"70.8","oAcc":"90.7"},"uses_additional_data":false},{"leaderboard":"/sota/supervised-only-3d-point-cloud-classification","task":"Supervised Only 3D Point Cloud Classification","dataset":"ScanObjectNN","model":"SPoTr","rank_in_archive_order":4,"of":12,"metrics":{"GFLOPs":"10.8","Number of params (M)":"1.7","Overall Accuracy (PB_T50_RS)":"88.6"},"uses_additional_data":false}],"syntology":{"syntology_url":null,"atlas_url":"https://app.syntology.ai/?focus=2303.16450","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2303.16450"}},"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/mlvlab/spotr","reach":{"status":"ok","spdx":"MIT"}},{"provenance":"deterministic:regex_extraction","url":"https://github.com/mlvlab/SPoTr","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"ran_honours":1,"unverified":11},"by_repo_kind":{"official":{"samples":12,"ran":1,"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":"4783fbece52f500e","entry":"pc_normalize","repo":"mlvlab/SPoTr","repo_kind":"official","path":"openpoints/dataset/modelnet/modelnet40_normal_resampled_loader.py","file_url":"https://github.com/mlvlab/SPoTr/blob/HEAD/openpoints/dataset/modelnet/modelnet40_normal_resampled_loader.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":"65c970f35976128a","entry":"concat_collate_fn","repo":"mlvlab/SPoTr","repo_kind":"official","path":"openpoints/dataset/build.py","file_url":"https://github.com/mlvlab/SPoTr/blob/HEAD/openpoints/dataset/build.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":"65c970f35976128a"}},{"code_sha256_prefix":"556e417290a6e1fd","entry":"download_url","repo":"mlvlab/SPoTr","repo_kind":"official","path":"openpoints/dataset/data_util.py","file_url":"https://github.com/mlvlab/SPoTr/blob/HEAD/openpoints/dataset/data_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":"556e417290a6e1fd"}},{"code_sha256_prefix":"f80066a00e7156a2","entry":"farthest_point_sample","repo":"mlvlab/SPoTr","repo_kind":"official","path":"openpoints/dataset/modelnet/modelnet40_normal_resampled_loader.py","file_url":"https://github.com/mlvlab/SPoTr/blob/HEAD/openpoints/dataset/modelnet/modelnet40_normal_resampled_loader.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":"0086c892bd1df796","entry":"fnv_hash_vec","repo":"mlvlab/SPoTr","repo_kind":"official","path":"openpoints/dataset/data_util.py","file_url":"https://github.com/mlvlab/SPoTr/blob/HEAD/openpoints/dataset/data_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":"0086c892bd1df796"}},{"code_sha256_prefix":"ed384fad1a088993","entry":"get_aggregation_features","repo":"mlvlab/SPoTr","repo_kind":"official","path":"openpoints/models/backbone/spotr.py","file_url":"https://github.com/mlvlab/SPoTr/blob/HEAD/openpoints/models/backbone/spotr.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":"ed384fad1a088993"}},{"code_sha256_prefix":"6729ad5f41f9545e","entry":"get_reduction_fn","repo":"mlvlab/SPoTr","repo_kind":"official","path":"openpoints/models/backbone/spotr.py","file_url":"https://github.com/mlvlab/SPoTr/blob/HEAD/openpoints/models/backbone/spotr.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":"6729ad5f41f9545e"}},{"code_sha256_prefix":"cd2a47ded9dd84cf","entry":"is_model","repo":"mlvlab/SPoTr","repo_kind":"official","path":"openpoints/models/registry.py","file_url":"https://github.com/mlvlab/SPoTr/blob/HEAD/openpoints/models/registry.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":"cd2a47ded9dd84cf"}},{"code_sha256_prefix":"d14a6ca5ff9d530e","entry":"list_models","repo":"mlvlab/SPoTr","repo_kind":"official","path":"openpoints/models/registry.py","file_url":"https://github.com/mlvlab/SPoTr/blob/HEAD/openpoints/models/registry.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":"d14a6ca5ff9d530e"}},{"code_sha256_prefix":"c62867eb0317c297","entry":"new_attention","repo":"mlvlab/SPoTr","repo_kind":"official","path":"openpoints/models/backbone/spotr.py","file_url":"https://github.com/mlvlab/SPoTr/blob/HEAD/openpoints/models/backbone/spotr.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":"c62867eb0317c297"}},{"code_sha256_prefix":"afdc8ad15d9098b8","entry":"ravel_hash_vec","repo":"mlvlab/SPoTr","repo_kind":"official","path":"openpoints/dataset/data_util.py","file_url":"https://github.com/mlvlab/SPoTr/blob/HEAD/openpoints/dataset/data_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":"afdc8ad15d9098b8"}},{"code_sha256_prefix":"e13039fb1c347452","entry":"register_model","repo":"mlvlab/SPoTr","repo_kind":"official","path":"openpoints/models/registry.py","file_url":"https://github.com/mlvlab/SPoTr/blob/HEAD/openpoints/models/registry.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":"e13039fb1c347452"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}