{"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/competitive-collaboration-joint-unsupervised","title":"Competitive Collaboration: Joint Unsupervised Learning of Depth, Camera Motion, Optical Flow and Motion Segmentation","arxiv_id":"1805.09806","date":"2018-05-24","proceeding":"CVPR 2019 6","authors":["Anurag Ranjan","Varun Jampani","Lukas Balles","Kihwan Kim","Deqing Sun","Jonas Wulff","Michael J. Black"],"abstract":"We address the unsupervised learning of several interconnected problems in\nlow-level vision: single view depth prediction, camera motion estimation,\noptical flow, and segmentation of a video into the static scene and moving\nregions. Our key insight is that these four fundamental vision problems are\ncoupled through geometric constraints. Consequently, learning to solve them\ntogether simplifies the problem because the solutions can reinforce each other.\nWe go beyond previous work by exploiting geometry more explicitly and\nsegmenting the scene into static and moving regions. To that end, we introduce\nCompetitive Collaboration, a framework that facilitates the coordinated\ntraining of multiple specialized neural networks to solve complex problems.\nCompetitive Collaboration works much like expectation-maximization, but with\nneural networks that act as both competitors to explain pixels that correspond\nto static or moving regions, and as collaborators through a moderator that\nassigns pixels to be either static or independently moving. Our novel method\nintegrates all these problems in a common framework and simultaneously reasons\nabout the segmentation of the scene into moving objects and the static\nbackground, the camera motion, depth of the static scene structure, and the\noptical flow of moving objects. Our model is trained without any supervision\nand achieves state-of-the-art performance among joint unsupervised methods on\nall sub-problems.","url_abs":"http://arxiv.org/abs/1805.09806v3","url_pdf":"http://arxiv.org/pdf/1805.09806v3.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":"competitive-collaboration-joint-unsupervised","repo_url":"https://github.com/anuragranj/cc","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[{"task_slug":"depth-estimation","task_name":"Depth Estimation"},{"task_slug":"depth-prediction","task_name":"Depth Prediction"},{"task_slug":"monocular-depth-estimation","task_name":"Monocular Depth Estimation"},{"task_slug":"motion-estimation","task_name":"Motion Estimation"},{"task_slug":"motion-segmentation","task_name":"Motion Segmentation"},{"task_slug":"optical-flow-estimation","task_name":"Optical Flow Estimation"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[{"leaderboard":"/sota/monocular-depth-estimation-on-kitti-eigen","task":"Monocular Depth Estimation","dataset":"KITTI Eigen split","model":"CC","rank_in_archive_order":75,"of":79,"metrics":{"absolute relative error":"0.140"},"uses_additional_data":false}],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=1805.09806","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"1805.09806"}},"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/anuragranj/cc","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"ran_draft_wrong":1,"unverified":13},"by_repo_kind":{"official":{"samples":14,"ran":1,"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":"fac5364e2f53c6db","entry":"conv3x3","repo":"anuragranj/cc","repo_kind":"official","path":"models/DispResNet6.py","file_url":"https://github.com/anuragranj/cc/blob/HEAD/models/DispResNet6.py","link_basis":"harvester_set","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"fac5364e2f53c6db"}},{"code_sha256_prefix":"397deb932e72aeb7","entry":"cam2pixel","repo":"anuragranj/cc","repo_kind":"official","path":"inverse_warp.py","file_url":"https://github.com/anuragranj/cc/blob/HEAD/inverse_warp.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":"397deb932e72aeb7"}},{"code_sha256_prefix":"fbd0907626da10c9","entry":"collaboration_loss","repo":"anuragranj/cc","repo_kind":"official","path":"mnist.py","file_url":"https://github.com/anuragranj/cc/blob/HEAD/mnist.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":"fbd0907626da10c9"}},{"code_sha256_prefix":"01811085a19ebba5","entry":"compute_err","repo":"anuragranj/cc","repo_kind":"official","path":"evaluate_flow.py","file_url":"https://github.com/anuragranj/cc/blob/HEAD/evaluate_flow.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":"01811085a19ebba5"}},{"code_sha256_prefix":"43c8f5b85b4a8660","entry":"conv","repo":"anuragranj/cc","repo_kind":"official","path":"models/DispNetS.py","file_url":"https://github.com/anuragranj/cc/blob/HEAD/models/DispNetS.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":"43c8f5b85b4a8660"}},{"code_sha256_prefix":"34f844c4d6859b89","entry":"downsample_conv","repo":"anuragranj/cc","repo_kind":"official","path":"models/DispNetS.py","file_url":"https://github.com/anuragranj/cc/blob/HEAD/models/DispNetS.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":"34f844c4d6859b89"}},{"code_sha256_prefix":"1d6bb2dfc56a4507","entry":"euler2mat","repo":"anuragranj/cc","repo_kind":"official","path":"inverse_warp.py","file_url":"https://github.com/anuragranj/cc/blob/HEAD/inverse_warp.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":"1d6bb2dfc56a4507"}},{"code_sha256_prefix":"e0bb27567cf1ee47","entry":"make_layer","repo":"anuragranj/cc","repo_kind":"official","path":"models/DispResNet6.py","file_url":"https://github.com/anuragranj/cc/blob/HEAD/models/DispResNet6.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":"e0bb27567cf1ee47"}},{"code_sha256_prefix":"56f743f71c14240a","entry":"mod_regularization_loss","repo":"anuragranj/cc","repo_kind":"official","path":"mnist.py","file_url":"https://github.com/anuragranj/cc/blob/HEAD/mnist.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":"56f743f71c14240a"}},{"code_sha256_prefix":"37ae2ec29ead5d7f","entry":"pixel2cam","repo":"anuragranj/cc","repo_kind":"official","path":"inverse_warp.py","file_url":"https://github.com/anuragranj/cc/blob/HEAD/inverse_warp.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":"37ae2ec29ead5d7f"}},{"code_sha256_prefix":"ac775cd34edc68e6","entry":"predict_disp","repo":"anuragranj/cc","repo_kind":"official","path":"models/DispNetS.py","file_url":"https://github.com/anuragranj/cc/blob/HEAD/models/DispNetS.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":"ac775cd34edc68e6"}},{"code_sha256_prefix":"6a5de22785822dcd","entry":"robust_l1","repo":"anuragranj/cc","repo_kind":"official","path":"loss_functions.py","file_url":"https://github.com/anuragranj/cc/blob/HEAD/loss_functions.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":"6a5de22785822dcd"}},{"code_sha256_prefix":"982b1c5c28d1be24","entry":"robust_l1_per_pix","repo":"anuragranj/cc","repo_kind":"official","path":"loss_functions.py","file_url":"https://github.com/anuragranj/cc/blob/HEAD/loss_functions.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":"982b1c5c28d1be24"}},{"code_sha256_prefix":"01424c6170ccc0a4","entry":"spatial_normalize","repo":"anuragranj/cc","repo_kind":"official","path":"loss_functions.py","file_url":"https://github.com/anuragranj/cc/blob/HEAD/loss_functions.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":"01424c6170ccc0a4"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}