InstantX/FLUX.1-dev-IP-Adapter
Adaptador IP para FLUX.1-dev creado por el equipo InstantX. Permite usar una imagen de referencia junto con un prompt de texto para generar imágenes, tratando la imagen como una condición adicional similar al texto. Está basado en FLUX.1-dev y añade capas nuevas a 38 bloques simples y 19 bloques dobles; usa google/siglip-so400m-patch14-384 como codificador visual y un MLPProjModel de dos capas lineales para proyectar 128 tokens de imagen. El modelo publicado fue entrenado con un conjunto de datos abierto de 10 millones de ejemplos, batch size 128 y 80.000 pasos de entrenamiento.
Como usar
El código aún no está integrado en diffusers; la tarjeta del modelo indica usar los archivos locales del repositorio por ahora.
import os
from PIL import Image
import torch
import torch.nn as nn
from pipeline_flux_ipa import FluxPipeline
from transformer_flux import FluxTransformer2DModel
from attention_processor import IPAFluxAttnProcessor2_0
from transformers import AutoProcessor, SiglipVisionModel
from infer_flux_ipa_siglip import resize_img, MLPProjModel, IPAdapter
image_encoder_path = "google/siglip-so400m-patch14-384"
ipadapter_path = "./ip-adapter.bin"
transformer = FluxTransformer2DModel.from_pretrained(
"black-forest-labs/FLUX.1-dev",
subfolder="transformer",
torch_dtype=torch.bfloat16
)
pipe = FluxPipeline.from_pretrained(
"black-forest-labs/FLUX.1-dev",
transformer=transformer,
torch_dtype=torch.bfloat16
)
ip_model = IPAdapter(pipe, image_encoder_path, ipadapter_path, device="cuda", num_tokens=128)
image_dir = "./assets/images/2.jpg"
image_name = image_dir.split("/")[-1]
image = Image.open(image_dir).convert("RGB")
image = resize_img(image)
prompt = "a young girl"
images = ip_model.generate(
pil_image=image,
prompt=prompt,
scale=0.7,
width=960,
height=1280,
seed=42
)
images[0].save(f"results/{image_name}")
También puede usarse en ComfyUI consultando ComfyUI-IPAdapter-Flux, o probarse en línea a través de Shakker AI según la tarjeta del modelo.
Funcionalidades
- Generación de imágenes condicionada por una imagen de referencia y texto.
- Adaptador IP regular para FLUX.1-dev con capas añadidas en bloques simples y dobles del transformer.
- Codificación visual mediante SigLIP SO400M patch14 384 por su rendimiento superior.
- Proyección de características de imagen con MLPProjModel de dos capas lineales.
- Usa 128 tokens de imagen para inyectar la referencia visual.
- Compatible con flujos locales y con ComfyUI mediante ComfyUI-IPAdapter-Flux.
- Puede combinarse con LoRA de personajes, como Shakker-Labs/FLUX.1-dev-LoRA-collections.
Casos de uso
- Generar imágenes con FLUX.1-dev guiadas por una imagen de referencia.
- Crear variaciones visuales donde la referencia aporta contenido o estilo general al prompt.
- Experimentar con IP-Adapter en arquitecturas DiT basadas en FLUX.1-dev.
- Combinar referencias visuales con LoRA de personajes para explorar resultados creativos.
- Prototipar flujos locales de generación de imagen antes de que el soporte esté integrado en diffusers.