MCPcopy Index your code
hub / github.com/TimSeizinger/Bokehlicious

github.com/TimSeizinger/Bokehlicious @main

Chat with this repo
repository ↗ · DeepWiki ↗ · + Follow
105 symbols 366 edges 11 files 14 documented · 13%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Bokehlicious: Photorealistic Bokeh Rendering with Controllable Apertures (ICCV 2025)

Project Page


Tim Seizinger, Florin-Alexandru Vasluianu, Marcos V. Conde, Zongwei Wu, Radu Timofte

Computer Vision Lab , CAIDAS, University of Wurzburg, Germany

Official Code and Dataset repository of Bokehlicious: Photorealistic Bokeh Rendering with Controllable Apertures


TLDR; We are the first method that renders photorealistic Bokeh in a controllable way using neural networks

Updates:

22.1.2026:

In collaboration with NTIRE (New Trends in Image Restoration and Enhancement) Workshop @ CVPR 2026 we are hosting a Challenge on Controllable Aperture Bokeh Rendering! The goal is to beat our Baseline method from this repository, with the top teams invited to present their solution at NTIRE @ CVPR 2026

Sign up here: https://www.codabench.org/competitions/12764/

26.1.2026

This repo now includes a script (submit_ntire.py) for easy submission of your results to the NTIRE 2026 Challenge on Controllable Bokeh Rendering! NTIRE related setup instructions can be found in submit_ntire.py.

Installation

git clone https://github.com/TimSeizinger/Bokehlicious.git
cd Bokehlicious
pip install -r requirements.txt

Usage

Due to GitHub file size limits, if you want to use any of the large model checkpoints, don't forget to unpack the .zpaq archives!

predict.py lets you run Bokehlicious on a single image. For example:

python predict.py -img_path ./examples/collie.jpg -size small -av 2.8

Here -img_path is the path to the image you want to render, -size is the size of the model you want to use (small or large) and -av is the aperture f-stop to control the strength of bokeh (between 2.0 and 20.0).

Evaluation

This Repository includes evaluation scripts for Bokeh Rendering on our new RealBokeh dataset, as well as EBB! Val294 and EBB400.

Before running the evaluation script you need to download the test set of RealBokeh and copy it to the ./dataset/RealBokeh folder. The same applies to EBB! Val294 (./dataset/EBB_Val294) and EBB400 (./dataset/EBB400).

To run the evaluation script use:

python evaluate.py -dataset RealBokeh -size small --save_outputs

Here -dataset is the dataset you want to evaluate on (RealBokeh, RealBokeh_bin, EBB_Val294, EBB400), -size is the size of the model you want to use (small or large) and --save_outputs is a flag to save the rendered images.

RealBokeh Dataset

You can find our RealBokeh Dataset on Huggingface!

Dataset on HF

Contact and License

If you would like to use this code or dataset for commercial purposes, check the license and contact us. Feel free to contact us for other inquiries and collaborations.

{tim.seizinger, marcos.conde}[at]uni-wuerzburg.de

Citation

If you find our work useful for your research work please cite:

@inproceedings{seizinger2025bokehlicious,
  author    = {Seizinger, Tim and Vasluianu, Florin-Alexandru and Conde, Marcos and Wu, Zongwei and Timofte, Radu},
  title     = {Bokehlicious: Photorealistic Bokeh Rendering with Controllable Apertures},
  booktitle = {ICCV},
  year      = {2025},
}

Core symbols most depended-on inside this repo

bokehlicious_config_builder
called by 5
method/config.py
append_av
called by 3
evaluate.py
calculate_aperture_embedding
called by 3
dataset/util.py
generate_maps
called by 3
dataset/util.py
build_input_dict
called by 3
dataset/util.py
crop_to_divisible
called by 3
dataset/util.py
bokehlicious_size_builder
called by 3
method/config.py
get_base_parser
called by 3
util/parser.py

Shape

Method 57
Class 25
Function 23

Languages

Python100%

Modules by API surface

method/nn_util.py49 symbols
method/blocks.py16 symbols
dataset/util.py11 symbols
method/model.py8 symbols
dataset/loader.py8 symbols
util/parser.py6 symbols
method/util.py2 symbols
method/config.py2 symbols
evaluate.py2 symbols
submit_ntire.py1 symbols

For agents

$ claude mcp add Bokehlicious \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact