Como uma foto parada vira um loop de 6 segundos: notas de implementação e armadilhas
Isto é sobre implementação, não uma explicação de como difusão funciona. O que cada etapa faz entre a foto entrar e o vídeo sair, e quais escolhas aparentemente sensatas se revelaram erradas.
2026-08-20 作者 William Hsu
O caminho completo
- Recepção e checagem: conferir formato e tamanho e passar uma verificação de conteúdo. Movimentos de pessoa também rodam um detector de rostos. Se a foto é de um pássaro e alguém escolhe um movimento de pessoa, o modelo cria um humano do nada.
- Codificação: a foto e a instrução são codificadas juntas. É a etapa mais lenta, quase 20 segundos.
- Amostragem: só 4 passos, graças ao LoRA turbo.
- Decodificação: transformar o resultado de volta em imagens, 73 quadros.
- Pós: 73 quadros a 24 fps dão 3,04 segundos; tocados para frente e para trás viram um loop contínuo de 6,08 segundos.
Por que 73 quadros? A contagem de quadros deste modelo precisa ser 17n+5, e 73 é o único valor utilizável perto de três segundos. Não está no artigo: você descobre batendo nisso.
O loop de vaivém
O começo e o fim de um clipe gerado de três segundos quase nunca combinam, então repetir direto mostra um corte óbvio. Tocar para frente e depois para trás deixa as duas pontas idênticas e a emenda some.
O preço é uma sensação de ida e volta, então os movimentos precisam evitar qualquer coisa com direção clara. “Acenar” funciona: a mão volta de qualquer jeito. “Virar e olhar” tem de ser desenhado para parar depois de virar, senão, ao tocar de trás para frente, a cabeça se vira de volta.
Três ideias que a medição provou erradas
1. Mandar o modelo não mexer a câmera faz ele aproximar mais
O instinto é acrescentar “camera does not move” ao prompt. A medição disse o contrário: com essa linha o deslocamento do fundo foi de 6,6 para 39,2. O mais provável é que a própria frase leve a atenção do modelo para a ideia de câmera. O prompt final não menciona câmera e descreve só o que a pessoa faz.
2. Se o modelo desenha a moldura, ela sai torta
A ideia era o resultado já vir com uma moldura antiga. O modelo consegue desenhar, mas sai diferente a cada vez e nunca simétrica. Sobrepor com CSS na página faz a moldura ficar sempre certa, deixa quem assiste trocar ou tirar quando quiser, e mantém o arquivo baixado limpo.
3. Fotos de baixa resolução não quebram necessariamente
Eu presumi que uma foto muito pequena não funcionaria, e cheguei a escrever isso na página do guia. Depois testei uma imagem de 96 pixels: animou muito bem, só com o detalhe borrado. Desmenti a mim mesmo e reescrevi a página.
Lidar com as falhas deu mais trabalho que o modelo
Colocar o modelo para rodar foi uma parte pequena. O resto foi lidar com o que o mundo real faz:
- Um celular congela a aba, o front-end acha que a conexão caiu e desiste — enquanto o back-end rodou até o fim. Agora o estado do trabalho é gravado no navegador e no servidor, então voltar reconecta sozinho
- Alguém aperta cancelar com o trabalho ainda na GPU. O cancelamento precisa chegar ao gerador e interromper de verdade; senão a placa continua girando e toda a fila espera à toa
- A saída também precisa de verificação de conteúdo. O que é bloqueado no envio tem de ser bloqueado na saída
Nenhum desses é problema do modelo, e cada um deles faz o site parecer quebrado.