Papers › Mugs: A Multi-Granular Self-Supervised Learning Framework

Mugs: A Multi-Granular Self-Supervised Learning Framework

27 Mar 2022arXiv:2203.14415archive 2025-07-28

Pan Zhou, Yichen Zhou, Chenyang Si, Weihao Yu, Teck Khim Ng, Shuicheng Yan

In self-supervised learning, multi-granular features are heavily desired though rarely investigated, as different downstream tasks (e.g., general and fine-grained classification) often require different or multi-granular features, e.g.~fine- or coarse-grained one or their mixture. In this work, for the first time, we propose an effective MUlti-Granular Self-supervised learning (Mugs) framework to explicitly learn multi-granular visual features. Mugs has three complementary granular supervisions: 1) an instance discrimination supervision (IDS), 2) a novel local-group discrimination supervision (LGDS), and 3) a group discrimination supervision (GDS). IDS distinguishes different instances to learn instance-level fine-grained features. LGDS aggregates features of an image and its neighbors into a local-group feature, and pulls local-group features from different crops of the same image together and push them away for others. It provides complementary instance supervision to IDS via an extra alignment on local neighbors, and scatters different local-groups separately to increase discriminability. Accordingly, it helps learn high-level fine-grained features at a local-group level. Finally, to prevent similar local-groups from being scattered randomly or far away, GDS brings similar samples close and thus pulls similar local-groups together, capturing coarse-grained features at a (semantic) group level. Consequently, Mugs can capture three granular features that often enjoy higher generality on diverse downstream tasks over single-granular features, e.g.~instance-level fine-grained features in contrastive learning. By only pretraining on ImageNet-1K, Mugs sets new SoTA linear probing accuracy 82.1% on ImageNet-1K and improves previous SoTA by 1.1%. It also surpasses SoTAs on other tasks, e.g. transfer learning, detection and segmentation.

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="2203.14415")

Code

Syntology Ran 4 of 21 code samples harvested from 1 repository linked to this paper; 17 have no recorded run. Of those that ran: 4 ran with no contract checked.

By repository: official repository: 21 samples from 1 repository, 4 ran. The run record, sample by sample. “Ran” means executed on a synthesized input, not that the code is correct or reproduces the paper.

sail-sg/mugs officialmentioned on GitHubpytorchApache-2.0 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

21 samples harvested; 4 ran; 0 honoured the contract we drafted; 17 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.

4ran
17unverified

Licence: 0 of the 21 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 sail-sg/mugs. “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.

bool_flag sail-sg/mugs/utils.py official repository ran Apache-2.0 (permissive) · c19231378e41dc5a · report
shear_x sail-sg/mugs/src/RandAugment.py official repository ran Apache-2.0 (permissive) · e866e1196986f728 · report
shear_y sail-sg/mugs/src/RandAugment.py official repository ran Apache-2.0 (permissive) · 7b2503c99c9447fb · report
translate_x_rel sail-sg/mugs/src/RandAugment.py official repository ran Apache-2.0 (permissive) · 323759f906fbb394 · report
build_dataset sail-sg/mugs/eval/eval_finetuning/eval_finetuning.py official repository unverified Apache-2.0 (permissive) · 961c92c8136b0f58 · report
build_transform sail-sg/mugs/eval/eval_finetuning/eval_finetuning.py official repository unverified Apache-2.0 (permissive) · 2c33c9d3e647cbf1 · report
clip_gradients sail-sg/mugs/src/optimizer.py official repository unverified Apache-2.0 (permissive) · 3adab9891c1273b6 · report
concat_all_gather sail-sg/mugs/src/model.py official repository unverified Apache-2.0 (permissive) · 73cecca9f3575f09 · report
cosine_scheduler sail-sg/mugs/src/optimizer.py official repository unverified Apache-2.0 (permissive) · 990ca4fb0109bfab · report
drop_path sail-sg/mugs/src/vision_transformer.py official repository unverified Apache-2.0 (permissive) · 793f2b6524ba26f0 · report
find_classes sail-sg/mugs/src/dataset.py official repository unverified Apache-2.0 (permissive) · e8a374d2601aaaa9 · report
get_logger sail-sg/mugs/utils.py official repository unverified Apache-2.0 (permissive) · 67bc6a24e6bba540 · report
get_loss_scale_for_deepspeed sail-sg/mugs/eval/eval_finetuning/engine_for_finetuning.py official repository unverified Apache-2.0 (permissive) · 29416043c7035e7c · report
get_params_groups sail-sg/mugs/src/optimizer.py official repository unverified Apache-2.0 (permissive) · 7a2ce97fc746d0ce · report
get_sinusoid_encoding_table sail-sg/mugs/eval/eval_finetuning/model_for_finetuning.py official repository unverified Apache-2.0 (permissive) · a45ecd9b366b453e · report
has_batchnorms sail-sg/mugs/utils.py official repository unverified Apache-2.0 (permissive) · a35723fa2858c406 · report
has_file_allowed_extension sail-sg/mugs/src/dataset.py official repository unverified Apache-2.0 (permissive) · 826e35844a00b3a3 · report
is_image_file sail-sg/mugs/src/dataset.py official repository unverified Apache-2.0 (permissive) · 75aa69b9b8b80e72 · report
train_class_batch sail-sg/mugs/eval/eval_finetuning/engine_for_finetuning.py official repository unverified Apache-2.0 (permissive) · c7976ea27edc377a · report
trunc_normal_ sail-sg/mugs/src/vision_transformer.py official repository unverified Apache-2.0 (permissive) · e6d9582234fb26e6 · report
vit_tiny sail-sg/mugs/src/vision_transformer.py official repository unverified Apache-2.0 (permissive) · f5479cb822d15445 · report

Tasks

Contrastive LearningSelf-Supervised Image ClassificationSelf-Supervised LearningSemantic SegmentationTransfer Learning

Results from the paper archive 2025-07-28

TaskDatasetModelMetricValueRank at snapshotLeaderboardReport
Self-Supervised Image Classification ImageNet Mugs (VIT-L/16) Number of Params 307M #13 of 144 Archive leaderboard report
Self-Supervised Image Classification ImageNet Mugs (VIT-L/16) Top 1 Accuracy 82.1% #13 of 144 Archive leaderboard report
Self-Supervised Image Classification ImageNet (finetuned) Mugs (ViT-L/16) Number of Params 307M #25 of 65 Archive leaderboard report
Self-Supervised Image Classification ImageNet (finetuned) Mugs (ViT-L/16) Top 1 Accuracy 85.2% #25 of 65 Archive leaderboard report
Self-Supervised Image Classification ImageNet (finetuned) Mugs (ViT-B/16) Number of Params 85M #32 of 65 Archive leaderboard report
Self-Supervised Image Classification ImageNet (finetuned) Mugs (ViT-B/16) Top 1 Accuracy 84.3% #32 of 65 Archive leaderboard report
Self-Supervised Image Classification ImageNet (finetuned) Mugs (ViT-S/16) Number of Params 21M #50 of 65 Archive leaderboard report
Self-Supervised Image Classification ImageNet (finetuned) Mugs (ViT-S/16) Top 1 Accuracy 82.6% #50 of 65 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