← Open Source
wimmerth

anyup

[ICLR '26 Oral] Official repository of the paper "AnyUp: Universal Feature Upsampling".

ModelsVision modelsEmbedding ModelsJupyter Notebook
Open on GitHub
Momentum
+0stars in 24 hours0.0%
595
Stars
39
Forks
+3
This week
4
Contributors
Created 2025-10-14 · Updated 2026-10-14 · #16394 today
Top developers
wimmerthanwai98janericlenssen

wimmerth/anyup is ranked 16,394 with 595 stars.

Same-category comparison

wimmerth/anyup is ranked 16,394 among these 8 peers; yoxu515/aot-benchmark is ranked 16,395.

Same-category comparison
NameRankMetrics
MIV-XJTU/JanusVLN16,308
Language:
Python
Stars:
599
Forks:
42
Description:
[ICLR2026] Official implementation for "JanusVLN: Decoupling Semantics and Spatiality with Dual Implicit Memory for Vision-Language Navigation".
d-li14/mobilenetv3.pytorch16,333
Language:
Python
Stars:
598
Forks:
130
Description:
74.3% MobileNetV3-Large and 67.2% MobileNetV3-Small model on ImageNet.
JeffWang987/DriveDreamer16,348
Language:
Python
Stars:
597
Forks:
29
Description:
[ECCV 2024] DriveDreamer: Towards Real-world-driven World Models for Autonomous Driving.
sail-sg/MDT16,360
Language:
Python
Stars:
597
Forks:
42
Description:
Masked Diffusion Transformer is the SOTA for image synthesis. (ICCV 2023).
yoxu515/aot-benchmark16,395
Language:
Python
Stars:
595
Forks:
101
Description:
An efficient modular implementation of Associating Objects with Transformers for Video Object Segmentation in PyTorch.
allenai/specter16,410
Language:
Python
Stars:
593
Forks:
58
Description:
SPECTER: Document-level Representation Learning using Citation-informed Transformers.
JDAI-CV/DCL16,417
Language:
Python
Stars:
592
Forks:
156
Description:
Destruction and Construction Learning for Fine-grained Image Recognition.
IDKiro/DehazeFormer16,431
Language:
Python
Stars:
591
Forks:
65
Description:
Vision Transformers for Single Image Dehazing.
Key parameters and specifications
Key parameters and specifications
ParameterValue
LanguageJupyter Notebook
CategoryModels
SubcategoryVision models, Embedding Models
KeywordsEmbeddings, Model architecture, Visual understanding
Stars595
Forks39
Contributors4
Created date2025-10-14
Updated date2026-10-14
Stars in 1 day0
Stars in 7 days3
Rank16,394
Previous rank16,187
Rank change-207
7-day stars rank7,368
Previous 7-day stars rank7,402
7-day stars rank change34
Total stars rank16,908
Previous total stars rank16,886
Total stars rank change-22
README summary

[ICLR '26 Oral] AnyUp: Universal Feature Upsampling **Thomas Wimmer** 1,2 , Prune Truong 3 , Marie-Julie Rakotosaona 3 , Michael Oechsle 3 , Federico Tombari 3,4 , Bernt Schiele 1 , Jan Eric Lenssen 1 1 Max Planck Institute for Informatics, 2 ETH Zurich, 3 Google, 4 TU Munich **Abstract:** We introduce AnyUp, a method for feature upsampling that can be applied to any vision feature at any resolution, without encoder-specific training. Existing learning-based upsamplers for features like DINO or CLIP

need to be re-trained for every feature extractor and thus do not generalize to different feature types at inference time. In this work, we propose an _inference-time_ feature-agnostic upsampling architecture to alleviate this limitation and improve upsampling quality. In our experiments, AnyUp sets a new state of the art for upsampled features, generalizes to different feature types, and preserves feature semantics while being efficient and easy to apply to a wide range of downstream tasks. The authors

also implemented an efficient **MLX-compatible version of AnyUp**, which is available in their repository. Check it out if you want to use AnyUp on edge devices! **[11/25]** We added a **more efficient** (both memory and speed-wise) NATTEN-based version of the window attention module used in AnyUp. You can load the new model by specifying when loading the model from torch. Please note, that this model variant uses slightly different windows than the original AnyUp model, which

was used for all experiments in the paper. If you want to use it in your project, you have to install NATTEN in addition to PyTorch. Follow the official install instructions for your CUDA version. **[11/25]** We further added **multi-backbone training** to our codebase, which allows training a single AnyUp model with multiple different feature extractors. This improves generalization to unseen backbones at inference time. To use this feature, please load the pre-trained model with . **[11/25

]** We added installation of as package for local development. Please see the instructions for installation below. Upsample features from any model, at any layer without having to retrain the upsampler. It's as easy as this: **Notes:** The should be normalized to ImageNet mean and std as usual for most vision encoders. The can be any features from any encoder, e. The will have the same spatial resolution as the by default. We use hydra for configuration management, so you can

easily modify hyperparameters in the corresponding config files. We trained our model on the ImageNet dataset, which you will have to download and put into before running the training script. We further use information on the image resolutions in ImageNet, which can be created using the script. You can also download this file directly from the releases and put it into . **Evaluation** followed the protocols of JAFAR for semantic segmentation and Probe3D for surface normal and depth estimation. Note that

we applied a small fix to the probe training in JAFAR (updating LR scheduling to per epoch instead of per

Frequently asked questions

How many stars and forks are recorded?

wimmerth/anyup has 595 stars and 39 forks.

What is the repository rank?

wimmerth/anyup is ranked 16,394.

What language and category are recorded?

wimmerth/anyup has 595 stars, uses Jupyter Notebook and belongs to Models.

Which repository is closest in rank?

wimmerth/anyup is compared with yoxu515/aot-benchmark, ranked 16,395 with 595 stars.

README

[ICLR '26 Oral] AnyUp: Universal Feature Upsampling

Thomas Wimmer1,2, Prune Truong3, Marie-Julie Rakotosaona3, Michael Oechsle3, Federico Tombari3,4, Bernt Schiele1, Jan Eric Lenssen1

1Max Planck Institute for Informatics, 2ETH Zurich, 3Google, 4TU Munich

Abstract:

We introduce AnyUp, a method for feature upsampling that can be applied to any vision feature at any resolution, without encoder-specific training. Existing learning-based upsamplers for features like DINO or CLIP need to be re-trained for every feature extractor and thus do not generalize to different feature types at inference time. In this work, we propose an inference-time feature-agnostic upsampling architecture to alleviate this limitation and improve upsampling quality. In our experiments, AnyUp sets a new state of the art for upsampled features, generalizes to different feature types, and preserves feature semantics while being efficient and easy to apply to a wide range of downstream tasks.


🔔 News:

[03/26] AnyUp was used in Falcon Perception. The authors also implemented an efficient MLX-compatible version of AnyUp, which is available in their repository. Check it out if you want to use AnyUp on edge devices!

[11/25] We added a more efficient (both memory and speed-wise) NATTEN-based version of the window attention module used in AnyUp. You can load the new model by specifying use_natten=True when loading the model from torch.hub. Please note, that this model variant uses slightly different windows than the original AnyUp model, which was used for all experiments in the paper. If you want to use it in your project, you have to install NATTEN in addition to PyTorch. Follow the official install instructions for your CUDA version.

[11/25] We further added multi-backbone training to our codebase, which allows training a single AnyUp model with multiple different feature extractors. This improves generalization to unseen backbones at inference time. To use this feature, please load the pre-trained model with torch.hub.load('wimmerth/anyup', 'anyup_multi_backbone').

[11/25] We added installation of anyup as package for local development. Please see the instructions for installation below.


Use AnyUp to upsample your features!

Upsample features from any model, at any layer without having to retrain the upsampler. It's as easy as this:

import torch
# high-resolution image (B, 3, H, W)
hr_image    = ...
# low-resolution features (B, C, h, w) 
lr_features = ...
# load the AnyUp upsampler model (here we use the NATTEN-based version trained on multiple backbones)
upsampler   = torch.hub.load('wimmerth/anyup', 'anyup_multi_backbone', use_natten=True)
# upsampled high-resolution features (B, C, H, W)
hr_features = upsampler(hr_image, lr_features)

Notes:

  • The hr_image should be normalized to ImageNet mean and std as usual for most vision encoders.
  • The lr_features can be any features from any encoder, e.g. DINO, CLIP, or ResNet.

The hr_features will have the same spatial resolution as the hr_image by default. If you want a different output resolution, you can specify it with the output_size argument:

# upsampled features with custom output size (B, C, H', W')
hr_features = upsampler(hr_image, lr_features, output_size=(H_prime, W_prime))

If you have limited compute resources and run into OOM issues when upsampling to high resolutions, you can use the q_chunk_size argument to trade off speed for memory:

# upsampled features using chunking to save memory (B, C, H, W)
hr_features = upsampler(hr_image, lr_features, q_chunk_size=10)

If you are interested in the attention that is used by AnyUp to upsample the features, we included an optional visualization thereof in the forward pass (only available if use_natten=False):

# matplotlib must be installed to use this feature
# upsampled features and display attention map visualization (B, C, H, W)
hr_features = upsampler(hr_image, lr_features, vis_attn=True)

To use the model proposed in the original AnyUp paper (without NATTEN and trained on a single backbone, DINOv2 ViT-S), load it with

upsampler = torch.hub.load('wimmerth/anyup', 'anyup')

Installation

Install anyup as package for local development:

micromamba create -n anyup python=3.12 -y
micromamba activate anyup
pip install uv

# Install the correct PyTorch version for your CUDA setup, e.g. for CUDA 11.8 and PyTorch=2.9.0:
uv pip install torch==2.9.0 torchvision==0.24.0 --index-url https://download.pytorch.org/whl/cu128
# Install the correct NATTEN version for your CUDA / PyTorch setup, e.g. for CUDA 11.8 and PyTorch=2.9.0:
uv pip install natten==0.21.1+torch290cu128 -f https://whl.natten.org
# Install the remaining dependencies and anyup as package (call from the root of the repository):
uv pip install -e .

Install the required dependencies for training without installing anyup as package:

micromamba create -n anyup python=3.12 -y
micromamba activate anyup
pip install uv

# Install the correct PyTorch version for your CUDA setup, e.g. for CUDA 11.8 and PyTorch=2.9.0:
uv pip install torch==2.9.0 torchvision==0.24.0 --index-url https://download.pytorch.org/whl/cu128
# Install the correct NATTEN version for your CUDA / PyTorch setup, e.g. for CUDA 11.8 and PyTorch=2.9.0:
uv pip install natten==0.21.1+torch290cu128 -f https://whl.natten.org
# Install the remaining dependencies needed for training:
uv pip install einops matplotlib numpy timm plotly tensorboard hydra-core rich scikit-learn

Training your own AnyUp model

If you want to train your own AnyUp model on custom data or with different hyperparameters, you can do so by running the train.py script. We use hydra for configuration management, so you can easily modify hyperparameters in the corresponding config files.

We trained our model on the ImageNet dataset, which you will have to download and put into ./data/imagenet before running the training script. We further use information on the image resolutions in ImageNet, which can be created using the comput_sizes_index.py script. You can also download this file directly from the releases and put it into ./data/cache/train.sizes.tsv.

Evaluation followed the protocols of JAFAR for semantic segmentation and Probe3D for surface normal and depth estimation. Note that we applied a small fix to the probe training in JAFAR (updating LR scheduling to per epoch instead of per iteration). Therefore, we re-ran all experiments with baselines to ensure a fair comparison.

Acknowledgements: We built our implementation on top of the JAFAR repository and thank the authors for open-sourcing their code. Other note-worthy open-source repositories include: LoftUp, FeatUp, and Probe3D.


Citation

If you find our work useful in your research, please cite it as:

@inproceedings{wimmer2026anyup,
    title={AnyUp: Universal Feature Upsampling},
    author={Wimmer, Thomas and Truong, Prune and Rakotosaona, Marie-Julie and Oechsle, Michael and Tombari, Federico and Schiele, Bernt and Lenssen, Jan Eric},
    booktitle={Proceedings of the International Conference on Learning Representations ({ICLR})},
    year={2026}
}
Nearby in the ranking
Similar items