Papers › Learning Discriminative Features with Multiple Granularities for Person Re-Identification

Learning Discriminative Features with Multiple Granularities for Person Re-Identification

4 Apr 2018arXiv:1804.01438archive 2025-07-28

Guanshuo Wang, Yufeng Yuan, Xiong Chen, Jiwei Li, Xi Zhou

The combination of global and partial features has been an essential solution to improve discriminative performances in person re-identification (Re-ID) tasks. Previous part-based methods mainly focus on locating regions with specific pre-defined semantics to learn local representations, which increases learning difficulty but not efficient or robust to scenarios with large variances. In this paper, we propose an end-to-end feature learning strategy integrating discriminative information with various granularities. We carefully design the Multiple Granularity Network (MGN), a multi-branch deep network architecture consisting of one branch for global feature representations and two branches for local feature representations. Instead of learning on semantic regions, we uniformly partition the images into several stripes, and vary the number of parts in different local branches to obtain local feature representations with multiple granularities. Comprehensive experiments implemented on the mainstream evaluation datasets including Market-1501, DukeMTMC-reid and CUHK03 indicate that our method has robustly achieved state-of-the-art performances and outperformed any existing approaches by a large margin. For example, on Market-1501 dataset in single query mode, we achieve a state-of-the-art result of Rank-1/mAP=96.6%/94.2% after re-ranking.

PaperPDFCodeCode Syntology ran

In Syntology Open this paper in Syntology's Atlas, the map of the papers in Syntology's graph and their citations.

For agents, Syntology's MCP tool lists every function and class Syntology harvested from this paper and whether it ran (how to connect): get_harvested_code_for_paper(arxiv_id="1804.01438")

Code

Syntology Ran 2 of 30 code samples harvested from 5 repositories linked to this paper; 28 have no recorded run. Of those that ran: 2 ran · our draft was wrong.

By repository: community (archive-listed): 30 samples from 5 repositories, 2 ran. The run record, sample by sample. “Ran” means executed on a synthesized input, not that the code is correct or reproduces the paper.

16 repositories listed; official and paper-mentioned ones first.

CoinCheung/SphereReID mentioned on GitHubpytorch report
GNAYUOHZ/ReID-MGN mentioned on GitHubpytorch report
LcenArthas/Kaggle-Humpback-Whale-Identification mentioned on GitHubpytorchGPL-3.0 report
WangTaoAs/MGN_ReID mentioned on GitHubpytorchApache-2.0 report
ZJULearning/PTL mentioned on GitHubpytorchMIT report
hugh67/reid-MGN-pytorch mentioned on GitHubpytorch report
joehammer934/MGN-ReId mentioned on GitHubtf report
kilsenp/triplet-reid-pytorch mentioned on GitHubpytorchMIT report
seathiefwang/MGN-pytorch mentioned on GitHubpytorch report
wang-tf/MGN-tf mentioned on GitHubtf report
xr-Yang/MGN-Pytorch mentioned on GitHubpytorch report
youwenjing/reid_mgn-dgnet mentioned on GitHubpytorch report
zp1018/ReID-MGN mentioned on GitHubpytorchMIT report

Repository list and official/mentioned flags are the archive's, frozen 2025-07-28. Reachability, where shown, is from one Syntology probe window (2026-09-16 to 2026-09-18); repositories not probed show nothing. GitHub stars are not tracked.

Code Syntology ran Syntology

30 samples harvested; 2 ran; 0 honoured the contract we drafted; 28 have no recorded run. Read from Syntology's graph 2026-09-24; that is when this build read the record, not when the samples ran.

2ran · our draft was wrong
28unverified

Licence: 0 of the 30 samples are pointer only, meaning Syntology does not serve that copy's text. This page shows no code text for any sample; each one links to its file in the repository.

Harvested from 5 repositories linked to this paper, official or community; each sample names its own and says which. “Ran” means the sample executed on a synthesized input. It does not mean the output is correct, and nothing here reproduces the paper's results. “Honoured” and “violated” refer to a contract Syntology drafted from the code itself; “our draft was wrong” and “fixture could not drive it” are failures of Syntology's instrument, not of the code.

