Downloads Β· 30 days
35
7% of all-time downloads
Kr1sJ/iMontage
iMontage is a image-to-image model from Kr1sJ. Use it when you need one image transformed into another. It is set up for diffusers. The card lists the license as apache-2.0.
[](https://huggingface.co/papers/2511.20635) [](https://kr1sjfu.github.io/iMontage-web/) [](https://github.com/Kr1sJFU/iMontage)
Downloads Β· 30 days
35
7% of all-time downloads
All-time downloads
530
Public
Parameters
12.8B
25.7 GB on disk
Likes
19
Public
Click a slice to open those files.
.safetensors25.6 GB Β· 100%
From the Hugging Face model README
iMontage is a unified framework designed to repurpose a powerful video model into an all-in-one image generator. The framework consumes and produces variable-length image sets, unifying a wide array of image generation and editing tasks. This approach allows the model to acquire broad image manipulation capabilities without corrupting its invaluable original motion priors. iMontage excels across several mainstream many-in-many-out tasks, maintaining strong cross-image contextual consistency and generating scenes with extraordinary dynamics.
For detailed installation instructions and more complex inference examples, please refer to the GitHub repository.
Here is a simple Python code snippet demonstrating image generation with iMontage:
from inference_solver import FlexARInferenceSolver
from PIL import Image
# ******************** Image Generation ********************
inference_solver = FlexARInferenceSolver(
model_path="Kr1sJ/iMontage", # Use this Hugging Face model
precision="bf16",
target_size=768, # Ensure target_size is consistent with the checkpoint
)
q1 = f"Generate an image of 768x768 according to the following prompt:\
" \
f"Image of a dog playing water, and a waterfall is in the background."
# generated: tuple of (generated response, list of generated images)
generated = inference_solver.generate(
images=[],
qas=[[q1, None]],
max_gen_len=8192,
temperature=1.0,
logits_processor=inference_solver.create_logits_processor(cfg=4.0, image_top_k=2000),
)
a1, new_image = generated[0], generated[1][0]
# Display or save the image
new_image.show()
# new_image.save("generated_dog.png")
The model supports various tasks as illustrated below:
| Task Type | Input | Prompt | Output |
|---|---|---|---|
| image_editing | <img src="https://huggingface.co/Kr1sJ/iMontage/resolve/main/images/llava.png" width="120"> | Change the material of the lava to silver. | <img src="https://huggingface.co/Kr1sJ/iMontage/resolve/main/results/llava_0.png" width="120"> |
| cref | <img src="https://huggingface.co/Kr1sJ/iMontage/resolve/main/images/Confucius.png" width="80"> <img src="https://huggingface.co/Kr1sJ/iMontage/resolve/main/images/Moses.png" width="80"> <img src="https://huggingface.co/Kr1sJ/iMontage/resolve/main/images/Solon.png" width="80"> | Confucius from the first image, Moses from the second⦠| <img src="https://huggingface.co/Kr1sJ/iMontage/resolve/main/results/Confucius_0.png" width="120"> |
| conditioned_cref | <img src="https://huggingface.co/Kr1sJ/iMontage/resolve/main/images/depth.png" width="80"> <img src="https://huggingface.co/Kr1sJ/iMontage/resolve/main/images/girl.png" width="80"> | depth | <img src="https://huggingface.co/Kr1sJ/iMontage/resolve/main/results/depth_0.png" width="120"> |
| sref | <img src="https://huggingface.co/Kr1sJ/iMontage/resolve/main/images/woman.png" width="80"> <img src="https://huggingface.co/Kr1sJ/iMontage/resolve/main/images/joker.png" width="80"> | (empty) | <img src="https://huggingface.co/Kr1sJ/iMontage/resolve/main/results/woman_0.png" width="120"> |
| multiview | <img src="https://huggingface.co/Kr1sJ/iMontage/resolve/main/images/city.png" width="120"> | 1. Shift left; 2. Look up; 3. Zoom out. | <img src="https://huggingface.co/Kr1sJ/iMontage/resolve/main/results/city_0.png" width="80"> <img src="https://huggingface.co/Kr1sJ/iMontage/resolve/main/results/city_1.png" width="80"> <img src="https://huggingface.co/Kr1sJ/iMontage/resolve/main/results/city_2.png" width="80"> |
| storyboard | <img src="https://huggingface.co/Kr1sJ/iMontage/resolve/main/images/Hepburn.png" width="80"> <img src="https://huggingface.co/Kr1sJ/iMontage/resolve/main/images/yellow_bag.png" width="80"> | Vintage film: 1. Hepburn carrying the yellow bag⦠| <img src="https://huggingface.co/Kr1sJ/iMontage/resolve/main/results/Hepburn_0.png" width="80"> <img src="https://huggingface.co/Kr1sJ/iMontage/resolve/main/results/Hepburn_1.png" width="80"> <img src="https://huggingface.co/Kr1sJ/iMontage/resolve/main/results/Hepburn_2.png" width="80"> |
We sincerely thank the open-source community for providing strong foundations that enabled this work.
In particular, we acknowledge the following projects for their models, datasets, and valuable insights:
These contributions have greatly influenced our research and helped shape the design of iMontage.
If you find iMontage useful for your research or applications, please consider starring β the repo and citing our paper:
@article{fu2025iMontage,
title={iMontage: Unified, Versatile, Highly Dynamic Many-to-many Image Generation},
author={Zhoujie Fu and Xianfang Zeng and Jinghong Lan and Xinyao Liao and Cheng Chen and Junyi Chen and Jiacheng Wei and Wei Cheng and Shiyu Liu and Yunuo Chen and Gang Yu and Guosheng Lin},
journal={arXiv preprint arXiv:2511.20635},
year={2025},
}