Cómo una foto fija se convierte en un bucle de 6 segundos: notas de implementación y trampas
Esto va de implementación, no de explicar cómo funciona la difusión. Qué hace cada paso entre la foto que entra y el video que sale, y qué decisiones aparentemente razonables resultaron estar mal.
2026-08-20 作者 William Hsu
El recorrido completo
- Recepción y comprobación: verificar formato y tamaño y pasar una revisión de contenido. Los movimientos de persona además ejecutan un detector de caras. Si la foto es de un pájaro y se elige un movimiento de persona, el modelo inventa un humano de la nada.
- Codificación: la foto y la instrucción se codifican juntas. Es el paso más lento, casi 20 segundos.
- Muestreo: solo 4 pasos, gracias al LoRA turbo.
- Decodificación: devolver el resultado a imágenes, 73 fotogramas.
- Posproducción: 73 fotogramas a 24 fps son 3,04 segundos; reproducidos hacia delante y hacia atrás dan un bucle de 6,08 segundos sin cortes visibles.
¿Por qué 73 fotogramas? El número de fotogramas de este modelo tiene que ser 17n+5, y 73 es el único valor utilizable cerca de los tres segundos. No está en el artículo: te enteras cuando chocas con ello.
El bucle de ida y vuelta
El principio y el final de un clip generado de tres segundos casi nunca encajan, así que repetirlo deja un corte evidente. Reproducirlo hacia delante y luego hacia atrás hace que los dos extremos sean idénticos y el corte desaparece.
El precio es una sensación de vaivén, así que los movimientos deben evitar cualquier cosa con dirección clara. «Saludar con la mano» va bien: la mano vuelve de todos modos. «Girarse y mirar» hay que diseñarlo para que se detenga una vez girado, o al reproducirlo al revés la cabeza se aparta otra vez.
Tres ideas que las mediciones demostraron falsas
1. Decirle al modelo que no mueva la cámara hace que se acerque más
El instinto es añadir «camera does not move» al prompt. La medición dijo lo contrario: con esa línea el desplazamiento del fondo pasó de 6,6 a 39,2. Lo más probable es que la propia frase lleve la atención del modelo al concepto de cámara. El prompt final no menciona la cámara y solo describe lo que hace la persona.
2. Si el modelo dibuja el marco, el marco sale torcido
La idea era que el resultado llevara un marco antiguo incorporado. El modelo sabe dibujarlo, pero sale distinto cada vez y nunca simétrico. Superponerlo con CSS en la página hace que el marco esté siempre bien, que quien lo mire pueda cambiarlo o quitarlo cuando quiera, y que el archivo descargado quede limpio.
3. Las fotos de baja resolución no fallan necesariamente
Di por hecho que una foto muy pequeña no funcionaría, y hasta lo escribí en la guía. Después probé una imagen de 96 píxeles: se animó perfectamente, solo con el detalle blando. Tuve que desmentirme a mí mismo y reescribir la página.
Gestionar los fallos costó más que el modelo
Poner el modelo en marcha fue una parte pequeña del trabajo. El resto fue lidiar con lo que hace el mundo real:
- Un móvil congela la pestaña, el front-end cree que se cayó la conexión y se rinde, mientras el back-end ha llegado hasta el final. Ahora el estado del trabajo se escribe en el navegador y en el servidor, así que al volver se reconecta solo
- Alguien pulsa cancelar mientras el trabajo sigue en la GPU. La cancelación tiene que llegar al generador e interrumpirlo de verdad; si no, la tarjeta sigue girando y toda la cola espera para nada
- La salida también necesita una revisión de contenido. Lo que se bloquea al subir hay que bloquearlo al salir
Ninguno de estos problemas es del modelo, y todos hacen que el sitio parezca roto.