{"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/cyclip-cyclic-contrastive-language-image","title":"CyCLIP: Cyclic Contrastive Language-Image Pretraining","arxiv_id":"2205.14459","date":"2022-05-28","proceeding":null,"authors":["Shashank Goel","Hritik Bansal","Sumit Bhatia","Ryan A. Rossi","Vishwa Vinay","Aditya Grover"],"abstract":"Recent advances in contrastive representation learning over paired image-text data have led to models such as CLIP that achieve state-of-the-art performance for zero-shot classification and distributional robustness. Such models typically require joint reasoning in the image and text representation spaces for downstream inference tasks. Contrary to prior beliefs, we demonstrate that the image and text representations learned via a standard contrastive objective are not interchangeable and can lead to inconsistent downstream predictions. To mitigate this issue, we formalize consistency and propose CyCLIP, a framework for contrastive representation learning that explicitly optimizes for the learned representations to be geometrically consistent in the image and text space. In particular, we show that consistent representations can be learned by explicitly symmetrizing (a) the similarity between the two mismatched image-text pairs (cross-modal consistency); and (b) the similarity between the image-image pair and the text-text pair (in-modal consistency). Empirically, we show that the improved consistency in CyCLIP translates to significant gains over CLIP, with gains ranging from 10%-24% for zero-shot classification accuracy on standard benchmarks (CIFAR-10, CIFAR-100, ImageNet1K) and 10%-27% for robustness to various natural distribution shifts. The code is available at https://github.com/goel-shashank/CyCLIP.","url_abs":"https://arxiv.org/abs/2205.14459v2","url_pdf":"https://arxiv.org/pdf/2205.14459v2.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":"cyclip-cyclic-contrastive-language-image","repo_url":"https://github.com/goel-shashank/CyCLIP","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":null}],"tasks":[{"task_slug":"representation-learning","task_name":"Representation Learning"},{"task_slug":"visual-reasoning","task_name":"Visual Reasoning"},{"task_slug":"zero-shot-learning","task_name":"Zero-Shot Learning"},{"task_slug":null,"task_name":"zero-shot-classification"}],"methods":[{"method_slug":"clip","method_name":"CLIP"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2205.14459","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2205.14459"}},"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/goel-shashank/CyCLIP","reach":null}],"summary":{"ran":4,"ran_draft_wrong":1,"unverified":2},"by_repo_kind":{"official":{"samples":7,"ran":5,"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":7,"samples":[{"code_sha256_prefix":"c44721bed5b54af9","entry":"Bottleneck","repo":"goel-shashank/CyCLIP","repo_kind":"official","path":"pkgs/openai/model.py","file_url":"https://github.com/goel-shashank/CyCLIP/blob/HEAD/pkgs/openai/model.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":"deterministic","behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"c44721bed5b54af9"}},{"code_sha256_prefix":"80c0ba56cd63995b","entry":"CLIPOutput","repo":"goel-shashank/CyCLIP","repo_kind":"official","path":"pkgs/openai/model.py","file_url":"https://github.com/goel-shashank/CyCLIP/blob/HEAD/pkgs/openai/model.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"80c0ba56cd63995b"}},{"code_sha256_prefix":"e69131b398a3dfac","entry":"ModifiedResNet","repo":"goel-shashank/CyCLIP","repo_kind":"official","path":"pkgs/openai/model.py","file_url":"https://github.com/goel-shashank/CyCLIP/blob/HEAD/pkgs/openai/model.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":"e69131b398a3dfac"}},{"code_sha256_prefix":"385ab82ec3447e70","entry":"VisualTransformer","repo":"goel-shashank/CyCLIP","repo_kind":"official","path":"pkgs/openai/model.py","file_url":"https://github.com/goel-shashank/CyCLIP/blob/HEAD/pkgs/openai/model.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":"385ab82ec3447e70"}},{"code_sha256_prefix":"d36be288b124bd8b","entry":"apply","repo":"goel-shashank/CyCLIP","repo_kind":"official","path":"utils/download.py","file_url":"https://github.com/goel-shashank/CyCLIP/blob/HEAD/utils/download.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"d36be288b124bd8b"}},{"code_sha256_prefix":"c85999b6f5cbfcc7","entry":"CLIP","repo":"goel-shashank/CyCLIP","repo_kind":"official","path":"pkgs/openai/model.py","file_url":"https://github.com/goel-shashank/CyCLIP/blob/HEAD/pkgs/openai/model.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"c85999b6f5cbfcc7"}},{"code_sha256_prefix":"30c9fb7349669f71","entry":"multiprocess","repo":"goel-shashank/CyCLIP","repo_kind":"official","path":"utils/download.py","file_url":"https://github.com/goel-shashank/CyCLIP/blob/HEAD/utils/download.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"30c9fb7349669f71"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}