UnReflectAnything inputs any RGB image and removes specular highlights, returning a clean diffuse-only output. We trained UnReflectAnything by synthetizing specularities and supervising in DINOv3 feature space.
UnReflectAnything works on both natural indoor and surgical/endoscopic domain data.
Important
The maintainers are still working on an official API and Weights release for UnReflectAnything. In v1.0.2 the model is available from the API with pretrained=False by deafault, and forecefully setting it True will display a warning and weights will not be downloaded. Stay tuned for the official release!
pip install unreflectanythingInstall UnReflectAnything as a Python Package.
The minimum required Python version is 3.11, but development and all experiments have been based on Python 3.12.
For GPU support, make sure PyTorch comes with CUDA version for your system (see PyTorch Get Started).
After pip-installing, you can use the unreflectanything CLI command, which is also aliased to unreflect and ura. The three commands are equivalent.
With the CLI you can already download the model weights with
unreflectanything download --weightsand some sample images with
unreflectanything download --imagesWeights are stored by default in ~/.cache/unreflectanything/weights (or $XDG_CACHE_HOME/unreflectanything/weights if set ; %LOCALAPPDATA%\unreflectanything for Windows). Use --output-dir to choose another location.
Both the weights and images are stored on the HuggingFace Model Repo.
Shell completion is available for the bash and zsh shells. Run
unreflectanything completion bashand execute the echo ... command that gets printed.
Get an overview of the available CLI endpoints with
unreflectanything --help # alias 'unreflect --help' alias 'ura --help'
Refer to the Wiki to get detailed documentation about each endpoint. We report a summary of the available subcommands. Remember that ura is aliased to the unreflectanything command
| Subcommand | Description | Command |
|---|---|---|
inference |
Run inference on image(s) to remove reflections | ura inference /path/to/images -o /path/to/output |
download |
Download checkpoint weights, sample images, notebooks, configs | ura download --weights |
cache |
Print cache directory or clear cached assets | ura cache --dir or ura cache --clear |
verify |
Verify weights installation and compatibility, or dataset directory structure | ura verify --weights or ura verify --dataset --path /path/to/dataset |
cite |
Print citation (BibTeX, APA, MLA, IEEE, plain) | ura cite --bibtex |
completion |
Print or install shell completion (bash/zsh) | ura completion bash |
Training, testing, and evaluation are available via the Python API; see the Wiki for details.
The same endpoints above are exposed as a Python API. Refer to the Wiki to get detailed documentation about each endpoint. A few examples are reported below
import unreflectanything as unreflect
import torch
# Get the model class (e.g. for custom setup or training)
ModelClass = unreflect.model()
# Get a pretrained model (torch.nn.Module) and run on batched RGB
unreflectmodel = unreflect.model(pretrained=True) # uses cached weights; run 'unreflect download --weights' first
images = torch.rand(2, 3, 448, 448, device="cuda") # [B, 3, H, W], values in [0, 1]
model_out = unreflectmodel(images) # [B, 3, H, W] diffuse tensor
# File-based or tensor-based inference (one-shot, no model handle)
unreflect.inference("input.png", output="output.png")
unreflect.inference(images, output="output.png")
result = unreflect.inference(images)
# Cache directory (where weights, images, etc. are stored)
weights_dir = unreflect.cache("weights")If you want to contribute or develop UnReflectAnything:
- Clone the repository:
git clone https://github.com/alberto-rota/UnReflectAnything.git cd UnReflectAnything - Install dependencies (we recommend a virtual environment with Python 3.12):
pip install -r requirements.txt
If you include UnReflectAnything in your pipeline or research work, we encourage you cite our work. Get the citation entry with
unreflectanything cite --bibtexor copy it directly from below
@misc{rota2025unreflectanything,
title={UnReflectAnything: RGB-Only Highlight Removal by Rendering Synthetic Specular Supervision},
author={Alberto Rota and Mert Kiray and Mert Asim Karaoglu and Patrick Ruhkamp and Elena De Momi and Nassir Navab and Benjamin Busam},
year={2025},
eprint={2512.09583},
archivePrefix={arXiv},
primaryClass={cs.CV},
url={https://arxiv.org/abs/2512.09583},
}
