--- library_name: diffusers pipeline_tag: unconditional-image-generation tags: - diffusers - self-flow - image-generation - class-conditional - imagenet - flow-matching license: apache-2.0 inference: true widget: - output: url: Self-Flow-XL-2-256/demo.png language: - en --- # Self-Flow-diffusers Diffusers-ready checkpoints for **Self-Flow** (Self-Supervised Flow Matching), converted from the [official Self-Flow release](https://github.com/black-forest-labs/Self-Flow) for local/offline use. This root folder is a model collection that contains: - `Self-Flow-XL-2-256` Each subfolder is a self-contained Diffusers model repo with: - `pipeline.py` (`SelfFlowPipeline`) - `transformer/transformer_selfflow.py` and weights - `scheduler/scheduling_flow_match_selfflow.py` (`SelfFlowFlowMatchScheduler`, SDE flow matching) - `scheduler/scheduler_config.json` - `vae/` (`stabilityai/sd-vae-ft-ema`) Each variant embeds English `id2label` in `model_index.json`, so class labels can be passed as ImageNet ids or English synonym strings. ## Demo ![Self-Flow-XL-2-256 demo](Self-Flow-XL-2-256/demo.png) Class-conditional sample (ImageNet class **207**, golden retriever), `Self-Flow-XL/2` at 256×256, 250 steps, CFG 3.5, seed 42. ## Model Paths Use paths relative to this root README: | Model | Resolution | Local path | | --- | ---: | --- | | Self-Flow-XL/2 | 256×256 | `./Self-Flow-XL-2-256` | ## Recommended inference | Setting | Value | | --- | --- | | Resolution | 256×256 | | Sampler | Self-Flow SDE flow matching | | Steps | 250 | | CFG scale | 3.5 | | Guidance interval | `(0.0, 0.7)` when CFG > 1 | | Dtype | `bfloat16` (recommended on Ampere+) | | VAE | `stabilityai/sd-vae-ft-ema` | ## Inference Demo (Diffusers) ```python from pathlib import Path import torch from diffusers import DiffusionPipeline model_dir = Path("./Self-Flow-XL-2-256").resolve() device = "cuda" if torch.cuda.is_available() else "cpu" pipe = DiffusionPipeline.from_pretrained( str(model_dir), local_files_only=True, custom_pipeline=str(model_dir / "pipeline.py"), trust_remote_code=True, torch_dtype=torch.bfloat16, ) pipe.to(device) generator = torch.Generator(device=device).manual_seed(42) print(pipe.id2label[207]) print(pipe.get_label_ids("golden retriever")) # [207] image = pipe( class_labels="golden retriever", num_inference_steps=250, guidance_scale=3.5, generator=generator, ).images[0] image.save("self_flow_xl_256_demo.png") ```