Labo vidéo

AnimateDiff en local : diagnostic mémoire et banc de 8 plans

Rôle
Diagnostic mémoire, refonte de la chaîne, banc et métriques
Outils
  • Diffusers 0.39
  • AnimateDiff
  • Lightning (4 pas)
  • SD 1.5
  • PyTorch (MPS)
  • Real-ESRGAN
  • OpenCV
  • CLIP
Statut
Fonctionnel
Deux plans du banc du 20/10/2026 : brume en forêt et rue de nuit. 16 images 512², 4 pas, agrandies ×2 et interpolées à 24 img/s.
par plan de 16 images 512² (333 s le 19/10)
≈ 40 s
images identiques bit à bit entre deux exécutions
16/16
plus rapide avec l’attention découpée par budget mémoire
×4,6
plans du banc générés sans échec
8/8
Le problème
Produire de courts plans animés en local sur un Mac de 16 Go, en réutilisant SD 1.5, sans que la mémoire ou le hasard ne décident du résultat.
Pour qui
Projet de recherche personnel : la brique vidéo du portfolio, sans aucune dépense.
Le résultat
Un plan de 16 images en 40 s environ (333 s la veille), reproductible bit à bit, et un banc de 8 plans mesuré : vitesse, cohérence temporelle, CLIP.

Contexte

Réutiliser SD 1.5 pour produire de courts plans animés en local, sans service payant, avec un journal pour chaque exécution.

La refonte du 20/10 ajoute des garde-fous testés, puis mesure : vitesse, mémoire, cohérence temporelle, adhérence au texte, sur huit plans de cinéma.

Ce que j’ai construit

  • Attention découpée selon un budget mémoire (calcul exact, testé contre l’attention pleine) : 38 s contre 175 s avec l’ancien découpage, à réglages égaux.
  • Bruit initial tiré sur CPU et empreinte des latents après chaque pas : deux exécutions de même graine donnent 16 images identiques bit à bit.
  • Garde-fou mémoire (empreinte, swap, mémoire libre) avec arrêt propre, et un journal JSON écrit pour chaque exécution.
  • Post-production : Real-ESRGAN ×2 en tuiles avec marge, interpolation à 24 img/s, MP4 H.264 ; métriques de cohérence temporelle et score CLIP calculés sur CPU.

Architecture 6 briques

  1. 01 · EntréePlanPrompt, préréglage, graine ; configuration typée
  2. 02 · ModèleSD 1.5 + AnimateDiffLightning 4 pas par défaut, guoyww 16 pas en option
  3. 03 · OutilAttention par budgetCalcul exact, découpé selon la mémoire
  4. 04 · OutilGarde-fou mémoireEmpreinte, swap, mémoire libre ; arrêt propre
  5. 05 · OutilPostReal-ESRGAN ×2, 24 img/s, MP4 et GIF
  6. 06 · SortieMesuresSSIM, recalage, scintillement, netteté, CLIP

Fabrication 5 étapes

  1. DiagnosticMémoire et attention analysées sur le premier script (333 s par plan).
  2. RefonteChaque cas mémoire devient un garde-fou testé (114 tests).
  3. RéférenceReproductible bit à bit, 38 s.
  4. Banc8 plans Lightning, puis 2 plans guoyww.
  5. Post×2, 24 img/s, métriques.

Décisions le choix, la raison, l’alternative écartée

  1. D1
    Découper l’attention selon un budget mémoire plutôt qu’en tranches fixes.

    Même résultat exact, 38 s contre 175 s à réglages égaux : l’ancien découpage était la vraie cause de la lenteur.

    ÉcartéSlicedAttnProcessor, utilisé le 19/10.

  2. D2
    Tirer le bruit sur CPU et suivre l’empreinte des latents à chaque pas.

    Deux exécutions de même graine sont désormais identiques bit à bit ; une divergence se localise au pas près.

  3. D3
    Garder Lightning 4 pas par défaut après comparaison avec guoyww 16 pas.

    Lightning : 40 s au lieu de 313 s et une meilleure cohérence d’une image à l’autre ; guoyww suit un peu mieux le texte.

  4. D4
    Écrire un journal JSON pour chaque exécution, y compris quand un garde-fou arrête le calcul.

    Chaque exécution laisse une trace exploitable pour le diagnostic.

Résultats

Banc Lightning, 8 plans (4 pas, CFG 1, graine 2026, 16 images 512²)

PlanGénérationSSIM entre images ↑Mouvement (px/img)CLIP ↑
Voiture sur asphalte39,7 s0,778,629,7
Rue de nuit39,6 s0,733,929,9
Portrait41,9 s0,633,728,6
Forêt dans la brume41,2 s0,631,431,3
Montre (produit)40,7 s0,5410,729,7
Vapeur de café42,1 s0,4918,528,2
Basalte39,6 s0,4316,728,4
Vagues39,1 s0,3339,931,2

La SSIM entre images voisines se lit avec le mouvement : un plan figé est parfaitement « cohérent ». Le premier clip, avant refonte, était à 0,15.

Lightning 4 pas contre guoyww 16 pas (CFG 7,5), mêmes plans

PlanModuleGénérationSSIM ↑CLIP ↑
BasalteLightning39,6 s0,4328,4
Basalteguoyww313,2 s0,2131,0
Voiture sur asphalteLightning39,7 s0,7729,7
Voiture sur asphalteguoyww313,1 s0,3230,1

Lightning est le réglage par défaut : huit fois plus rapide et plus cohérent d’une image à l’autre ; guoyww suit un peu mieux le texte.

Livrables 3

  • Paquet labo : configuration, génération, lots reprenables, post-production, métriques, rapports.
  • Banc de 8 plans Lightning et comparaison guoyww, avec tableaux de résultats générés depuis les fichiers.
  • Clips 24 img/s, planches et journaux de chaque essai ; 114 tests sur CPU.

Environnement

Matériel et conditions de mesure

  • Généré sur Mac 16 Go (PyTorch MPS, Diffusers 0.39) : plans de 16 images en 512², agrandis ×2 et interpolés à 24 img/s.
  • SD 1.5 et AnimateDiff-Lightning sous licence CreativeML OpenRAIL-M.

Reproduire commandes du README

Code privé : accès en lecture sous accord de confidentialité, ou démo en direct de 30 minutes. Demander l’accès →

python -m labo doctor
python -m labo batch plans/bench_lightning.json
python -m labo post --root sorties/bench_lightning --upscale 2 --interp 24
python -m labo metrics --root sorties/bench_lightning
python -m labo report sorties/bench_lightning
python -m labo compare sorties/reference/ref-a sorties/reference/ref-b
  • Python du venv ComfyUI (diffusers 0.39) ; ffmpeg requis pour les clips.
  • SD 1.5 et AnimateDiff-Lightning sous licence CreativeML OpenRAIL-M.

Galerie 6

Brume entre les pins, lent travelling avant. 41,2 s de génération.
Rue mouillée de nuit, reflets des enseignes. 39,6 s de génération.
Les 16 images du plan forêt.
Les 16 images du plan de nuit.
Plan voiture : la plus forte cohérence du banc.
Point de départ : le clip du 19/10, avant la refonte.

Ce que ce projet change pour vous

Le même savoir-faire, sur votre sujet.

01

La faisabilité avant le budget

Je teste une technique sur votre matériel et consigne le résultat, y compris « infaisable en l’état », avant tout engagement.

02

Trouver la vraie cause

Ici, un découpage d’attention mal choisi coûtait un facteur 4,6 : je mesure avant d’acheter du matériel.

03

Des résultats reproductibles

Même graine, même image : une revue créative peut demander une variante précise et l’obtenir.