{"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/contrast-with-reconstruct-contrastive-3d","title":"Contrast with Reconstruct: Contrastive 3D Representation Learning Guided by Generative Pretraining","arxiv_id":"2302.02318","date":"2023-02-05","proceeding":null,"authors":["Zekun Qi","Runpei Dong","Guofan Fan","Zheng Ge","Xiangyu Zhang","Kaisheng Ma","Li Yi"],"abstract":"Mainstream 3D representation learning approaches are built upon contrastive or generative modeling pretext tasks, where great improvements in performance on various downstream tasks have been achieved. However, we find these two paradigms have different characteristics: (i) contrastive models are data-hungry that suffer from a representation over-fitting issue; (ii) generative models have a data filling issue that shows inferior data scaling capacity compared to contrastive models. This motivates us to learn 3D representations by sharing the merits of both paradigms, which is non-trivial due to the pattern difference between the two paradigms. In this paper, we propose Contrast with Reconstruct (ReCon) that unifies these two paradigms. ReCon is trained to learn from both generative modeling teachers and single/cross-modal contrastive teachers through ensemble distillation, where the generative student guides the contrastive student. An encoder-decoder style ReCon-block is proposed that transfers knowledge through cross attention with stop-gradient, which avoids pretraining over-fitting and pattern difference issues. ReCon achieves a new state-of-the-art in 3D representation learning, e.g., 91.26% accuracy on ScanObjectNN. Codes have been released at https://github.com/qizekun/ReCon.","url_abs":"https://arxiv.org/abs/2302.02318v2","url_pdf":"https://arxiv.org/pdf/2302.02318v2.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":"contrast-with-reconstruct-contrastive-3d","repo_url":"https://github.com/qizekun/ReCon","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}},{"paper_slug":"contrast-with-reconstruct-contrastive-3d","repo_url":"https://github.com/aHapBean/PCP-MAE","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}},{"paper_slug":"contrast-with-reconstruct-contrastive-3d","repo_url":"https://github.com/asterisci/point-gcc","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}},{"paper_slug":"contrast-with-reconstruct-contrastive-3d","repo_url":"https://github.com/qizekun/vpp","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}},{"paper_slug":"contrast-with-reconstruct-contrastive-3d","repo_url":"https://github.com/runpeidong/act","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[{"task_slug":"3d-point-cloud-classification","task_name":"3D Point Cloud Classification"},{"task_slug":"3d-point-cloud-linear-classification","task_name":"3D Point Cloud Linear Classification"},{"task_slug":"decoder","task_name":"Decoder"},{"task_slug":"few-shot-3d-point-cloud-classification","task_name":"Few-Shot 3D Point Cloud Classification"},{"task_slug":"representation-learning","task_name":"Representation Learning"},{"task_slug":"zero-shot-transfer-3d-point-cloud","task_name":"Zero-Shot Transfer 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":"ReCon","rank_in_archive_order":7,"of":111,"metrics":{"Overall Accuracy":"94.7"},"uses_additional_data":true},{"leaderboard":"/sota/3d-point-cloud-classification-on-scanobjectnn","task":"3D Point Cloud Classification","dataset":"ScanObjectNN","model":"ReCon","rank_in_archive_order":12,"of":77,"metrics":{"OBJ-BG (OA)":"95.35","OBJ-ONLY (OA)":"93.80","Overall Accuracy":"91.26"},"uses_additional_data":true},{"leaderboard":"/sota/3d-point-cloud-classification-on-scanobjectnn","task":"3D Point Cloud Classification","dataset":"ScanObjectNN","model":"ReCon (no voting)","rank_in_archive_order":14,"of":77,"metrics":{"OBJ-BG (OA)":"95.18","OBJ-ONLY (OA)":"93.29","Overall Accuracy":"90.63"},"uses_additional_data":true},{"leaderboard":"/sota/3d-point-cloud-linear-classification-on","task":"3D Point Cloud Linear Classification","dataset":"ModelNet40","model":"ReCon","rank_in_archive_order":4,"of":20,"metrics":{"Overall Accuracy":"93.4"},"uses_additional_data":true},{"leaderboard":"/sota/few-shot-3d-point-cloud-classification-on-3","task":"Few-Shot 3D Point Cloud Classification","dataset":"ModelNet40 10-way (10-shot)","model":"ReCon","rank_in_archive_order":8,"of":31,"metrics":{"Overall Accuracy":"93.3","Standard Deviation":"3.9"},"uses_additional_data":true},{"leaderboard":"/sota/few-shot-3d-point-cloud-classification-on-4","task":"Few-Shot 3D Point Cloud Classification","dataset":"ModelNet40 10-way (20-shot)","model":"ReCon","rank_in_archive_order":6,"of":31,"metrics":{"Overall Accuracy":"95.8","Standard Deviation":"3.0"},"uses_additional_data":true},{"leaderboard":"/sota/few-shot-3d-point-cloud-classification-on-1","task":"Few-Shot 3D Point Cloud Classification","dataset":"ModelNet40 5-way (10-shot)","model":"ReCon","rank_in_archive_order":8,"of":30,"metrics":{"Overall Accuracy":"97.3","Standard Deviation":"1.9"},"uses_additional_data":true},{"leaderboard":"/sota/few-shot-3d-point-cloud-classification-on-2","task":"Few-Shot 3D Point Cloud Classification","dataset":"ModelNet40 5-way (20-shot)","model":"ReCon","rank_in_archive_order":5,"of":30,"metrics":{"Overall Accuracy":"98.9","Standard Deviation":"1.2"},"uses_additional_data":true},{"leaderboard":"/sota/zero-shot-transfer-3d-point-cloud-1","task":"Zero-Shot Transfer 3D Point Cloud Classification","dataset":"ModelNet10","model":"ReCon","rank_in_archive_order":1,"of":4,"metrics":{"Accuracy (%)":"75.6"},"uses_additional_data":true},{"leaderboard":"/sota/zero-shot-transfer-3d-point-cloud","task":"Zero-Shot Transfer 3D Point Cloud Classification","dataset":"ModelNet40","model":"ReCon","rank_in_archive_order":12,"of":16,"metrics":{"Accuracy (%)":"61.7"},"uses_additional_data":true},{"leaderboard":"/sota/zero-shot-transfer-3d-point-cloud-2","task":"Zero-Shot Transfer 3D Point Cloud Classification","dataset":"ScanObjectNN","model":"ReCon","rank_in_archive_order":8,"of":10,"metrics":{"OBJ_BG Accuracy(%)":"40.4","OBJ_ONLY Accuracy(%)":"43.7","PB_T50_RS Accuracy (%)":"30.5"},"uses_additional_data":true}],"syntology":{"syntology_url":null,"atlas_url":"https://app.syntology.ai/?focus=2302.02318","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2302.02318"}},"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/qizekun/ReCon","reach":{"status":"ok","spdx":"MIT"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/aHapBean/PCP-MAE","reach":{"status":"ok","spdx":"MIT"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/asterisci/point-gcc","reach":{"status":"ok","spdx":"MIT"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/qizekun/vpp","reach":{"status":"ok","spdx":"MIT"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/runpeidong/act","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"ran_honours":1,"ran_draft_wrong":1,"unverified":3},"by_repo_kind":{"listed":{"samples":5,"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":"4783fbece52f500e","entry":"pc_normalize","repo":"aHapBean/PCP-MAE","repo_kind":"listed","path":"datasets/ModelNetDataset.py","file_url":"https://github.com/aHapBean/PCP-MAE/blob/HEAD/datasets/ModelNetDataset.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":"74c3fe06cea2f553","entry":"square_distance","repo":"aHapBean/PCP-MAE","repo_kind":"listed","path":"segmentation/pointnet_util.py","file_url":"https://github.com/aHapBean/PCP-MAE/blob/HEAD/segmentation/pointnet_util.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":"74c3fe06cea2f553"}},{"code_sha256_prefix":"f80066a00e7156a2","entry":"farthest_point_sample","repo":"aHapBean/PCP-MAE","repo_kind":"listed","path":"datasets/ModelNetDataset.py","file_url":"https://github.com/aHapBean/PCP-MAE/blob/HEAD/datasets/ModelNetDataset.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":"baacb7920bbb61c7","entry":"get_pos_embed","repo":"aHapBean/PCP-MAE","repo_kind":"listed","path":"models/pos.py","file_url":"https://github.com/aHapBean/PCP-MAE/blob/HEAD/models/pos.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":"baacb7920bbb61c7"}},{"code_sha256_prefix":"b1227ddb721e2999","entry":"timeit","repo":"aHapBean/PCP-MAE","repo_kind":"listed","path":"segmentation/pointnet_util.py","file_url":"https://github.com/aHapBean/PCP-MAE/blob/HEAD/segmentation/pointnet_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}