{"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/simmc-simple-masked-contrastive-learning-of","title":"SimMC: Simple Masked Contrastive Learning of Skeleton Representations for Unsupervised Person Re-Identification","arxiv_id":"2204.09826","date":"2022-04-21","proceeding":null,"authors":["Haocong Rao","Chunyan Miao"],"abstract":"Recent advances in skeleton-based person re-identification (re-ID) obtain impressive performance via either hand-crafted skeleton descriptors or skeleton representation learning with deep learning paradigms. However, they typically require skeletal pre-modeling and label information for training, which leads to limited applicability of these methods. In this paper, we focus on unsupervised skeleton-based person re-ID, and present a generic Simple Masked Contrastive learning (SimMC) framework to learn effective representations from unlabeled 3D skeletons for person re-ID. Specifically, to fully exploit skeleton features within each skeleton sequence, we first devise a masked prototype contrastive learning (MPC) scheme to cluster the most typical skeleton features (skeleton prototypes) from different subsequences randomly masked from raw sequences, and contrast the inherent similarity between skeleton features and different prototypes to learn discriminative skeleton representations without using any label. Then, considering that different subsequences within the same sequence usually enjoy strong correlations due to the nature of motion continuity, we propose the masked intra-sequence contrastive learning (MIC) to capture intra-sequence pattern consistency between subsequences, so as to encourage learning more effective skeleton representations for person re-ID. Extensive experiments validate that the proposed SimMC outperforms most state-of-the-art skeleton-based methods. We further show its scalability and efficiency in enhancing the performance of existing models. Our codes are available at https://github.com/Kali-Hac/SimMC.","url_abs":"https://arxiv.org/abs/2204.09826v4","url_pdf":"https://arxiv.org/pdf/2204.09826v4.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":"simmc-simple-masked-contrastive-learning-of","repo_url":"https://github.com/kali-hac/simmc","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":"person-re-identification","task_name":"Person Re-Identification"},{"task_slug":"representation-learning","task_name":"Representation Learning"},{"task_slug":"unsupervised-person-re-identification","task_name":"Unsupervised Person Re-Identification"}],"methods":[{"method_slug":"contrastive-learning","method_name":"Contrastive Learning"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2204.09826","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2204.09826"}},"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/Kali-Hac/SimMC","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"unverified":11},"by_repo_kind":{"official":{"samples":11,"ran":0,"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":"b6548c531f96defb","entry":"compute_jaccard_distance","repo":"Kali-Hac/SimMC","repo_kind":"official","path":"utils/faiss_rerank.py","file_url":"https://github.com/Kali-Hac/SimMC/blob/HEAD/utils/faiss_rerank.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":"b6548c531f96defb"}},{"code_sha256_prefix":"37fb86d5da762cea","entry":"gen_train_data","repo":"Kali-Hac/SimMC","repo_kind":"official","path":"utils/process_L3.py","file_url":"https://github.com/Kali-Hac/SimMC/blob/HEAD/utils/process_L3.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":"37fb86d5da762cea"}},{"code_sha256_prefix":"4023b8fa8809a1ef","entry":"gen_train_data","repo":"Kali-Hac/SimMC","repo_kind":"official","path":"utils/process_cme_L3.py","file_url":"https://github.com/Kali-Hac/SimMC/blob/HEAD/utils/process_cme_L3.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":"4023b8fa8809a1ef"}},{"code_sha256_prefix":"a610e67edff490e6","entry":"k_reciprocal_neigh","repo":"Kali-Hac/SimMC","repo_kind":"official","path":"utils/faiss_rerank.py","file_url":"https://github.com/Kali-Hac/SimMC/blob/HEAD/utils/faiss_rerank.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":"a610e67edff490e6"}},{"code_sha256_prefix":"677c3e6b941ea5a3","entry":"reduce2body","repo":"Kali-Hac/SimMC","repo_kind":"official","path":"utils/process_L3.py","file_url":"https://github.com/Kali-Hac/SimMC/blob/HEAD/utils/process_L3.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":"677c3e6b941ea5a3"}},{"code_sha256_prefix":"2f9cbec400e7f8fc","entry":"reduce2body","repo":"Kali-Hac/SimMC","repo_kind":"official","path":"utils/process_cme_L3.py","file_url":"https://github.com/Kali-Hac/SimMC/blob/HEAD/utils/process_cme_L3.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":"2f9cbec400e7f8fc"}},{"code_sha256_prefix":"8afab386b1dcf86d","entry":"reduce2part","repo":"Kali-Hac/SimMC","repo_kind":"official","path":"utils/process_L3.py","file_url":"https://github.com/Kali-Hac/SimMC/blob/HEAD/utils/process_L3.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":"8afab386b1dcf86d"}},{"code_sha256_prefix":"1be88827c6eae5df","entry":"reduce2part","repo":"Kali-Hac/SimMC","repo_kind":"official","path":"utils/process_cme_L3.py","file_url":"https://github.com/Kali-Hac/SimMC/blob/HEAD/utils/process_cme_L3.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":"1be88827c6eae5df"}},{"code_sha256_prefix":"78ca4879f13cc9d5","entry":"search_index_pytorch","repo":"Kali-Hac/SimMC","repo_kind":"official","path":"utils/faiss_utils.py","file_url":"https://github.com/Kali-Hac/SimMC/blob/HEAD/utils/faiss_utils.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":"78ca4879f13cc9d5"}},{"code_sha256_prefix":"f295b8050ce2a4f1","entry":"swig_ptr_from_FloatTensor","repo":"Kali-Hac/SimMC","repo_kind":"official","path":"utils/faiss_utils.py","file_url":"https://github.com/Kali-Hac/SimMC/blob/HEAD/utils/faiss_utils.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":"f295b8050ce2a4f1"}},{"code_sha256_prefix":"892aeccb03c9a237","entry":"swig_ptr_from_LongTensor","repo":"Kali-Hac/SimMC","repo_kind":"official","path":"utils/faiss_utils.py","file_url":"https://github.com/Kali-Hac/SimMC/blob/HEAD/utils/faiss_utils.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":"892aeccb03c9a237"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}