--- license: mit library_name: diffusers pipeline_tag: unconditional-image-generation tags: - diffusers - afm - adversarial-flow-models - class-conditional - imagenet inference: true widget: - output: url: AFM-XL-2-56layer-1NFE-guided/demo.png language: - en --- # BiliSakura/AFM-diffusers Self-contained [Adversarial Flow Models](https://arxiv.org/abs/2511.22475) checkpoints for Hugging Face diffusers. Converted from `ByteDance-Seed/Adversarial-Flow-Models` using `libs/AFM-diffusers/scripts/convert_afm_to_diffusers.py`. All models use LDM (Rombach et al., 2022) latent space with `sd-vae-ft-mse`. Guidance abbreviations: **CG** = classifier guidance (Dhariwal & Nichol, 2021), **DA** = data augmentation (Karras et al., 2020a). ## Demo `AFM-XL-2-2NFE-noguide` — class **207** (*golden retriever*), seed **0**, 2 NFE:

AFM-XL-2-2NFE-noguide demo (class 207, seed 0)

Each variant folder includes `demo.png` generated with the same prompt settings. ## Benchmark results (ImageNet 256×256) | Model | Params | Guidance | NFE | FID | sFID | IS | Prec. | Recall | Checkpoint | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | AFM-B/2 | 130M | None | 1 | 6.07 | 5.31 | 169.51 | 0.72 | 0.49 | `AFM-B-2-1NFE-noguide/` | | AFM-M/2 | 306M | None | 1 | 5.21 | 5.60 | 178.48 | 0.75 | 0.54 | `AFM-M-2-1NFE-noguide/` | | AFM-L/2 | 457M | None | 1 | 4.36 | 5.39 | 186.21 | 0.77 | 0.53 | `AFM-L-2-1NFE-noguide/` | | AFM-XL/2 | 673M | None | 1 | 3.98 | 5.40 | 201.85 | 0.78 | 0.52 | `AFM-XL-2-1NFE-noguide/` | | AFM-XL/2 | 673M | None | 2 | 2.36 | 4.35 | 235.77 | 0.81 | 0.52 | `AFM-XL-2-2NFE-noguide/` | | AFM-B/2 | 130M | CG+DA | 1 | 3.05 | 5.32 | 269.18 | 0.81 | 0.51 | `AFM-B-2-1NFE-guided/` | | AFM-M/2 | 306M | CG+DA | 1 | 2.82 | 5.20 | 279.12 | 0.81 | 0.50 | `AFM-M-2-1NFE-guided/` | | AFM-L/2 | 457M | CG+DA | 1 | 2.63 | 5.10 | 277.96 | 0.81 | 0.52 | `AFM-L-2-1NFE-guided/` | | AFM-XL/2 | 673M | CG+DA | 1 | 2.38 | 4.87 | 284.18 | 0.81 | 0.52 | `AFM-XL-2-1NFE-guided/` | | AFM-XL/2 | 675M | CG+DA | 2 | 2.11 | 4.33 | 273.84 | 0.82 | 0.55 | `AFM-XL-2-2NFE-guided/` | | AFM-XL/2 (2× deep, 56-layer) | 675M | CG+DA | 1 | 2.08 | 4.79 | 298.33 | 0.79 | 0.56 | `AFM-XL-2-56layer-1NFE-guided/` | | AFM-XL/2 | 675M | CG+DA | 4 | 2.03 | 4.59 | 259.66 | 0.78 | 0.59 | `AFM-XL-2-4NFE-guided/` | | AFM-XL/2 (4× deep, 112-layer) | 675M | CG+DA | 1 | 1.94 | 4.54 | 292.20 | 0.79 | 0.56 | `AFM-XL-2-112layer-1NFE-guided/` | ## Available checkpoints | Variant | Model | Steps | Guidance | | --- | --- | ---: | --- | | `AFM-B-2-1NFE-guided/` | AFM-B/2 | 1 | guided | | `AFM-B-2-1NFE-noguide/` | AFM-B/2 | 1 | noguide | | `AFM-M-2-1NFE-guided/` | AFM-M/2 | 1 | guided | | `AFM-M-2-1NFE-noguide/` | AFM-M/2 | 1 | noguide | | `AFM-L-2-1NFE-guided/` | AFM-L/2 | 1 | guided | | `AFM-L-2-1NFE-noguide/` | AFM-L/2 | 1 | noguide | | `AFM-XL-2-1NFE-guided/` | AFM-XL/2 | 1 | guided | | `AFM-XL-2-1NFE-noguide/` | AFM-XL/2 | 1 | noguide | | `AFM-XL-2-2NFE-guided/` | AFM-XL/2 | 2 | guided | | `AFM-XL-2-2NFE-noguide/` | AFM-XL/2 | 2 | noguide | | `AFM-XL-2-4NFE-guided/` | AFM-XL/2 | 4 | guided | | `AFM-XL-2-56layer-1NFE-guided/` | AFM-XL/2 | 1 | guided | | `AFM-XL-2-112layer-1NFE-guided/` | AFM-XL/2 | 1 | guided | ## Inference ```python from pathlib import Path import torch from diffusers import DiffusionPipeline model_dir = Path("./AFM-XL-2-1NFE-guided") 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, ).to("cuda") image = pipe(class_labels="golden retriever", num_inference_steps=1).images[0] ```