Each sample ends with its code_sha256, Syntology's identity for that exact code. An agent fetches the stored sample with Syntology's MCP tool get_code(code_sha256="…") (how to connect); click an identity to copy that call.

Repository labels, per sample. official repository: The archive marks this repository official for the paper. named in the paper: The archive records that the paper mentions this repository; it is not marked official. community (archive-listed): In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper. found in paper text by Syntology: 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. Samples from a repository marked official are listed first. Licence labels name the repository's licence as recorded at harvest. “Pointer only” means Syntology does not serve that copy's text, for one of four reasons: no licence file was found; the licence was not identified; the licence is recorded as permissive but that copy's record is not marked cleared; or the licence is outside the permissive list Syntology serves text under (MIT, Apache-2.0, BSD and similar). Some licences outside that list permit redistribution, such as WTFPL, and GPL-3.0 under its conditions; they are simply not on the list. Hover a licence label for the reason. File links open the file on GitHub at the default branch, which may have changed since the harvest.

evaluate CoinCheung/SphereReID/evaluate.py community (archive-listed) ran · our draft was wrong MIT (permissive) · 14ce86adfcabf648 · report
normalize WangTaoAs/MGN_ReID/loss/triplet_loss.py community (archive-listed) ran · our draft was wrong fingerprinted Apache-2.0 (permissive) · e3b2a83f52101f2d · report
batch_hard kilsenp/triplet-reid-pytorch/triplet_loss.py community (archive-listed) unverified MIT (permissive) · 2fa6cc6f02a35ebc · report
batch_soft kilsenp/triplet-reid-pytorch/triplet_loss.py community (archive-listed) unverified MIT (permissive) · f29fa18ca4edab98 · report
calc_cdist kilsenp/triplet-reid-pytorch/triplet_loss.py community (archive-listed) unverified MIT (permissive) · e48e75619dc39f15 · report
clean_dict kilsenp/triplet-reid-pytorch/embed.py community (archive-listed) unverified MIT (permissive) · 2a170d2b7c7dddc3 · report
cmc ZJULearning/PTL/functions.py community (archive-listed) unverified MIT (permissive) · d829b83e56e02c65 · report
cosine_dist WangTaoAs/MGN_ReID/loss/triplet_loss.py community (archive-listed) unverified Apache-2.0 (permissive) · 71b4e1d375d8fd78 · report
create_pids2idxs kilsenp/triplet-reid-pytorch/triplet_sampler.py community (archive-listed) unverified MIT (permissive) · a1d570b6c43c23c8 · report
euclidean_dist WangTaoAs/MGN_ReID/loss/triplet_loss.py community (archive-listed) unverified Apache-2.0 (permissive) · 5315f75bf5367f0a · report
euclidean_distance WangTaoAs/MGN_ReID/utils/metrics.py community (archive-listed) unverified Apache-2.0 (permissive) · 93f3ef4f748bb19f · report
eval_func WangTaoAs/MGN_ReID/utils/metrics.py community (archive-listed) unverified Apache-2.0 (permissive) · 684ff63ea266cf09 · report
extract_csv_name kilsenp/triplet-reid-pytorch/embed.py community (archive-listed) unverified MIT (permissive) · bed67b8223c2839d · report
get_data_shape kilsenp/triplet-reid-pytorch/logger.py community (archive-listed) unverified MIT (permissive) · b483a25cae0194a3 · report
get_last_file_number kilsenp/triplet-reid-pytorch/logger.py community (archive-listed) unverified MIT (permissive) · 0f69b32d83075cfd · report
get_new_numeric_name kilsenp/triplet-reid-pytorch/logger.py community (archive-listed) unverified MIT (permissive) · 2ac5011790ab78b8 · report
import_from_path kilsenp/triplet-reid-pytorch/models/utils.py community (archive-listed) unverified MIT (permissive) · caf4525e66901338 · report
k_reciprocal_neigh ZJULearning/PTL/functions.py community (archive-listed) unverified MIT (permissive) · a610e67edff490e6 · report
list_pictures ZJULearning/PTL/data.py community (archive-listed) unverified MIT (permissive) · eb053124052a3cd2 · report
list_pictures zp1018/ReID-MGN/mgn/market1501.py community (archive-listed) unverified MIT (permissive) · 593b08055f5a5011 · report
make_dataset_default kilsenp/triplet-reid-pytorch/csv_dataset.py community (archive-listed) unverified MIT (permissive) · c928647a92245df7 · report
make_dilated_layer4 kilsenp/triplet-reid-pytorch/models/dilated.py community (archive-listed) unverified MIT (permissive) · 843e31edd4b97817 · report
make_loss WangTaoAs/MGN_ReID/loss/make_loss.py community (archive-listed) unverified Apache-2.0 (permissive) · 78f5737686a6d6fd · report
make_model WangTaoAs/MGN_ReID/model/build_model.py community (archive-listed) unverified Apache-2.0 (permissive) · c656b5d8b9ddaf71 · report
make_optimizer WangTaoAs/MGN_ReID/processor/make_optimizer.py community (archive-listed) unverified Apache-2.0 (permissive) · 6e544671b85f034f · report
make_scheduler WangTaoAs/MGN_ReID/processor/make_optimizer.py community (archive-listed) unverified Apache-2.0 (permissive) · 348c97f2f7dfc317 · report
mean_ap ZJULearning/PTL/functions.py community (archive-listed) unverified MIT (permissive) · ade5a37f8a900999 · report
pil_loader kilsenp/triplet-reid-pytorch/csv_dataset.py community (archive-listed) unverified MIT (permissive) · adea188f95a2367b · report
pil_loader_with_crop kilsenp/triplet-reid-pytorch/csv_dataset.py community (archive-listed) unverified MIT (permissive) · 1fef0055e4652d03 · report
write_to_h5 kilsenp/triplet-reid-pytorch/embed.py community (archive-listed) unverified MIT (permissive) · 36e1ac6f83dcf494 · report

