{"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/vicregl-self-supervised-learning-of-local","title":"VICRegL: Self-Supervised Learning of Local Visual Features","arxiv_id":"2210.01571","date":"2022-10-04","proceeding":null,"authors":["Adrien Bardes","Jean Ponce","Yann Lecun"],"abstract":"Most recent self-supervised methods for learning image representations focus on either producing a global feature with invariance properties, or producing a set of local features. The former works best for classification tasks while the latter is best for detection and segmentation tasks. This paper explores the fundamental trade-off between learning local and global features. A new method called VICRegL is proposed that learns good global and local features simultaneously, yielding excellent performance on detection and segmentation tasks while maintaining good performance on classification tasks. Concretely, two identical branches of a standard convolutional net architecture are fed two differently distorted versions of the same image. The VICReg criterion is applied to pairs of global feature vectors. Simultaneously, the VICReg criterion is applied to pairs of local feature vectors occurring before the last pooling layer. Two local feature vectors are attracted to each other if their l2-distance is below a threshold or if their relative locations are consistent with a known geometric transformation between the two input images. We demonstrate strong performance on linear classification and segmentation transfer tasks. Code and pretrained models are publicly available at: https://github.com/facebookresearch/VICRegL","url_abs":"https://arxiv.org/abs/2210.01571v1","url_pdf":"https://arxiv.org/pdf/2210.01571v1.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":"vicregl-self-supervised-learning-of-local","repo_url":"https://github.com/facebookresearch/vicregl","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":null},{"paper_slug":"vicregl-self-supervised-learning-of-local","repo_url":"https://github.com/Futurne/vicreg-loss","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":null},{"paper_slug":"vicregl-self-supervised-learning-of-local","repo_url":"https://github.com/lightly-ai/lightly","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":null}],"tasks":[{"task_slug":"segmentation","task_name":"Segmentation"},{"task_slug":"self-supervised-learning","task_name":"Self-Supervised Learning"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":"https://syntology.ai/paper/2210.01571","atlas_url":"https://app.syntology.ai/?focus=2210.01571","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2210.01571"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-25T09:33:49+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/facebookresearch/VICRegL","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/lightly-ai/lightly","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/Futurne/vicreg-loss","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/facebookresearch/vicregl","reach":null}],"summary":{"ran":4,"ran_draft_wrong":6,"ran_fixture":4,"ran_honours":2,"unverified":4},"by_repo_kind":{"official":{"samples":10,"ran":8,"repositories":1},"listed":{"samples":9,"ran":7,"repositories":2}},"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":13,"samples":[{"code_sha256_prefix":"ba565bd2bd01c209","entry":"GatherLayer","repo":"lightly-ai/lightly","repo_kind":"listed","path":"lightly/loss/vicregl_loss.py","file_url":"https://github.com/lightly-ai/lightly/blob/HEAD/lightly/loss/vicregl_loss.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"ba565bd2bd01c209"}},{"code_sha256_prefix":"0393d6f458d1bd7e","entry":"MLP","repo":"facebookresearch/vicregl","repo_kind":"official","path":"main_vicregl.py","file_url":"https://github.com/facebookresearch/vicregl/blob/HEAD/main_vicregl.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"0393d6f458d1bd7e"}},{"code_sha256_prefix":"813497ec5b533d79","entry":"VICRegLLoss","repo":"Futurne/vicreg-loss","repo_kind":"listed","path":"vicreg_loss/vicregl.py","file_url":"https://github.com/Futurne/vicreg-loss/blob/HEAD/vicreg_loss/vicregl.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"813497ec5b533d79"}},{"code_sha256_prefix":"43e2587f6349819b","entry":"VICRegLoss","repo":"Futurne/vicreg-loss","repo_kind":"listed","path":"vicreg_loss/vicregl.py","file_url":"https://github.com/Futurne/vicreg-loss/blob/HEAD/vicreg_loss/vicregl.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"43e2587f6349819b"}},{"code_sha256_prefix":"90c615a3b586fa8c","entry":"VICRegLoss","repo":"lightly-ai/lightly","repo_kind":"listed","path":"lightly/loss/vicregl_loss.py","file_url":"https://github.com/lightly-ai/lightly/blob/HEAD/lightly/loss/vicregl_loss.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":"deterministic","behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"90c615a3b586fa8c"}},{"code_sha256_prefix":"b0f936d4d6ae3b8c","entry":"accuracy","repo":null,"repo_kind":null,"path":null,"file_url":null,"link_basis":"identical_code_first_harvested_elsewhere","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":"invariant","behaviour_fingerprint":false,"licence":null,"inline_ok":false,"mcp_get_code":{"code_sha256":"b0f936d4d6ae3b8c"}},{"code_sha256_prefix":"f59a1c321043b890","entry":"accuracy","repo":"facebookresearch/vicregl","repo_kind":"official","path":"main_vicregl.py","file_url":"https://github.com/facebookresearch/vicregl/blob/HEAD/main_vicregl.py","link_basis":"first_harvest_node","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"f59a1c321043b890"}},{"code_sha256_prefix":"e413e4905a6a548b","entry":"batch_all_gather","repo":"facebookresearch/vicregl","repo_kind":"official","path":"main_vicregl.py","file_url":"https://github.com/facebookresearch/vicregl/blob/HEAD/main_vicregl.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"e413e4905a6a548b"}},{"code_sha256_prefix":"1345f4fc63011f70","entry":"batched_index_select","repo":"facebookresearch/VICRegL","repo_kind":"official","path":"main_vicregl.py","file_url":"https://github.com/facebookresearch/VICRegL/blob/HEAD/main_vicregl.py","link_basis":"first_harvest_node","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":"invariant","behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"1345f4fc63011f70"}},{"code_sha256_prefix":"15d4e6fc5c5683f1","entry":"covariance_loss","repo":"lightly-ai/lightly","repo_kind":"listed","path":"lightly/loss/vicregl_loss.py","file_url":"https://github.com/lightly-ai/lightly/blob/HEAD/lightly/loss/vicregl_loss.py","link_basis":"first_harvest_node","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":"15d4e6fc5c5683f1"}},{"code_sha256_prefix":"a20e1319851797c7","entry":"invariance_loss","repo":"lightly-ai/lightly","repo_kind":"listed","path":"lightly/loss/vicregl_loss.py","file_url":"https://github.com/lightly-ai/lightly/blob/HEAD/lightly/loss/vicregl_loss.py","link_basis":"first_harvest_node","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":"a20e1319851797c7"}},{"code_sha256_prefix":"62036ceee17bee5d","entry":"make_inputs","repo":"facebookresearch/VICRegL","repo_kind":"official","path":"main_vicregl.py","file_url":"https://github.com/facebookresearch/VICRegL/blob/HEAD/main_vicregl.py","link_basis":"first_harvest_node","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"62036ceee17bee5d"}},{"code_sha256_prefix":"d53b48478f98d717","entry":"neirest_neighbores","repo":"facebookresearch/VICRegL","repo_kind":"official","path":"main_vicregl.py","file_url":"https://github.com/facebookresearch/VICRegL/blob/HEAD/main_vicregl.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"d53b48478f98d717"}},{"code_sha256_prefix":"80bfa31403ede22a","entry":"neirest_neighbores_on_l2","repo":"facebookresearch/vicregl","repo_kind":"official","path":"main_vicregl.py","file_url":"https://github.com/facebookresearch/vicregl/blob/HEAD/main_vicregl.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"80bfa31403ede22a"}},{"code_sha256_prefix":"8e775945d18d2299","entry":"neirest_neighbores_on_location","repo":"facebookresearch/vicregl","repo_kind":"official","path":"main_vicregl.py","file_url":"https://github.com/facebookresearch/vicregl/blob/HEAD/main_vicregl.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"8e775945d18d2299"}},{"code_sha256_prefix":"44598859a9de393b","entry":"variance_loss","repo":"lightly-ai/lightly","repo_kind":"listed","path":"lightly/loss/vicregl_loss.py","file_url":"https://github.com/lightly-ai/lightly/blob/HEAD/lightly/loss/vicregl_loss.py","link_basis":"first_harvest_node","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":"44598859a9de393b"}},{"code_sha256_prefix":"bbe9eaa0bec2c145","entry":"VICRegL","repo":"facebookresearch/vicregl","repo_kind":"official","path":"main_vicregl.py","file_url":"https://github.com/facebookresearch/vicregl/blob/HEAD/main_vicregl.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"bbe9eaa0bec2c145"}},{"code_sha256_prefix":"6fc75c85f0b33a2c","entry":"VICRegLLoss","repo":"lightly-ai/lightly","repo_kind":"listed","path":"lightly/loss/vicregl_loss.py","file_url":"https://github.com/lightly-ai/lightly/blob/HEAD/lightly/loss/vicregl_loss.py","link_basis":"first_harvest_node","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":"6fc75c85f0b33a2c"}},{"code_sha256_prefix":"f60f882797a1d561","entry":"gather","repo":"lightly-ai/lightly","repo_kind":"listed","path":"lightly/loss/vicregl_loss.py","file_url":"https://github.com/lightly-ai/lightly/blob/HEAD/lightly/loss/vicregl_loss.py","link_basis":"first_harvest_node","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":"f60f882797a1d561"}},{"code_sha256_prefix":"7fe4deeb043278d7","entry":"gather_center","repo":"facebookresearch/vicregl","repo_kind":"official","path":"main_vicregl.py","file_url":"https://github.com/facebookresearch/vicregl/blob/HEAD/main_vicregl.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"7fe4deeb043278d7"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}