BestWishYsh/ConsisID-preview
BestWishYsh
Texto a video
ConsisID-preview es un modelo de texto a video enfocado en generar videos que preservan la identidad de una persona a partir de una imagen facial de referencia y un prompt descriptivo. Está basado en CogVideoX-5B y aplica descomposición de frecuencias para mantener rasgos faciales consistentes durante la generación. Fue presentado como trabajo destacado en CVPR 2025 bajo el título "Identity-Preserving Text-to-Video Generation by Frequency Decomposition".
Como usar
Instalación básica con Diffusers:
pip install -U diffusers transformers accelerate
Ejemplo simple:
import torch
from diffusers import DiffusionPipeline
# switch to "mps" for apple devices
pipe = DiffusionPipeline.from_pretrained(
"BestWishYsh/ConsisID-preview",
dtype=torch.bfloat16,
device_map="cuda"
)
prompt = "Astronaut in a jungle, cold color palette, muted colors, detailed, 8k"
image = pipe(prompt).images[0]
Uso recomendado con ConsisIDPipeline:
pip install --upgrade consisid_eva_clip pyfacer insightface facexlib transformers accelerate imageio-ffmpeg
pip install git+https://github.com/huggingface/diffusers.git
import torch
from diffusers import ConsisIDPipeline
from diffusers.pipelines.consisid.consisid_utils import prepare_face_models, process_face_embeddings_infer
from diffusers.utils import export_to_video
from huggingface_hub import snapshot_download
snapshot_download(repo_id="BestWishYsh/ConsisID-preview", local_dir="BestWishYsh/ConsisID-preview")
face_helper_1, face_helper_2, face_clip_model, face_main_model, eva_transform_mean, eva_transform_std = (
prepare_face_models("BestWishYsh/ConsisID-preview", device="cuda", dtype=torch.bfloat16)
)
pipe = ConsisIDPipeline.from_pretrained("BestWishYsh/ConsisID-preview", torch_dtype=torch.bfloat16)
pipe.to("cuda")
prompt = "The video captures a boy walking along a city street, filmed in black and white on a classic 35mm camera."
image = "https://github.com/PKU-YuanGroup/ConsisID/blob/main/asserts/example_images/2.png?raw=true"
id_cond, id_vit_hidden, image, face_kps = process_face_embeddings_infer(
face_helper_1,
face_clip_model,
face_helper_2,
eva_transform_mean,
eva_transform_std,
face_main_model,
"cuda",
torch.bfloat16,
image,
is_align_face=True,
)
video = pipe(
image=image,
prompt=prompt,
num_inference_steps=50,
guidance_scale=6.0,
use_dynamic_cfg=False,
id_vit_hidden=id_vit_hidden,
id_cond=id_cond,
kps_cond=face_kps,
generator=torch.Generator("cuda").manual_seed(42),
)
export_to_video(video.frames[0], "output.mp4", fps=8)
Optimización de memoria GPU:
pipe.enable_model_cpu_offload()
pipe.enable_sequential_cpu_offload()
pipe.vae.enable_slicing()
pipe.vae.enable_tiling()
Estas optimizaciones reducen el consumo de memoria, pero pueden aumentar el tiempo de inferencia y afectar la calidad.
Funcionalidades
- Generación de texto a video con preservación de identidad facial.
- Integración con Diffusers mediante `ConsisIDPipeline`.
- Acepta una imagen de referencia para extraer embeddings faciales y puntos clave.
- Optimizado para prompts largos, cinematográficos y bien descritos.
- Soporta salida de video, por ejemplo MP4 a 8 FPS.
- Incluye utilidades para reducir memoria GPU mediante offload a CPU, slicing y tiling del VAE.
- Modelo distribuido con pesos Safetensors y licencia Apache 2.0.
- Base model: `zai-org/CogVideoX-5b`.
Casos de uso
- Crear videos donde una persona mantenga la misma identidad facial a lo largo de la secuencia.
- Generar escenas cinematográficas a partir de una imagen de referencia y un prompt detallado.
- Prototipar contenido de texto a video con control de identidad para investigación en visión generativa.
- Evaluar técnicas de preservación de identidad en modelos derivados de CogVideoX.
- Crear clips cortos de hasta unos segundos con estilo, ambiente y acciones definidos por prompt.