mice / README.md
carminezacc's picture
Initial release
e8a1827 verified
|
Raw
History Blame Contribute Delete
4.21 kB
---
license: apache-2.0
tags:
- image-editing
- diffusion
- flux
- multi-instance
---
# MICE: Multi-Instance Controlled Editing
Code for spatially-controlled multi-instance image editing with FLUX.2-klein (4B).
MICE constrains cross-instance attention leakage during inference so that each edit stays within its intended spatial region.
## Requirements
```bash
pip install torch diffusers transformers pillow tqdm loguru numpy
```
The model weights are downloaded automatically from HuggingFace on first run:
```
black-forest-labs/FLUX.2-klein-4B
```
## Quick start — single image
```bash
python infer.py \
--image input.jpg \
--edits "Replace the cat with a dog" "Replace the lamp with a vase" \
--masks mask_cat.png mask_lamp.png \
--output result.png
```
Provide one `--edits` string and one `--masks` path per instance you want to edit.
Masks are binary images (white = instance region, black = background).
If you do not have masks, use normalized bounding boxes instead:
```bash
python infer.py \
--image input.jpg \
--edits "Replace the cat with a dog" \
--bboxes "0.1 0.2 0.5 0.8" \
--output result.png
```
### All options
| Flag | Default | Description |
|---|---|---|
| `--image` | *(required)* | Path to the input image |
| `--edits` | *(required)* | Edit instruction per instance |
| `--masks` | — | Binary mask image per instance (mutually exclusive with `--bboxes`) |
| `--bboxes` | — | Normalized `x1 y1 x2 y2` bbox per instance (mutually exclusive with `--masks`) |
| `--output` | `result.png` | Output path |
| `--model` | `black-forest-labs/FLUX.2-klein-4B` | HuggingFace model ID or local path |
| `--num_inference_steps` | `4` | Number of denoising steps |
| `--kernel_size` | `11` | Spatial kernel size for attention falloff |
| `--temperature` | `3.0` | Steepness of spatial falloff |
| `--double_layers` | `0,5` | Double-stream block range for attention binding |
| `--single_layers` | `0,20` | Single-stream block range for attention binding |
| `--strict` | flag | Stricter cross-instance isolation |
## Benchmark inference
Scripts for running inference over the full MICE-Bench and LoMOE-Bench datasets are also included.
### MICE-Bench (ground-truth masks)
```bash
python infer_flux2_mice.py \
--exp_name my_experiment \
--dataset_root ../mice_bench \
--num_inference_steps 4 \
--kernel_size 11 \
--temperature 3.0 \
--hard_image_attribute_binding_list_double 0,5 \
--hard_image_attribute_binding_list_single 0,20 \
--use_masks
```
Results are saved to `results_micebench/mice_flux2_klein_<exp_name>/`.
### MICE-Bench (SAM3 masks)
```bash
python infer_flux2_mice_sam3.py \
--exp_name my_experiment \
--dataset_root /path/to/mice_bench_sam3 \
--num_inference_steps 4 \
--kernel_size 11 \
--temperature 3.0 \
--use_masks
```
Results are saved to `results_micebench_sam3/mice_flux2_sam3_<exp_name>/`.
### LoMOE-Bench (ground-truth masks)
LoMOE-Bench is expected at `benchmark/data/LoMOE-Bench/` relative to the repository root (path is hardcoded in `lomoe_dataset.py`).
```bash
python infer_flux2_lomoe.py \
--exp_name my_experiment \
--num_inference_steps 4 \
--kernel_size 11 \
--temperature 3.0 \
--hard_image_attribute_binding_list_double 0,5 \
--hard_image_attribute_binding_list_single 0,20 \
--use_masks
```
Results are saved to `results/lomoe_flux2_klein_<exp_name>/`.
### LoMOE-Bench (SAM3 masks)
```bash
python infer_flux2_lomoe_sam3.py \
--exp_name my_experiment \
--dataset_root /path/to/lomoe_bench_sam3 \
--num_inference_steps 4 \
--kernel_size 11 \
--temperature 3.0 \
--use_masks
```
Results are saved to `results_sam3/lomoe_flux2_sam3_<exp_name>/`.
## Dataset structure
**MICE-Bench** (`--dataset_root`):
```
mice_bench/
LoMOE.json
images/
masks/
```
**SAM3 datasets** (`--dataset_root`):
```
<dataset_root>/
LoMOE_mobius.json # mask paths point to SAM3-generated masks
images/
masks/
```
**LoMOE-Bench** (hardcoded path `benchmark/data/LoMOE-Bench/`):
```
benchmark/data/LoMOE-Bench/
LoMOE.json
LoMOE_multi_turn_faithful.json
LoMOE_multi_turn_enhanced.json
utils/
mask_orig_prompts.txt
text_prompts.txt
images/
masks/
```