SYNTOLOGY HomeExplorerAtlasCodeMethodologyAboutDevelopersFeedPricing
Paper · 2412.09199 · NeurIPS · 2025

MutualVPR: A Mutual Learning Framework for Resolving Supervision Inconsistencies via Adaptive Clustering

Guang Chen, Ziqiao Wang, Junqiao Zhao, Tiantian Feng, Qiwen Gu, Xufei Wang, Siyue Tao

arXiv · PDF · Open in the Atlas

Code that ran

We lifted 15 functions out of this paper's own repositories and ran 2 of them in a sandbox. "Ran" means the function executed on a synthesized input and returned a value. It is not a reproduction of the paper's results.

RepositoryRoleRan
Gucci233/MutualVPR canonical 2 of 15
FunctionStatusWhere it lives
gem Ran Gucci233/MutualVPR/cosplace_model/layers.py
pointer only (licence: NONE) · get_code("79f68aea8273d062")
named_apply Ran Gucci233/MutualVPR/backbone/vision_transformer.py
pointer only (licence: NONE) · get_code("e7fcb6d9ac9deaf4")
cluster_acc Not yet run Gucci233/MutualVPR/util.py
pointer only (licence: NONE) · get_code("4033a01764a10bf0")
cosine_sim Not yet run Gucci233/MutualVPR/cosface_loss.py
pointer only (licence: NONE) · get_code("d7ebec9a9c0c9b14")
eva Not yet run Gucci233/MutualVPR/util.py
pointer only (licence: NONE) · get_code("7eaa679765840da6")
get_backbone Not yet run Gucci233/MutualVPR/cosplace_model/cosplace_network.py
pointer only (licence: NONE) · get_code("98e6824b3bb0eef9")
get_crop_image Not yet run Gucci233/MutualVPR/datasets/dataset_utils.py
pointer only (licence: NONE) · get_code("f220669505374432")
get_pretrained_torchvision_model Not yet run Gucci233/MutualVPR/cosplace_model/cosplace_network.py
pointer only (licence: NONE) · get_code("4102a46eb0cc1ac7")
get_training_query_set Not yet run Gucci233/MutualVPR/datasets/pittsburgh.py
pointer only (licence: NONE) · get_code("a344fab75c51fe9a")
get_whole_training_set Not yet run Gucci233/MutualVPR/datasets/pittsburgh.py
pointer only (licence: NONE) · get_code("ccc715a4170f75e9")
input_transform Not yet run Gucci233/MutualVPR/datasets/tokyo247.py
pointer only (licence: NONE) · get_code("e7fce521294dd6b0")
parse_arguments Not yet run Gucci233/MutualVPR/myparser.py
pointer only (licence: NONE) · get_code("dd6baf8e06f292e1")
parse_dbStruct Not yet run Gucci233/MutualVPR/datasets/pittsburgh.py
pointer only (licence: NONE) · get_code("b621be8f9984138e")
read_images_paths Not yet run Gucci233/MutualVPR/datasets/dataset_utils.py
pointer only (licence: NONE) · get_code("6e1ab6206b79c01f")
read_pano_images_paths Not yet run Gucci233/MutualVPR/datasets/dataset_utils.py
pointer only (licence: NONE) · get_code("16e7f712c3144990")

Repositories linked to this paper

Some links come from the archived Papers with Code dataset (CC BY-SA 4.0): attribution and licence.

Abstract

Visual Place Recognition (VPR) enables robust localization through image retrieval based on learned descriptors. However, drastic appearance variations of images at the same place caused by viewpoint changes can lead to inconsistent supervision signals, thereby degrading descriptor learning. Existing methods either rely on manually defined cropping rules or labeled data for view differentiation, but they suffer from two major limitations: (1) reliance on labels or handcrafted rules restricts generalization capability; (2) even within the same view direction, occlusions can introduce feature ambiguity. To address these issues, we propose MutualVPR, a mutual learning framework that integrates unsupervised view self-classification and descriptor learning. We first group images by geographic coordinates, then iteratively refine the clusters using K-means to dynamically assign place categories without orientation labels. Specifically, we adopt a DINOv2-based encoder to initialize the clustering. During training, the encoder and clustering co-evolve, progressively separating drastic appearance variations of the same place and enabling consistent supervision. Furthermore, we find that capturing fine-grained image differences at a place enhances robustness. Experiments demonstrate that MutualVPR achieves state-of-the-art (SOTA) performance across multiple datasets, validating the effectiveness of our framework in improving view direction generalization, occlusion robustness. The code can be found at https://github.com/Gucci233/MutualVPR.

For agents

The same record, over MCP at https://syntology.ai/mcp:

get_harvested_code_for_paper("2412.09199")
get_code_for_paper("2412.09199")
have("2412.09199")

Connect an agent — have() is free.