Views
No views yet
Elad Richardson, Kfir Goldberg, Yuval Alaluf, Daniel Cohen-Or
Tel Aviv University, Bria AIAdvanced generative models excel at synthesizing images but often rely on text-based conditioning. Visual designers, however, often work beyond language, directly drawing inspiration from existing visual elements. In many cases, these elements represent only fragments of a potential concept-such as an uniquely structured wing, or a specific hairstyle-serving as inspiration for the artist to explore how they can come together creatively into a coherent whole. Recognizing this need, we introduce a generative framework that seamlessly integrates a partial set of user-provided visual components into a coherent composition while simultaneously sampling the missing parts needed to generate a plausible and complete concept. Our approach builds on a strong and underexplored representation space, extracted from IP-Adapter+, on which we train IP-Prior, a lightweight flow-matching model that synthesizes coherent compositions based on domain-specific priors, enabling diverse and context-aware generations. Additionally, we present a LoRA-based fine-tuning strategy that significantly improves prompt adherence in IP-Adapter+ for a given task, addressing its common trade-off between reconstruction quality and prompt adherence.

1git clone https://github.com/eladrich/PiT
2cd PiTuv:1curl -LsSf https://astral.sh/uv/install.sh | sh
2source $HOME/.local/bin/envuv sync.venv and set the Python env:1source .venv/bin/activate
2export PYTHONPATH=${PYTHONPATH}:${PWD}image_name.jpg for hte base image and image_name_i.jpg for the parts.python -m scripts.generate_characterspython -m scripts.generate_productstraining/coach.py file and the example belowbash python -m scripts.train --config_path=configs/train/train_characters.yaml scripts.infer.py with the corresponding configs under configs/inferpython -m scripts.infer --config_path=configs/infer/infer_characters.yaml1ip_lora_inference/download_ip_adapter.sh
2ip_lora_inference/download_loras.sh1python ip_lora_inference/inference_ip_lora.py --lora_type "character_sheet" --lora_path "weights/character_sheet/pytorch_lora_weights.safetensors" --prompt "a character sheet displaying a creature, from several angles with 1 large front view in the middle, clean white background. In the background we can see half-completed, partially colored, sketches of different parts of the object" --output_dir "ip_lora_inference/character_sheet/" --ref_images_paths "assets/character_sheet_default_ref.jpg"
2--ip_adapter_path "weights/ip_adapter/sdxl_models/ip-adapter-plus_sdxl_vit-h.bin"--base_dir/
----targets/
------img1.jpg
------img1.txt
------img2.jpg
------img2.txt
------img3.jpg
------img3.txt
.
.
.
----refs/
------img1_ref.jpg
------img2_ref.jpg
------img3_ref.jpg
.
.
.imgX.jpg is the target image for the input reference image imgX_ref.jpg with the prompt imgX.txt1 python ./ip_lora_train/train_ip_lora.py \
2 --rank 64 \
3 --resolution 1024 \
4 --validation_epochs 1 \
5 --num_train_epochs 100 \
6 --checkpointing_steps 50 \
7 --train_batch_size 2 \
8 --learning_rate 1e-4 \
9 --dataloader_num_workers 1 \
10 --gradient_accumulation_steps 8 \
11 --dataset_base_dir <base_dir> \
12 --prompt_mode character_sheet \
13 --output_dir ./output/train_ip_lora/character_sheet
14 1 python ./ip_lora_train/train_ip_lora.py \
2 --rank 64 \
3 --resolution 1024 \
4 --validation_epochs 1 \
5 --num_train_epochs 100 \
6 --checkpointing_steps 50 \
7 --train_batch_size 2 \
8 --learning_rate 1e-4 \
9 --dataloader_num_workers 1 \
10 --gradient_accumulation_steps 8 \
11 --dataset_base_dir <base_dir> \
12 --prompt_mode creature_in_scene \
13 --output_dir ./output/train_ip_lora/creature_in_scene1ip_plus_space_exploration/download_directions.sh
2ip_plus_space_exploration/download_ip_adapter.shclass1_dir and class2_dir containing images of the source and target classes respectivelyfind_direction script:python ip_plus_space_exploration/find_direction.py --class1_dir <path_to_source_class> --class2_dir <path_to_target_class> --output_dir ./ip_directions --ip_model_type "plus"python ip_plus_space_exploration/edit_by_direction.py --ip_model_type "plus" --image_path <source_image> --direction_path <path_to_chosen_direction> --direction_type "ip" --output_dir "./edit_by_direction/"@misc{richardson2025piece,
title={Piece it Together: Part-Based Concepting with IP-Priors},
author={Richardson, Elad and Goldberg, Kfir and Alaluf, Yuval and Cohen-Or, Daniel},
year={2025},
eprint={2503.10365},
archivePrefix={arXiv},
primaryClass={cs.CV},
url={https://arxiv.org/abs/2503.10365},
}