{"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/contrastive-multiview-coding","title":"Contrastive Multiview Coding","arxiv_id":"1906.05849","date":"2019-06-13","proceeding":"ECCV 2020 8","authors":["Yonglong Tian","Dilip Krishnan","Phillip Isola"],"abstract":"Humans view the world through many sensory channels, e.g., the long-wavelength light channel, viewed by the left eye, or the high-frequency vibrations channel, heard by the right ear. Each view is noisy and incomplete, but important factors, such as physics, geometry, and semantics, tend to be shared between all views (e.g., a \"dog\" can be seen, heard, and felt). We investigate the classic hypothesis that a powerful representation is one that models view-invariant factors. We study this hypothesis under the framework of multiview contrastive learning, where we learn a representation that aims to maximize mutual information between different views of the same scene but is otherwise compact. Our approach scales to any number of views, and is view-agnostic. We analyze key properties of the approach that make it work, finding that the contrastive loss outperforms a popular alternative based on cross-view prediction, and that the more views we learn from, the better the resulting representation captures underlying scene semantics. Our approach achieves state-of-the-art results on image and video unsupervised learning benchmarks. Code is released at: http://github.com/HobbitLong/CMC/.","url_abs":"https://arxiv.org/abs/1906.05849v5","url_pdf":"https://arxiv.org/pdf/1906.05849v5.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":"contrastive-multiview-coding","repo_url":"https://github.com/HobbitLong/CMC","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"BSD-2-Clause"}},{"paper_slug":"contrastive-multiview-coding","repo_url":"https://github.com/SsnL/moco","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"NOASSERTION"}},{"paper_slug":"contrastive-multiview-coding","repo_url":"https://github.com/SsnL/moco_align_uniform","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"NOASSERTION"}},{"paper_slug":"contrastive-multiview-coding","repo_url":"https://github.com/booker-max/unsupervised-deraining-with-event-camera","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok"}},{"paper_slug":"contrastive-multiview-coding","repo_url":"https://github.com/danielchyeh/imagenet-100-pytorch","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}},{"paper_slug":"contrastive-multiview-coding","repo_url":"https://github.com/szq0214/CMC_with_Image_Mixture","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":null},{"paper_slug":"contrastive-multiview-coding","repo_url":"https://github.com/szq0214/Rethinking-Image-Mixture-for-Unsupervised-Learning","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok"}},{"paper_slug":"contrastive-multiview-coding","repo_url":"https://github.com/HobbitLong/PyContrast","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":0,"framework":"pytorch","reach":null}],"tasks":[{"task_slug":"contrastive-learning","task_name":"Contrastive Learning"},{"task_slug":"self-supervised-action-recognition","task_name":"Self-Supervised Action Recognition"},{"task_slug":"self-supervised-image-classification","task_name":"Self-Supervised Image Classification"}],"methods":[{"method_slug":"1x1-convolution","method_name":"1x1 Convolution"},{"method_slug":"adam","method_name":"Adam"},{"method_slug":"average-pooling","method_name":"Average Pooling"},{"method_slug":"batch-normalization","method_name":"Batch Normalization"},{"method_slug":"bottleneck-residual-block","method_name":"Bottleneck Residual Block"},{"method_slug":"contrastive-multiview-coding","method_name":"Contrastive Multiview Coding"},{"method_slug":"convolution","method_name":"Convolution"},{"method_slug":"dense-connections","method_name":"Dense Connections"},{"method_slug":"dropout","method_name":"Dropout"},{"method_slug":"global-average-pooling","method_name":"Global Average Pooling"},{"method_slug":"grouped-convolution","method_name":"Grouped Convolution"},{"method_slug":"infonce","method_name":"InfoNCE"},{"method_slug":"kaiming-initialization","method_name":"Kaiming Initialization"},{"method_slug":"local-response-normalization","method_name":"Local Response Normalization"},{"method_slug":"max-pooling","method_name":"Max Pooling"},{"method_slug":"randomhorizontalflip","method_name":"Random Horizontal Flip"},{"method_slug":"random-resized-crop","method_name":"Random Resized Crop"},{"method_slug":"relu","method_name":"ReLU"},{"method_slug":"residual-block","method_name":"Residual Block"},{"method_slug":"residual-connection","method_name":"Residual Connection"},{"method_slug":"sgd-with-momentum","method_name":"SGD with Momentum"},{"method_slug":"softmax","method_name":"Softmax"},{"method_slug":"weight-decay","method_name":"Weight Decay"}],"datasets_introduced":[],"methods_introduced":[{"slug":"contrastive-multiview-coding","name":"Contrastive Multiview Coding","full_name":"Contrastive Multiview Coding"}],"results":[{"leaderboard":"/sota/self-supervised-action-recognition-on-ucf101","task":"Self-Supervised Action Recognition","dataset":"UCF101","model":"Contrastive Multiview Coding (CaffeNet x2)","rank_in_archive_order":48,"of":53,"metrics":{"3-fold Accuracy":"59.1","Frozen":"false","Pre-Training Dataset":"UCF101"},"uses_additional_data":false},{"leaderboard":"/sota/self-supervised-image-classification-on","task":"Self-Supervised Image Classification","dataset":"ImageNet","model":"CMC (ResNet-50 x2) (arxiv v5)","rank_in_archive_order":102,"of":144,"metrics":{"Number of Params":"188M","Top 1 Accuracy":"70.6%","Top 5 Accuracy":"89.7%"},"uses_additional_data":false},{"leaderboard":"/sota/self-supervised-image-classification-on","task":"Self-Supervised Image Classification","dataset":"ImageNet","model":"CMC (ResNet-50) (arxiv v5)","rank_in_archive_order":110,"of":144,"metrics":{"Number of Params":"47M","Top 1 Accuracy":"66.2%","Top 5 Accuracy":"87.0%"},"uses_additional_data":false},{"leaderboard":"/sota/self-supervised-image-classification-on","task":"Self-Supervised Image Classification","dataset":"ImageNet","model":"CMC (ResNet-101) (arxiv v3)","rank_in_archive_order":114,"of":144,"metrics":{"Top 1 Accuracy":"65.0%","Top 5 Accuracy":"86.0%"},"uses_additional_data":false},{"leaderboard":"/sota/self-supervised-image-classification-on","task":"Self-Supervised Image Classification","dataset":"ImageNet","model":"CMC (ResNet-101)","rank_in_archive_order":127,"of":144,"metrics":{"Number of Params":"44M","Top 1 Accuracy":"60.1%","Top 5 Accuracy":"82.8%"},"uses_additional_data":false},{"leaderboard":"/sota/self-supervised-image-classification-on","task":"Self-Supervised Image Classification","dataset":"ImageNet","model":"CMC (Alexnet/2)","rank_in_archive_order":137,"of":144,"metrics":{"Number of Params":"30M","Top 1 Accuracy":"42.6%"},"uses_additional_data":false}],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=1906.05849","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"1906.05849"}},"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/szq0214/Rethinking-Image-Mixture-for-Unsupervised-Learning","reach":{"status":"ok"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/HobbitLong/CMC","reach":{"status":"ok","spdx":"BSD-2-Clause"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/szq0214/CMC_with_Image_Mixture","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/SsnL/moco_align_uniform","reach":{"status":"ok","spdx":"NOASSERTION"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/HobbitLong/PyContrast","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/booker-max/unsupervised-deraining-with-event-camera","reach":{"status":"ok"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/SsnL/moco","reach":{"status":"ok","spdx":"NOASSERTION"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/danielchyeh/imagenet-100-pytorch","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"ran_fixture":1,"ran_draft_wrong":1,"ran":1,"unverified":1},"by_repo_kind":{"listed":{"samples":3,"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":1,"samples":[{"code_sha256_prefix":"b0f936d4d6ae3b8c","entry":"accuracy","repo":"danielchyeh/imagenet-100-pytorch","repo_kind":"listed","path":"util.py","file_url":"https://github.com/danielchyeh/imagenet-100-pytorch/blob/HEAD/util.py","link_basis":"harvester_set","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":"invariant","behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"b0f936d4d6ae3b8c"}},{"code_sha256_prefix":"3267a33f67aebf53","entry":"set_optimizer","repo":null,"repo_kind":null,"path":null,"file_url":null,"link_basis":"identical_code_first_harvested_elsewhere","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":null,"inline_ok":false,"mcp_get_code":{"code_sha256":"3267a33f67aebf53"}},{"code_sha256_prefix":"a44a1925c2c778ba","entry":"set_optimizer","repo":"danielchyeh/imagenet-100-pytorch","repo_kind":"listed","path":"util.py","file_url":"https://github.com/danielchyeh/imagenet-100-pytorch/blob/HEAD/util.py","link_basis":"harvester_set","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":"a44a1925c2c778ba"}},{"code_sha256_prefix":"78be23f19fa36f1c","entry":"set_loader","repo":"danielchyeh/imagenet-100-pytorch","repo_kind":"listed","path":"main_IN100.py","file_url":"https://github.com/danielchyeh/imagenet-100-pytorch/blob/HEAD/main_IN100.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":"78be23f19fa36f1c"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}