Tasks

Person Re-IdentificationRe-Ranking

Results from the paper archive 2025-07-28

TaskDatasetModelMetricValueRank at snapshotLeaderboardReport
Person Re-Identification CUHK03 detected MGN (ACM MM'18) MAP 66.0 #11 of 19 Archive leaderboard report
Person Re-Identification CUHK03 detected MGN (ACM MM'18) Rank-1 68.0 #11 of 19 Archive leaderboard report
Person Re-Identification CUHK03 labeled MGN (ACM MM'18) MAP 67.4 #13 of 21 Archive leaderboard report
Person Re-Identification CUHK03 labeled MGN (ACM MM'18) Rank-1 68.0 #13 of 21 Archive leaderboard report
Person Re-Identification DukeMTMC-reID MGN Rank-1 88.7 #54 of 94 Archive leaderboard report
Person Re-Identification DukeMTMC-reID MGN mAP 78.4 #54 of 94 Archive leaderboard report
Person Re-Identification Market-1501 MGN Rank-1 95.7 #47 of 135 Archive leaderboard report
Person Re-Identification Market-1501 MGN mAP 86.9 #47 of 135 Archive leaderboard report
Person Re-Identification Market-1501-C MGN Rank-1 29.56 #16 of 22 Archive leaderboard report
Person Re-Identification Market-1501-C MGN mAP 9.72 #16 of 22 Archive leaderboard report
Person Re-Identification Market-1501-C MGN mINP 0.29 #16 of 22 Archive leaderboard report
Person Re-Identification SYSU-30k MGN (generalization) Rank-1 23.6 #3 of 10 Archive leaderboard report

Ranks are positions in the archive's leaderboards as they stood at the 2025-07-28 snapshot. Results published since then are not among these rows, so a rank here is not a current standing.

Report a problem or propose a change · a person checks every report against the paper or source before anything changes; decisions are listed on /corrections