{"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/gocor-bringing-globally-optimized","title":"GOCor: Bringing Globally Optimized Correspondence Volumes into Your Neural Network","arxiv_id":"2009.07823","date":"2020-09-16","proceeding":"NeurIPS 2020 12","authors":["Prune Truong","Martin Danelljan","Luc van Gool","Radu Timofte"],"abstract":"The feature correlation layer serves as a key neural network module in numerous computer vision problems that involve dense correspondences between image pairs. It predicts a correspondence volume by evaluating dense scalar products between feature vectors extracted from pairs of locations in two images. However, this point-to-point feature comparison is insufficient when disambiguating multiple similar regions in an image, severely affecting the performance of the end task. We propose GOCor, a fully differentiable dense matching module, acting as a direct replacement to the feature correlation layer. The correspondence volume generated by our module is the result of an internal optimization procedure that explicitly accounts for similar regions in the scene. Moreover, our approach is capable of effectively learning spatial matching priors to resolve further matching ambiguities. We analyze our GOCor module in extensive ablative experiments. When integrated into state-of-the-art networks, our approach significantly outperforms the feature correlation layer for the tasks of geometric matching, optical flow, and dense semantic matching. The code and trained models will be made available at github.com/PruneTruong/GOCor.","url_abs":"https://arxiv.org/abs/2009.07823v4","url_pdf":"https://arxiv.org/pdf/2009.07823v4.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":"gocor-bringing-globally-optimized","repo_url":"https://github.com/PruneTruong/GOCor","is_official":0,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":null},{"paper_slug":"gocor-bringing-globally-optimized","repo_url":"https://github.com/PruneTruong/GLU-Net","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":null}],"tasks":[{"task_slug":"dense-pixel-correspondence-estimation","task_name":"Dense Pixel Correspondence Estimation"},{"task_slug":"feature-correlation","task_name":"Feature Correlation"},{"task_slug":"geometric-matching","task_name":"Geometric Matching"},{"task_slug":"optical-flow-estimation","task_name":"Optical Flow Estimation"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2009.07823","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2009.07823"}},"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/PruneTruong/GOCor","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/PruneTruong/GLU-Net","reach":null}],"summary":{"ran":11,"ran_draft_wrong":7,"unverified":4},"by_repo_kind":{"named_in_paper":{"samples":1,"ran":1,"repositories":1},"listed":{"samples":20,"ran":16,"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":22,"samples":[{"code_sha256_prefix":"d3e35fbe21b2be24","entry":"BilinearConvTranspose2d","repo":"PruneTruong/GLU-Net","repo_kind":"listed","path":"models/our_models/GLUNet.py","file_url":"https://github.com/PruneTruong/GLU-Net/blob/HEAD/models/our_models/GLUNet.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"GPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"d3e35fbe21b2be24"}},{"code_sha256_prefix":"4474168045aa4fd4","entry":"CMDTop","repo":"PruneTruong/GLU-Net","repo_kind":"listed","path":"models/our_models/GLUNet.py","file_url":"https://github.com/PruneTruong/GLU-Net/blob/HEAD/models/our_models/GLUNet.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"GPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"4474168045aa4fd4"}},{"code_sha256_prefix":"62a354f8ea85f74a","entry":"Conv4d","repo":"PruneTruong/GLU-Net","repo_kind":"listed","path":"models/our_models/GLUNet.py","file_url":"https://github.com/PruneTruong/GLU-Net/blob/HEAD/models/our_models/GLUNet.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"GPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"62a354f8ea85f74a"}},{"code_sha256_prefix":"1f0e92fa0247a8bc","entry":"CorrelationVolume","repo":"PruneTruong/GLU-Net","repo_kind":"listed","path":"models/our_models/GLUNet.py","file_url":"https://github.com/PruneTruong/GLU-Net/blob/HEAD/models/our_models/GLUNet.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"GPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"1f0e92fa0247a8bc"}},{"code_sha256_prefix":"3ab7601dd286313f","entry":"CorrespondenceMapBase","repo":"PruneTruong/GLU-Net","repo_kind":"listed","path":"models/our_models/GLUNet.py","file_url":"https://github.com/PruneTruong/GLU-Net/blob/HEAD/models/our_models/GLUNet.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"GPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"3ab7601dd286313f"}},{"code_sha256_prefix":"795a509a73c8b933","entry":"FeatureCorrelation","repo":"PruneTruong/GLU-Net","repo_kind":"listed","path":"models/our_models/GLUNet.py","file_url":"https://github.com/PruneTruong/GLU-Net/blob/HEAD/models/our_models/GLUNet.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"GPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"795a509a73c8b933"}},{"code_sha256_prefix":"a3f774c099274f5e","entry":"FeatureL2Norm","repo":"PruneTruong/GLU-Net","repo_kind":"listed","path":"models/our_models/GLUNet.py","file_url":"https://github.com/PruneTruong/GLU-Net/blob/HEAD/models/our_models/GLUNet.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"GPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"a3f774c099274f5e"}},{"code_sha256_prefix":"25366ffe25c8bc36","entry":"GlobalGOCor","repo":"PruneTruong/GOCor","repo_kind":"named_in_paper","path":"GOCor/global_gocor.py","file_url":"https://github.com/PruneTruong/GOCor/blob/HEAD/GOCor/global_gocor.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"25366ffe25c8bc36"}},{"code_sha256_prefix":"18e6cd02960c2b23","entry":"OpticalFlowEstimator","repo":"PruneTruong/GLU-Net","repo_kind":"listed","path":"models/our_models/GLUNet.py","file_url":"https://github.com/PruneTruong/GLU-Net/blob/HEAD/models/our_models/GLUNet.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"GPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"18e6cd02960c2b23"}},{"code_sha256_prefix":"2874bd730d68f2b1","entry":"OpticalFlowEstimatorNoDenseConnection","repo":"PruneTruong/GLU-Net","repo_kind":"listed","path":"models/our_models/GLUNet.py","file_url":"https://github.com/PruneTruong/GLU-Net/blob/HEAD/models/our_models/GLUNet.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":"deterministic","behaviour_fingerprint":true,"licence":"GPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"2874bd730d68f2b1"}},{"code_sha256_prefix":"60523f6d6d1f6fa4","entry":"ResNetPyramid","repo":"PruneTruong/GLU-Net","repo_kind":"listed","path":"models/our_models/GLUNet.py","file_url":"https://github.com/PruneTruong/GLU-Net/blob/HEAD/models/our_models/GLUNet.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"GPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"60523f6d6d1f6fa4"}},{"code_sha256_prefix":"ea448b10b84d2017","entry":"conv","repo":"PruneTruong/GLU-Net","repo_kind":"listed","path":"models/our_models/GLUNet.py","file_url":"https://github.com/PruneTruong/GLU-Net/blob/HEAD/models/our_models/GLUNet.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":"GPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"ea448b10b84d2017"}},{"code_sha256_prefix":"8da443faacf5f51a","entry":"conv_blck","repo":"PruneTruong/GLU-Net","repo_kind":"listed","path":"models/our_models/GLUNet.py","file_url":"https://github.com/PruneTruong/GLU-Net/blob/HEAD/models/our_models/GLUNet.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":"GPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"8da443faacf5f51a"}},{"code_sha256_prefix":"21c67fa7347e53dc","entry":"conv_head","repo":"PruneTruong/GLU-Net","repo_kind":"listed","path":"models/our_models/GLUNet.py","file_url":"https://github.com/PruneTruong/GLU-Net/blob/HEAD/models/our_models/GLUNet.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":"GPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"21c67fa7347e53dc"}},{"code_sha256_prefix":"e5cf22998f71a87e","entry":"deconv","repo":"PruneTruong/GLU-Net","repo_kind":"listed","path":"models/our_models/GLUNet.py","file_url":"https://github.com/PruneTruong/GLU-Net/blob/HEAD/models/our_models/GLUNet.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":"GPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"e5cf22998f71a87e"}},{"code_sha256_prefix":"c3f23a008d953af5","entry":"predict_flow","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":"c3f23a008d953af5"}},{"code_sha256_prefix":"b2bf0025a986b118","entry":"unnormalise_and_convert_mapping_to_flow","repo":"PruneTruong/GLU-Net","repo_kind":"listed","path":"models/our_models/GLUNet.py","file_url":"https://github.com/PruneTruong/GLU-Net/blob/HEAD/models/our_models/GLUNet.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":"GPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"b2bf0025a986b118"}},{"code_sha256_prefix":"9f7160674c91d903","entry":"warp","repo":"PruneTruong/GLU-Net","repo_kind":"listed","path":"models/our_models/GLUNet.py","file_url":"https://github.com/PruneTruong/GLU-Net/blob/HEAD/models/our_models/GLUNet.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":"GPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"9f7160674c91d903"}},{"code_sha256_prefix":"0ffb01b5e3868007","entry":"GLUNet_model","repo":"PruneTruong/GLU-Net","repo_kind":"listed","path":"models/our_models/GLUNet.py","file_url":"https://github.com/PruneTruong/GLU-Net/blob/HEAD/models/our_models/GLUNet.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"GPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"0ffb01b5e3868007"}},{"code_sha256_prefix":"95ad4c0d44741b19","entry":"NeighConsensus","repo":"PruneTruong/GLU-Net","repo_kind":"listed","path":"models/our_models/GLUNet.py","file_url":"https://github.com/PruneTruong/GLU-Net/blob/HEAD/models/our_models/GLUNet.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"GPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"95ad4c0d44741b19"}},{"code_sha256_prefix":"dc39cc2333935c87","entry":"VGGPyramid","repo":"PruneTruong/GLU-Net","repo_kind":"listed","path":"models/our_models/GLUNet.py","file_url":"https://github.com/PruneTruong/GLU-Net/blob/HEAD/models/our_models/GLUNet.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"GPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"dc39cc2333935c87"}},{"code_sha256_prefix":"8407da62949de1ee","entry":"conv4d","repo":"PruneTruong/GLU-Net","repo_kind":"listed","path":"models/our_models/GLUNet.py","file_url":"https://github.com/PruneTruong/GLU-Net/blob/HEAD/models/our_models/GLUNet.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"GPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"8407da62949de1ee"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}