{"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/bringing-masked-autoencoders-explicit","title":"Bringing Masked Autoencoders Explicit Contrastive Properties for Point Cloud Self-Supervised Learning","arxiv_id":"2407.05862","date":"2024-07-08","proceeding":null,"authors":["Bin Ren","Guofeng Mei","Danda Pani Paudel","Weijie Wang","Yawei Li","Mengyuan Liu","Rita Cucchiara","Luc van Gool","Nicu Sebe"],"abstract":"Contrastive learning (CL) for Vision Transformers (ViTs) in image domains has achieved performance comparable to CL for traditional convolutional backbones. However, in 3D point cloud pretraining with ViTs, masked autoencoder (MAE) modeling remains dominant. This raises the question: Can we take the best of both worlds? To answer this question, we first empirically validate that integrating MAE-based point cloud pre-training with the standard contrastive learning paradigm, even with meticulous design, can lead to a decrease in performance. To address this limitation, we reintroduce CL into the MAE-based point cloud pre-training paradigm by leveraging the inherent contrastive properties of MAE. Specifically, rather than relying on extensive data augmentation as commonly used in the image domain, we randomly mask the input tokens twice to generate contrastive input pairs. Subsequently, a weight-sharing encoder and two identically structured decoders are utilized to perform masked token reconstruction. Additionally, we propose that for an input token masked by both masks simultaneously, the reconstructed features should be as similar as possible. This naturally establishes an explicit contrastive constraint within the generative MAE-based pre-training paradigm, resulting in our proposed method, Point-CMAE. Consequently, Point-CMAE effectively enhances the representation quality and transfer performance compared to its MAE counterpart. Experimental evaluations across various downstream applications, including classification, part segmentation, and few-shot learning, demonstrate the efficacy of our framework in surpassing state-of-the-art techniques under standard ViTs and single-modal settings. The source code and trained models are available at: https://github.com/Amazingren/Point-CMAE.","url_abs":"https://arxiv.org/abs/2407.05862v1","url_pdf":"https://arxiv.org/pdf/2407.05862v1.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":"bringing-masked-autoencoders-explicit","repo_url":"https://github.com/amazingren/point-cmae","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[{"task_slug":"contrastive-learning","task_name":"Contrastive Learning"},{"task_slug":"data-augmentation","task_name":"Data Augmentation"},{"task_slug":"few-shot-learning","task_name":"Few-Shot Learning"},{"task_slug":"point-cloud-pre-training","task_name":"Point Cloud Pre-training"},{"task_slug":"self-supervised-learning","task_name":"Self-Supervised Learning"}],"methods":[{"method_slug":"contrastive-learning","method_name":"Contrastive Learning"},{"method_slug":"mae","method_name":"MAE"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2407.05862","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2407.05862"}},"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/amazingren/point-cmae","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"ran_fixture":1,"ran":2,"ran_draft_wrong":2,"ran_honours":1,"unverified":2},"by_repo_kind":{"official":{"samples":8,"ran":6,"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":"7478f8e64cee8964","entry":"distributed_sinkhorn","repo":"amazingren/point-cmae","repo_kind":"official","path":"utils/loss_msn.py","file_url":"https://github.com/amazingren/point-cmae/blob/HEAD/utils/loss_msn.py","link_basis":"plan_row","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"7478f8e64cee8964"}},{"code_sha256_prefix":"5b41e21d03a92a5f","entry":"fps","repo":"amazingren/point-cmae","repo_kind":"official","path":"datasets/data_transforms.py","file_url":"https://github.com/amazingren/point-cmae/blob/HEAD/datasets/data_transforms.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"5b41e21d03a92a5f"}},{"code_sha256_prefix":"8058e8c73e3a9d20","entry":"init_msn_loss","repo":"amazingren/point-cmae","repo_kind":"official","path":"utils/loss_msn.py","file_url":"https://github.com/amazingren/point-cmae/blob/HEAD/utils/loss_msn.py","link_basis":"plan_row","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"8058e8c73e3a9d20"}},{"code_sha256_prefix":"4783fbece52f500e","entry":"pc_normalize","repo":"amazingren/point-cmae","repo_kind":"official","path":"datasets/ModelNetDataset.py","file_url":"https://github.com/amazingren/point-cmae/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":"7dad5f8b51ecdecb","entry":"pc_normalize_np","repo":"amazingren/point-cmae","repo_kind":"official","path":"datasets/data_transforms.py","file_url":"https://github.com/amazingren/point-cmae/blob/HEAD/datasets/data_transforms.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"7dad5f8b51ecdecb"}},{"code_sha256_prefix":"74c3fe06cea2f553","entry":"square_distance","repo":"amazingren/point-cmae","repo_kind":"official","path":"segmentation/pointnet_util.py","file_url":"https://github.com/amazingren/point-cmae/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":"amazingren/point-cmae","repo_kind":"official","path":"datasets/ModelNetDataset.py","file_url":"https://github.com/amazingren/point-cmae/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":"b1227ddb721e2999","entry":"timeit","repo":"amazingren/point-cmae","repo_kind":"official","path":"segmentation/pointnet_util.py","file_url":"https://github.com/amazingren/point-cmae/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}