{
 "titre": "Relevé des chiffres de la rubrique « Images et vidéos : modèles ouverts testés »",
 "note": "Un fait par ligne, avec sa source. Les chemins de fichiers sont relatifs au dossier de travail du projet (non publié). nature = mesure_ici (mesuré dans ce projet), jugement (note de relecture visuelle) ou ailleurs (lu dans une source extérieure, lien donné). « journal de workflow wf_… » renvoie au journal de l'agent qui a fait ou relu la mesure. Tests faits du 24 au 28/09/2026 sur Kaggle (2 × T4, quota gratuit) et dans Blender en local. Seuls les médias publiés sur le site sont listés.",
 "mis_a_jour": "2026-09-28",
 "familles": [
  {
   "id": "qwen-image",
   "titre": "Qwen-Image 2.1 : déploiement, vitesse, génération, édition, styles, découpe en calques",
   "faits": [
    {
     "fait": "Déploiement : poids officiels Qwen/Qwen-Image-2.1 téléchargés depuis Hugging Face, non quantifiés",
     "valeur": "33,1 Go en ≈ 2,6 min (encodeur 17,53 Go en 113–121 s, reste 15,60 Go en 150–158 s)",
     "source": "qwen-image-kaggle/sorties/essai-2/mesures.json ; sorties/essai-3/mesures.json",
     "nature": "mesure_ici"
    },
    {
     "fait": "Déploiement : installation pip (diffusers depuis git au commit 4295ee3, transformers 5.17)",
     "valeur": "178–194 s sur les 4 sessions (193,9 / 184,3 / 184,5 / 178,2 s) ; c'est le goulot de la mise en route, pas le téléchargement",
     "source": "qwen-image-kaggle/sorties/essai-1, essai-2, essai-3/journal.txt ; tests/journal.txt (lignes « pip reste OK »)",
     "nature": "mesure_ici"
    },
    {
     "fait": "Déploiement, essai 1 : échec à l'import",
     "valeur": "arrêt à 237,6 s ; torchao 0.10 préinstallé sur Kaggle sans FqnToConfig, diffusers main l'importe sans garde (correctif : désinstaller torchao)",
     "source": "qwen-image-kaggle/sorties/essai-1/journal.txt",
     "nature": "mesure_ici"
    },
    {
     "fait": "Déploiement, essai 2 : manque de mémoire au décodage VAE fp32 entier posé à côté d'une moitié du DiT",
     "valeur": "14,50 Gio utilisés sur 14,56, 60 Mio libres sur le GPU 1 ; le repli (DiT entier sur GPU 0, VAE seul sur GPU 1) a produit les 3 images",
     "source": "qwen-image-kaggle/sorties/essai-2/journal.txt",
     "nature": "mesure_ici"
    },
    {
     "fait": "Déploiement, essai 3 : recette finale rejouée",
     "valeur": "fin ok en 918,6 s ; 3 images identiques bit à bit à celles de l'essai 2 (sha256)",
     "source": "qwen-image-kaggle/sorties/essai-3/journal.txt ; journal de workflow wf_73d05474 (agent deploiement)",
     "nature": "mesure_ici"
    },
    {
     "fait": "Recette finale : DiT 7 B en fp16 entier sur un seul T4",
     "valeur": "13,26 Gio de poids ; marge réelle ≈ 0,4 Gio pendant le débruitage (nvidia-smi 14 487 Mio sur 14 909). DÉSACCORD : le premier rapport annonçait 0,7 Gio (calcul sans le cache de l'allocateur) ; le chiffre brut donne 0,4",
     "source": "qwen-image-kaggle/sorties/essai-3/mesures.json (smi.max_mem_mio) ; journal de workflow wf_73d05474 (agent revue:mesures)",
     "nature": "mesure_ici"
    },
    {
     "fait": "Stabilité du fp16 sur T4",
     "valeur": "activation maximale en sortie de bloc 9 128 (limite fp16 : 65 504) ; 0 NaN, 0 bloc saturé sur les 32",
     "source": "qwen-image-kaggle/sorties/essai-2/mesures.json (sondes)",
     "nature": "mesure_ici"
    },
    {
     "fait": "Débit mesuré d'un T4 selon la précision (produit matriciel)",
     "valeur": "fp16 27,46 TFLOPS ; fp32 4,08 ; bf16 2,31 (émulé) : d'où le DiT en fp16",
     "source": "qwen-image-kaggle/diag/sortie/diag.json (tflops)",
     "nature": "mesure_ici"
    },
    {
     "fait": "Attention sur T4",
     "valeur": "flash et cuDNN indisponibles ; SDPA mem_efficient 13,9 ms contre 97,8 ms en math ; pas de P2P entre les deux cartes",
     "source": "qwen-image-kaggle/diag/sortie/diag.json (sdpa, p2p_0_1)",
     "nature": "mesure_ici"
    },
    {
     "fait": "Carte L4 demandée par la CLI Kaggle",
     "valeur": "session acceptée mais sans aucun GPU (nb_gpu 0) ; seul GPU réel du compte : 2×T4",
     "source": "qwen-image-kaggle/diag-l4/sortie/sonde.json",
     "nature": "mesure_ici"
    },
    {
     "fait": "Bridage des T4 pendant la génération (recette finale, GPU 0)",
     "valeur": "fréquence SM moyenne 619 MHz (minimum 495), 80 °C maximum, 76,6 W maximum",
     "source": "qwen-image-kaggle/sorties/essai-3/mesures.json (smi.generation)",
     "nature": "mesure_ici"
    },
    {
     "fait": "Vitesse en recette finale (DiT entier sur GPU 0), 1024², 40 pas, sans guidage",
     "valeur": "4,14–4,45 s par pas ; 166–178 s de débruitage + 3,5–4,7 s de décodage VAE par image",
     "source": "qwen-image-kaggle/sorties/essai-2/mesures.json ; sorties/essai-3/mesures.json",
     "nature": "mesure_ici"
    },
    {
     "fait": "GPU consommé par le déploiement",
     "valeur": "38,4 min en 3 essais (4,2 + 18,6 + 15,6), plus ≈ 2 min de diagnostic machine (111 s)",
     "source": "qwen-image-kaggle/sorties/essai-*/quota_avant.txt ; tests/journaux/quota_avant.txt ; journal de workflow wf_73d05474 (agent revue:mesures)",
     "nature": "mesure_ici"
    },
    {
     "fait": "Vitesse 1024×1024, DiT réparti 16 + 16 blocs sur les 2 T4",
     "valeur": "4,21–4,26 s par pas en régime établi (4,10 sur cartes froides) ; 40 pas ≈ 170 s, 20 pas ≈ 85 s ; décodage 4,4 s",
     "source": "qwen-image-kaggle/tests/mesures.json (s_par_pas_hors_1er)",
     "nature": "mesure_ici"
    },
    {
     "fait": "Vitesse 1344×1344",
     "valeur": "8,28 s par pas (×1,95 le 1024) ; 40 pas = 331–340 s ; 20 pas = 166–175 s",
     "source": "qwen-image-kaggle/tests/mesures.json",
     "nature": "mesure_ici"
    },
    {
     "fait": "Vitesse 1664×928 (16:9)",
     "valeur": "6,85 s par pas (×1,61 le 1024) ; 40 pas ≈ 274–282 s ; décodage en tuiles de 960 px en 8 s",
     "source": "qwen-image-kaggle/tests/mesures.json",
     "nature": "mesure_ici"
    },
    {
     "fait": "2048×2048, résolution native annoncée par Qwen",
     "valeur": "non lancé (garde-fou de budget : fin estimée 67,7 min > 67) ; ≈ 24,5 s par pas est une extrapolation, pas une mesure",
     "source": "qwen-image-kaggle/tests/journal.txt (SAUTE 16_forum_2048_20p_bonus) ; journal de workflow wf_73d05474 (agent revue:mesures)",
     "nature": "jugement"
    },
    {
     "fait": "Mémoire par GPU en mode réparti, débruitage 1024",
     "valeur": "7,34 Gio (GPU 0) et 8,37 Gio (GPU 1) alloués ; ≈ 6 Gio libres par carte, ce qui rend possibles le 1344, le 16:9 et l'édition",
     "source": "qwen-image-kaggle/tests/mesures.json",
     "nature": "mesure_ici"
    },
    {
     "fait": "Session de tests de génération",
     "valeur": "3 576 s (59,6 min), 15 images sur 16, 1,00 h de quota (1,05 → 2,05 h)",
     "source": "qwen-image-kaggle/tests/journal.txt ; tests/journaux/quota_avant.txt et quota_apres.txt",
     "nature": "mesure_ici"
    },
    {
     "fait": "Mise en route d'une session, avant la première image",
     "valeur": "≈ 6 min : modèle prêt à 227–242 s, puis encodeur 68–71 s et DiT 57–62 s",
     "source": "qwen-image-kaggle/tests/journal.txt ; sorties/essai-3/mesures.json",
     "nature": "mesure_ici"
    },
    {
     "fait": "Coût réel d'une image 1024², 20 pas",
     "valeur": "≈ 90 s (85,6 s de débruitage + 0,7 s d'encodage + 4,4 s de décodage), soit ≈ 40 images par heure de GPU (calcul)",
     "source": "qwen-image-kaggle/styles/sorties/essai-1/mesures.json ; journal de workflow wf_e3cf978d (agent revue:controle)",
     "nature": "mesure_ici"
    },
    {
     "fait": "Encodage d'une consigne par Qwen3-VL (bf16 émulé sur T4)",
     "valeur": "0,7–2 s pour du texte ; 27–29 s avec une image en 768 ; 48–49 s avec une image en 1024",
     "source": "qwen-image-kaggle/styles/sorties/essai-1/journal.txt ; tests/mesures.json",
     "nature": "mesure_ici"
    },
    {
     "fait": "Affiche en français, trois lignes de texte (1024², 40 pas, 169 s)",
     "valeur": "9/10 : texte exact au caractère près",
     "source": "qwen-image-kaggle/rapport/donnees.json (generation 01_affiche_fr)",
     "nature": "jugement"
    },
    {
     "fait": "Vignette 16:9 avec un long titre anglais (282 s)",
     "valeur": "texte 10/10, contenu historique ≈ 3/10, note globale 6/10 : ruines et hangars de tôle sous le mot « Rebuilt »",
     "source": "qwen-image-kaggle/rapport/donnees.json (generation 03_vignette_youtube_16x9)",
     "nature": "jugement"
    },
    {
     "fait": "Affiche en arabe",
     "valeur": "5/10 : les deux chaînes demandées sont justes, mais une ligne de pseudo-arabe sans aucun sens est ajoutée",
     "source": "qwen-image-kaggle/rapport/donnees.json (generation 02_affiche_ar)",
     "nature": "jugement"
    },
    {
     "fait": "Forum romain « au IIe siècle, achevé » (6 variantes de taille et de pas)",
     "valeur": "3–4/10 (photoréalisme 8, histoire 1) : le Forum d'aujourd'hui, façades baroques, drapeau italien, ville moderne, Colisée doublé",
     "source": "qwen-image-kaggle/rapport/donnees.json (generation 04, 11 à 15)",
     "nature": "jugement"
    },
    {
     "fait": "Salle hypostyle de Karnak « neuve »",
     "valeur": "7/10, meilleure scène historique ; au zoom : tongs, tabouret pliant, murs érodés",
     "source": "qwen-image-kaggle/rapport/donnees.json (generation 05_karnak)",
     "nature": "jugement"
    },
    {
     "fait": "Rue de marché de Carthage punique, consigne courte",
     "valeur": "5/10 : balcons en fer forgé, voiliers de plaisance, bouteilles en verre modernes",
     "source": "qwen-image-kaggle/rapport/donnees.json (generation 06_carthage_marche)",
     "nature": "jugement"
    },
    {
     "fait": "Même rue avec une consigne longue et des exclusions explicites (« no iron balconies, no modern boats, no tourists… »), 1664×928, 20 pas",
     "valeur": "≈ 8/10 ; il reste un balcon en fer forgé",
     "source": "note de mémoire qwen-image-kaggle.md ; qwen-image-kaggle/animation/assets/catalogue.json (consigne) ; journal de workflow wf_817e38e8 (agent assets:qwen)",
     "nature": "jugement"
    },
    {
     "fait": "Durée de cette scène de Carthage 1664×928, 20 pas",
     "valeur": "126,1 s (6,26 s par pas) ; variante graine 7 : 132,1 s. DÉSACCORD : la note de mémoire dit 130 s ; le journal brut donne 126,1 s",
     "source": "qwen-image-kaggle/animation/assets/journal-kaggle/journal.txt",
     "nature": "mesure_ici"
    },
    {
     "fait": "Portrait photoréaliste d'une personne fictive, mains visibles",
     "valeur": "9/10 : cinq doigts par main, niveau banque d'images",
     "source": "qwen-image-kaggle/rapport/donnees.json (generation 07)",
     "nature": "jugement"
    },
    {
     "fait": "Transparence RGBA native (casque de légionnaire, gabarit de consigne officiel)",
     "valeur": "62,3 % des pixels transparents, alpha de 0 à 255, découpe nette",
     "source": "qwen-image-kaggle/sorties/essai-2/journal.txt (03_rgba_casque)",
     "nature": "mesure_ici"
    },
    {
     "fait": "Icône générée en RGBA : fond",
     "valeur": "alpha entre 1 et 9 sur 48,7 % des pixels, RGB violet caché sous l'alpha : ramener les alpha < 10 à 0 avant usage",
     "source": "qwen-image-kaggle/rapport/donnees.json (generation 08_icone_mallette_rgba)",
     "nature": "mesure_ici"
    },
    {
     "fait": "Images « opaques » sorties quand même en RGBA",
     "valeur": "alpha < 255 sur 5 à 24 % des pixels, jusqu'à 192 : aplatir en RGB avant publication",
     "source": "qwen-image-kaggle/tests/mesures.json (alpha.min) ; journal de workflow wf_73d05474 (agent revue:images)",
     "nature": "mesure_ici"
    },
    {
     "fait": "Vitesse d'édition à output_resolution 768 (896×672 ou 928×640)",
     "valeur": "2,2 s par pas, ≈ 92 s pour 40 pas, plus 28 s d'encodeur par image de référence (55 s pour deux)",
     "source": "qwen-image-kaggle/edition/sorties/essai-1/mesures.json ; rapport/donnees.json (edition_methode)",
     "nature": "mesure_ici"
    },
    {
     "fait": "Coût réel d'une édition dans une session",
     "valeur": "≈ 168–188 s par image, plus ≈ 6,5 min de frais fixes par session",
     "source": "qwen-image-kaggle/edition/sorties/essai-1/journal.txt et essai-3/journal.txt ; journal de workflow wf_9061e3c9 (agent revue:controle)",
     "nature": "mesure_ici"
    },
    {
     "fait": "Karnak repeint dans sa polychromie, sans masque",
     "valeur": "8/10 : gravures, lumière et cadrage conservés",
     "source": "qwen-image-kaggle/rapport/donnees.json (edition 02b_karnak_sans_masque)",
     "nature": "jugement"
    },
    {
     "fait": "Retouche locale : masque passé en 2e image + consigne « image entièrement opaque »",
     "valeur": "8/10 ; écart moyen 11,7/255 hors masque contre 21,4 dedans",
     "source": "qwen-image-kaggle/edition/sorties/essai-2/mesures.json ; rapport/donnees.json (edition 02c)",
     "nature": "mesure_ici"
    },
    {
     "fait": "Même masque sans la consigne d'opacité",
     "valeur": "2/10 : tout le hors-masque devient transparent (alpha moyen 17,1 hors zone, 253,8 dedans)",
     "source": "qwen-image-kaggle/edition/sorties/essai-1/mesures.json (alpha_moyen_hors_zone)",
     "nature": "mesure_ici"
    },
    {
     "fait": "Retouche locale par cadres rouges peints sur l'image",
     "valeur": "6/10 : déborde, une colonne hors cadre est repeinte (écart 17,7–18,8 contre 10–11,5 avec le masque séparé)",
     "source": "qwen-image-kaggle/rapport/donnees.json (edition 02d)",
     "nature": "mesure_ici"
    },
    {
     "fait": "Reconstruire le Forum à partir d'une photo de ruines (4 variantes de consigne et de taille)",
     "valeur": "1–2/10 : le modèle nettoie le site (touristes enlevés, lumière chaude) sans rien reconstruire",
     "source": "qwen-image-kaggle/rapport/donnees.json (edition 01, 01b, 01c) ; edition_verdict",
     "nature": "jugement"
    },
    {
     "fait": "Gravure de Piranèse (vers 1775) transformée en image couleur",
     "valeur": "7/10 : composition fidèle, numéros gravés effacés, rendu d'illustration",
     "source": "qwen-image-kaggle/rapport/donnees.json (edition 04_piranese_photo)",
     "nature": "jugement"
    },
    {
     "fait": "Decumanus de Volubilis rendu comme une rue romaine vivante",
     "valeur": "6/10 : arc entier, passants en toge ; balcons, stores et vitres anachroniques, portique allongé en aqueduc",
     "source": "qwen-image-kaggle/rapport/donnees.json (edition 03_volubilis_rue, edition_verdict)",
     "nature": "jugement"
    },
    {
     "fait": "Enseigne bilingue arabe / français ajoutée sur une photo de rue",
     "valeur": "8,5/10 : aucune faute dans les deux écritures",
     "source": "qwen-image-kaggle/rapport/donnees.json (edition 07_souk_enseigne)",
     "nature": "jugement"
    },
    {
     "fait": "Texte français court en minuscules dans une édition",
     "valeur": "faute « recruitons » 3 fois sur 3 (graines 42 et 7) ; en capitales, texte exact (8,5/10)",
     "source": "qwen-image-kaggle/rapport/donnees.json (edition 05, 05c ; edition_verdict)",
     "nature": "jugement"
    },
    {
     "fait": "Deux images de référence (un logo + une photo) combinées en affiche",
     "valeur": "7,5/10 ; formes du logo fidèles mais traits affinés d'environ 20–25 %",
     "source": "qwen-image-kaggle/rapport/donnees.json (edition 08)",
     "nature": "jugement"
    },
    {
     "fait": "Piège du « noise replay » : éditer une image générée avec la même graine et la même taille",
     "valeur": "copie sursaturée, consigne ignorée : 1/10 à 768 ; même portrait édité à 640 : 8/10, à 512 : 7/10",
     "source": "qwen-image-kaggle/rapport/donnees.json (edition 09, 09d, 09b) ; journal de workflow wf_9061e3c9 (agent revue:controle)",
     "nature": "jugement"
    },
    {
     "fait": "Cause du piège",
     "valeur": "même graine et même taille = même bruit initial que la génération ; ticket diffusers #14824 clos le 22/09 (« nothing to fix »). DÉSACCORD : l'agent d'édition l'attribuait à un « bug 1024 » ; la relecture a corrigé, aucune vraie photo n'a été éditée à 1024 avant les styles",
     "source": "https://github.com/huggingface/diffusers/issues/14824 ; journal de workflow wf_9061e3c9 (agent revue:controle)",
     "nature": "ailleurs"
    },
    {
     "fait": "Édition à 1024 d'une image générée à 1024 avec la même graine (« ajoute une foule et des marchands »)",
     "valeur": "2/10 : aucune foule ajoutée ; saturation moyenne 0,152 → 0,345, halos HDR",
     "source": "qwen-image-kaggle/rapport/donnees.json (generation 09_edit_foule, remesure de relecture ; le premier relevé donnait 0,154 → 0,346) ; journal de workflow wf_73d05474",
     "nature": "mesure_ici"
    },
    {
     "fait": "GPU consommé par l'édition",
     "valeur": "67 min pour 22 éditions (11 + 7 + 4) et 1 portrait généré, en 3 essais (2 013 + 1 251 + 750 s ; quota 2,05 → 3,17 h)",
     "source": "qwen-image-kaggle/edition/sorties/essai-1,2,3/journal.txt et quota_avant.txt ; styles/sorties/essai-1/quota_avant.txt",
     "nature": "mesure_ici"
    },
    {
     "fait": "Transfert de style sur une photo (édition par consigne)",
     "valeur": "≈ 130 s en 768 (100 s de débruitage + 27,5 s d'encodeur + 2,6 s de décodage) ; ≈ 269 s en 1024",
     "source": "qwen-image-kaggle/styles/sorties/essai-1/journal.txt et mesures.json ; journal de workflow wf_e3cf978d (agent revue:controle)",
     "nature": "mesure_ici"
    },
    {
     "fait": "Style 3D type Pixar/Disney",
     "valeur": "génération 9 et 8,5/10 (meilleure image de la série) ; transfert sur photo 3,5 et 2/10 (style ignoré ; sur un portrait, visage aminci et rajeuni)",
     "source": "qwen-image-kaggle/rapport/donnees.json (styles A05, B05, T_*_3d ; styles_classement)",
     "nature": "jugement"
    },
    {
     "fait": "Style aquarelle",
     "valeur": "génération 8,5 et 8,5 ; transferts 7,5 et 7,5 : le seul style solide dans les deux modes",
     "source": "qwen-image-kaggle/rapport/donnees.json (styles_classement)",
     "nature": "jugement"
    },
    {
     "fait": "Style peinture à l'huile classique",
     "valeur": "8,5 et 8/10 ; accessoires anachroniques (épée médiévale)",
     "source": "qwen-image-kaggle/rapport/donnees.json (styles A08, B08)",
     "nature": "jugement"
    },
    {
     "fait": "Style affiche vintage années 1950",
     "valeur": "6 et 9/10 ; titre court « ROMA » parfait",
     "source": "qwen-image-kaggle/rapport/donnees.json (styles A12, B12)",
     "nature": "jugement"
    },
    {
     "fait": "Styles cartoon 2D, anime, pixel art, argile",
     "valeur": "cartoon 7 et 8 (transferts 7 et 7) ; anime 8,5 et 7 (transferts 5 : photo repeinte) ; pixel art 6,5 et 8 ; argile 8 et 6,5",
     "source": "qwen-image-kaggle/rapport/donnees.json (styles_classement)",
     "nature": "jugement"
    },
    {
     "fait": "Styles ratés",
     "valeur": "photoréaliste 7 et 7 (légionnaire = figurant costumé) ; manga 6,5 et 5 (sort en crayon ou en gravure) ; ligne claire 4,5 et 5,5 (coloriage) ; vectoriel plat 3 et 5 (visages vides)",
     "source": "qwen-image-kaggle/rapport/donnees.json (styles_classement)",
     "nature": "jugement"
    },
    {
     "fait": "Recadrage involontaire des transferts en 768",
     "valeur": "sur la photo du Forum : ×1,12 en anime et en 3D, ×1,05 en aquarelle ; le cartoon et les portraits gardent leur cadrage (au plus ×1,025) ; cadrage exact en 1024. DÉSACCORD : le rapport disait ≈ 5 % partout ; la relecture (corrélation de contours) donne ×1,12",
     "source": "journal de workflow wf_e3cf978d (agent revue:controle) ; qwen-image-kaggle/styles/sorties/essai-1/T_forum_anime_comparaison.jpg",
     "nature": "mesure_ici"
    },
    {
     "fait": "Transfert en 1024 comparé au 768",
     "valeur": "moins stylisé : écart moyen à la source 38,0 contre 48,5",
     "source": "journal de workflow wf_e3cf978d (agent revue:controle)",
     "nature": "mesure_ici"
    },
    {
     "fait": "GPU consommé par le test de styles",
     "valeur": "66 min (session de 3 945 s ; quota 3,17 → 4,27 h) pour 24 générations et 9 transferts",
     "source": "qwen-image-kaggle/styles/sorties/essai-1/resume_styles.json",
     "nature": "mesure_ici"
    },
    {
     "fait": "Calque « marché » demandé seul en RGBA natif",
     "valeur": "87,8 % des pixels restent opaques : seul le ciel devient transparent, le modèle rend la scène complète (premier plan : 71,1 % opaques)",
     "source": "qwen-image-kaggle/animation/assets/journal-kaggle/journal.txt (post-traitement L4_marche, L5_premier_plan)",
     "nature": "mesure_ici"
    },
    {
     "fait": "Extraction des calques par édition (« garde seulement X, le reste transparent »)",
     "valeur": "2/10 ; le calque de fond, censé être opaque, sort transparent à 62,7 % ; ≈ 70 s par calque (1024×576, 30 pas)",
     "source": "qwen-image-kaggle/animation/assets/journal-kaggle/journal.txt (E1_fond) ; journal de workflow wf_817e38e8 (agent assets:qwen)",
     "nature": "mesure_ici"
    },
    {
     "fait": "Découpe d'une scène générée en 5 calques sur Kaggle CPU (Depth Anything V2 Small + Mask2Former ADE20K + LaMa)",
     "valeur": "96,6 s par scène (profondeur 10,3 s, segmentation 5,4 s, 4 cœurs) ; 240,9 s de session pour deux scènes ; 0 min de GPU",
     "source": "qwen-image-kaggle/animation/assets/journal-kaggle/decoupe.json",
     "nature": "mesure_ici"
    },
    {
     "fait": "Empilement des 5 calques à l'image 0",
     "valeur": "écart moyen 0,03/255 avec la scène d'origine",
     "source": "qwen-image-kaggle/animation/assets/journal-kaggle/decoupe.json (ecart_recomposition)",
     "nature": "mesure_ici"
    },
    {
     "fait": "Répartition des pixels entre les 5 calques (fond, lointain, maisons, marché, premier plan)",
     "valeur": "17 / 10 / 34 / 24 / 14 %",
     "source": "qwen-image-kaggle/animation/assets/journal-kaggle/decoupe.json (parts)",
     "nature": "mesure_ici"
    },
    {
     "fait": "Décalages de parallaxe testés sans trou",
     "valeur": "4 / 14 / 26 / 48 px (calques 2 à 5) pour une image de 1 664 px ; agrandir chaque plan d'au moins 6 %",
     "source": "qwen-image-kaggle/animation/assets/catalogue.json (regles_blender)",
     "nature": "mesure_ici"
    },
    {
     "fait": "GPU consommé par la génération des scènes et calques",
     "valeur": "48 min (session de 2 873 s ; quota 4,27 → 5,07 h)",
     "source": "qwen-image-kaggle/animation/assets/journal-kaggle/quota_avant.txt et quota_apres.txt",
     "nature": "mesure_ici"
    },
    {
     "fait": "Total GPU de la famille Qwen-Image 2.1",
     "valeur": "≈ 281 min ≈ 4,7 h de quota Kaggle gratuit (30 h par semaine) ; 0 €",
     "source": "somme des relevés de quota ci-dessus (2 + 38,4 + 60 + 67 + 66 + 48 min)",
     "nature": "mesure_ici"
    },
    {
     "fait": "Licence de Qwen-Image 2.1 (colonne licence du tableau)",
     "valeur": "Qwen Research License",
     "source": "https://huggingface.co/Qwen/Qwen-Image-2.1/blob/main/LICENSE",
     "nature": "ailleurs"
    },
    {
     "fait": "Licences des outils de découpe (colonne licence du tableau)",
     "valeur": "Depth Anything V2 Small : Apache-2.0 ; LaMa : Apache-2.0 ; Mask2Former ADE20K : non vérifiée",
     "source": "journal de workflow wf_817e38e8 (agents assets:qwen et revue:realisateur)",
     "nature": "ailleurs"
    },
    {
     "fait": "Composition du modèle",
     "valeur": "DiT ≈ 7,1 milliards de paramètres (14,23 Go en bf16, 32 couches) + encodeur Qwen3-VL 8B (17,53 Go) + VAE à 4 canaux RGBA (1,35 Go)",
     "source": "https://huggingface.co/Qwen/Qwen-Image-2.1/tree/main (model_index.json, config.json)",
     "nature": "ailleurs"
    },
    {
     "fait": "Réglages par défaut du pipeline",
     "valeur": "40 pas, sans guidage (true_cfg_scale 1,0), pas de paramètre de masque ; résolution recommandée 2048×2048",
     "source": "https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/qwenimage21/pipeline_qwenimage21.py ; https://github.com/QwenLM/Qwen-Image-2.1",
     "nature": "ailleurs"
    },
    {
     "fait": "Disponibilité du pipeline",
     "valeur": "QwenImage21Pipeline absent de diffusers 0.40 sur PyPI : à installer depuis git (PR #14804, fusionnée le 18/09/2026)",
     "source": "https://github.com/huggingface/diffusers/pull/14804",
     "nature": "ailleurs"
    },
    {
     "fait": "Mesure d'un tiers sur 2×T4 (ComfyUI, fichiers INT8)",
     "valeur": "139–147 s par image 1024², 40 pas, avec l'attention INT8 ; 248–272 s en fp32",
     "source": "https://huggingface.co/Comfy-Org/Qwen-Image-2.1/discussions/8",
     "nature": "ailleurs"
    }
   ],
   "medias": [
    {
     "fichier": "data/video-ia/image/vitesse-forum.jpg",
     "legende": "Même consigne « le Forum romain au IIe siècle, achevé », graine 42. En haut 40 pas, en bas 20 pas ; de gauche à droite 1024², 1344² et 1664×928. Six fois le Forum d'aujourd'hui : ruines, façades baroques, ville moderne, Colisée doublé en 16:9. 4,2 / 8,3 / 6,9 s par pas sur 2 T4.",
     "credit": "Images générées par Qwen-Image 2.1 dans ce projet."
    },
    {
     "fichier": "data/video-ia/image/karnak-genere.jpg",
     "legende": "Salle hypostyle de Karnak « neuve », 1024², 40 pas, 175 s. La meilleure scène historique (7/10) : plafond étoilé, colonnes peintes, rayon de lumière. Au zoom : tongs, tabouret pliant, murs érodés.",
     "credit": "Image générée par Qwen-Image 2.1 dans ce projet."
    },
    {
     "fichier": "data/video-ia/image/vignette-carthage.jpg",
     "legende": "Vignette 16:9 « The Lost City of Carthage, Rebuilt », 40 pas, 282 s. Le titre est exact et lisible en miniature ; le décor montre des ruines et des hangars de tôle : rien n'est reconstruit (6/10).",
     "credit": "Image générée par Qwen-Image 2.1 dans ce projet."
    },
    {
     "fichier": "data/video-ia/image/carthage-consigne.jpg",
     "legende": "Rue de marché de Carthage punique, graine 42. À gauche, consigne courte (1024², 40 pas) : balcons en fer forgé, voiliers de plaisance (5/10). À droite, consigne longue avec exclusions explicites (1664×928, 20 pas, 126 s) : maisons intactes, port circulaire au fond ; il reste un balcon en fer forgé à droite.",
     "credit": "Images générées par Qwen-Image 2.1 dans ce projet."
    },
    {
     "fichier": "data/video-ia/image/neon-texte.jpg",
     "legende": "Consigne d'exemple officielle : enseigne néon « QWEN IMAGE 2.1 » sous la pluie, 1024², 40 pas, ≈ 166 s. Première image réussie du déploiement sur 2 T4.",
     "credit": "Image générée par Qwen-Image 2.1 dans ce projet."
    },
    {
     "fichier": "data/video-ia/image/casque-rgba.jpg",
     "legende": "Casque de légionnaire demandé « avec fond transparent » : le PNG sort en RGBA natif, 62,3 % de pixels transparents (affiché ici sur un damier).",
     "credit": "Image générée par Qwen-Image 2.1 dans ce projet."
    },
    {
     "fichier": "data/video-ia/image/portrait-genere.jpg",
     "legende": "Portrait photoréaliste d'une personne fictive, 1024², 40 pas, 174 s : 9/10, cinq doigts par main, niveau banque d'images.",
     "credit": "Image générée par Qwen-Image 2.1 dans ce projet ; personne fictive."
    },
    {
     "fichier": "data/video-ia/image/karnak-repeint.jpg",
     "legende": "Avant / après, édition sans masque : les colonnes retrouvent leur polychromie ; gravures, lumière et cadrage conservés (8/10). 928×640, 40 pas, ≈ 93 s.",
     "credit": "Photo d'origine : © Vyacheslav Argenberg, CC BY 4.0, https://commons.wikimedia.org/wiki/File:Luxor,_Egypt,_Karnak,_Great_Hypostyle_Hall,_Columns_2.jpg ; modifiée par Qwen-Image 2.1 dans ce projet."
    },
    {
     "fichier": "data/video-ia/image/karnak-masque.jpg",
     "legende": "Retouche locale : la photo, le masque passé en 2e image, le résultat. Seules les deux colonnes du masque sont peintes ; écart moyen 11,7 hors masque contre 21,4 dedans (8/10). Il a fallu écrire « image entièrement opaque » dans la consigne.",
     "credit": "Photo d'origine : © Vyacheslav Argenberg, CC BY 4.0, https://commons.wikimedia.org/wiki/File:Luxor,_Egypt,_Karnak,_Great_Hypostyle_Hall,_Columns_2.jpg ; modifiée par Qwen-Image 2.1 dans ce projet."
    },
    {
     "fichier": "data/video-ia/image/forum-edition-rate.jpg",
     "legende": "Avant / après : « reconstruis le Forum antique ». Le modèle enlève les touristes et réchauffe la lumière, mais garde ruines, églises et Vittoriano (2/10).",
     "credit": "Photo d'origine : Alex Liivet, CC0 1.0, https://commons.wikimedia.org/wiki/File:Roman_Forum_(25854190723).jpg ; modifiée par Qwen-Image 2.1 dans ce projet."
    },
    {
     "fichier": "data/video-ia/image/piranese-couleur.jpg",
     "legende": "Gravure de Piranèse (vers 1775) transformée en image couleur : arc de Septime Sévère, colonne de Phocas, composition fidèle, numéros gravés effacés (7/10).",
     "credit": "Giovanni Battista Piranesi, Veduta di Campo Vaccino ; numérisation du Metropolitan Museum of Art, CC0, https://commons.wikimedia.org/wiki/File:The_Forum_Romanum,_or_Campo_Vaccino,_from_the_Capitol,_with_the_Arch_of_Septimius_in_the_foreground_left,_Temple_of_Vespian_right,_and_the_Colosseum_in_the_distance_(Veduta_di_Campo_Vaccino)_MET_DP828309.jpg ; modifiée par Qwen-Image 2.1 dans ce projet."
    },
    {
     "fichier": "data/video-ia/image/volubilis-rue.jpg",
     "legende": "Decumanus de Volubilis rendu comme une rue romaine animée : arc entier, passants en toge, charrette (6/10). La façade s'allonge en aqueduc ; balcons, stores et vitres sont anachroniques.",
     "credit": "Photo d'origine : Christian Rosenbaum, CC BY-SA 3.0, https://commons.wikimedia.org/wiki/File:Decumanus_Maximus.jpg ; image modifiée par Qwen-Image 2.1 dans ce projet, diffusée sous la même licence CC BY-SA 3.0."
    },
    {
     "fichier": "data/video-ia/image/identite-graine.jpg",
     "legende": "Le piège du « noise replay ». À gauche, portrait fictif généré (672×896, graine 42). Au centre, édition « blazer, salle de réunion » à la même taille et la même graine : copie sursaturée, consigne ignorée (1/10). À droite, la même édition à 640 : blazer et salle de réunion, visage conservé (8/10).",
     "credit": "Images générées et modifiées par Qwen-Image 2.1 dans ce projet ; personne fictive."
    },
    {
     "fichier": "data/video-ia/image/styles-legionnaire.jpg",
     "legende": "Douze styles pour la même consigne « légionnaire devant le Colisée au coucher du soleil », 1024², 20 pas, graine 42, ≈ 86 s chacun. Meilleurs : affiche 1950 (9/10), 3D type Pixar et aquarelle (8,5). Ratés : ligne claire (en coloriage), vectoriel plat (sans visage ni armure), manga sorti en gravure.",
     "credit": "Images générées par Qwen-Image 2.1 dans ce projet."
    },
    {
     "fichier": "data/video-ia/image/styles-ingenieure.jpg",
     "legende": "Les mêmes douze styles sur un 2e sujet (ingénieure de chantier à Casablanca). 3D type Pixar 9/10 ; Casablanca n'est reconnaissable qu'en anime et en 3D ; vectoriel plat sans visage (3/10).",
     "credit": "Images générées par Qwen-Image 2.1 dans ce projet ; personnes fictives."
    },
    {
     "fichier": "data/video-ia/image/transferts-style.jpg",
     "legende": "Transferts de style par édition (768, 40 pas, graine 1234, ≈ 130 s) sur une photo du Forum et un portrait fictif. Aquarelle 7,5 et cartoon 7/10 ; anime = photo repeinte (5) ; 3D type Pixar ignoré (3,5) et, sur le portrait, visage aminci et rajeuni (2).",
     "credit": "Photo du Forum : Alex Liivet, CC0 1.0, https://commons.wikimedia.org/wiki/File:Roman_Forum_(25854190723).jpg ; portrait fictif généré ; transferts par Qwen-Image 2.1 dans ce projet."
    },
    {
     "fichier": "data/video-ia/image/calques-profondeur-partition.jpg",
     "legende": "Découpe de la scène de Carthage sur CPU : carte de profondeur (clair = proche) et partition en 5 calques (bleu fond, violet lointain, jaune maisons, vert marché, rouge premier plan). 96,6 s par scène, sans GPU.",
     "credit": "Scène générée par Qwen-Image 2.1 ; profondeur Depth Anything V2 Small ; segmentation Mask2Former ADE20K ; dans ce projet."
    },
    {
     "fichier": "data/video-ia/image/calque-proches-lama.jpg",
     "legende": "Calque 3 (maisons et rue) vu seul : les zones cachées par la foule sont bouchées par LaMa en silhouettes floues, invisibles aux décalages testés.",
     "credit": "Scène générée par Qwen-Image 2.1 ; découpe Depth Anything V2 Small, Mask2Former ADE20K et LaMa ; dans ce projet."
    },
    {
     "fichier": "data/video-ia/image/calque-rgba-direct.jpg",
     "legende": "Calque « marché » demandé seul en RGBA : seul le ciel devient transparent (87,8 % de pixels opaques) ; le modèle rend une scène complète au lieu d'un calque.",
     "credit": "Image générée par Qwen-Image 2.1 dans ce projet."
    },
    {
     "fichier": "data/video-ia/image/calques-edition-rate.jpg",
     "legende": "Les 5 calques extraits par édition, recomposés : le violet montre les trous. Le modèle rend transparent ce qu'il enlève sans rien reconstruire (2/10).",
     "credit": "Images modifiées par Qwen-Image 2.1 dans ce projet."
    },
    {
     "fichier": "data/video-ia/image/parallaxe-controle.jpg",
     "legende": "Contrôle de parallaxe : calques décalés de 4 / 14 / 26 / 48 px, aucun trou dans la scène. La bande grise du bord droit montre qu'il faut agrandir chaque plan d'au moins 6 %.",
     "credit": "Scène générée par Qwen-Image 2.1 ; découpe Depth Anything V2 Small, Mask2Former ADE20K et LaMa ; dans ce projet."
    }
   ]
  },
  {
   "id": "animation",
   "titre": "Animation dans Blender : parallaxe 2,5D, rue 3D, restylisation, figurants 3D",
   "faits": [
    {
     "fait": "Parallaxe 2,5D : temps de rendu Cycles OptiX par image et par T4 (1920×1080, 16 échantillons + débruitage OIDN sur GPU, un Blender par carte)",
     "valeur": "1,97 s par carte en moyenne (journal : 1,96 et 1,99 s en régime ; 120 images en 235,9 et 239,9 s) ; 1re image 3,1 s",
     "source": "animation/rendu/kaggle_sortie (journal du rendu) + mesures.json (par_carte 1,94 / 2,00 : léger écart avec le régime du journal, prendre 1,96 / 1,99)",
     "nature": "mesure_ici"
    },
    {
     "fait": "Rue 3D par script (mannequins) : temps de rendu Cycles OptiX par image et par T4, mêmes réglages",
     "valeur": "2,98 s par carte (363,4 s pour 120 images par carte) ; 1re image 8,3 s",
     "source": "animation/rendu/kaggle_sortie/mesures.json + logs/rue3d_gpu0.log, rue3d_gpu1.log",
     "nature": "mesure_ici"
    },
    {
     "fait": "Cadence réelle avec les deux T4 en parallèle",
     "valeur": "rue 3D ≈ 1,5 s/image (363 s pour 240 images) ; parallaxe ≈ 1,0 s/image (calculée : valeur par carte ÷ 2)",
     "source": "journal wf_817e38e8 (agent de contrôle) d'après les logs par carte",
     "nature": "mesure_ici"
    },
    {
     "fait": "Noyau Kaggle qui rend les deux scènes (2 × 240 images, 2 × 10 s) et les deux MP4",
     "valeur": "11,5 min de noyau ; quota GPU 5,07 h → 5,27 h (0,20 h) ; 1er essai réussi, aucune image manquante",
     "source": "animation/rendu/kaggle_sortie (journal du rendu) ; animation/rendu/quota_avant.txt, quota_apres.txt",
     "nature": "mesure_ici"
    },
    {
     "fait": "Montage de la parallaxe : 5 plans transparents mis à l'échelle de leur distance, marge commune calculée en lançant les rayons des 4 coins du cadre sur 240 images",
     "valeur": "plans à 150, 55, 22, 11 et 5,5 m ; marge k = 1,094 (la caméra voit 91 % de la peinture) ; k = 1,375 si pan et glissement vont dans le même sens (un quart de la peinture perdu)",
     "source": "journal du rendu (rendu/kaggle_sortie) (k = 1,094, 91 %) ; journal wf_817e38e8 (agent scenes:blender) ; animation/scenes/parallaxe.py",
     "nature": "mesure_ici"
    },
    {
     "fait": "Mouvement de caméra de la parallaxe",
     "valeur": "40 mm, avance de 1,2 m, glisse de 0,6 m en pivotant de ±1,6°, remonte de 0,7° ; 3 voiles de brume, rais de lumière, 700 grains de poussière",
     "source": "journal wf_817e38e8 (agent scenes:blender) ; animation/scenes/parallaxe.py",
     "nature": "mesure_ici"
    },
    {
     "fait": "Part de l'image où le calque des maisons a dû être bouché derrière les plans proches (sinon l'arche découvrait des stries grises à l'image 240)",
     "valeur": "5,6 % de l'image",
     "source": "animation/rendu/kaggle_sortie (journal du rendu)",
     "nature": "mesure_ici"
    },
    {
     "fait": "Stabilité de la parallaxe sur 240 images (balayage de luminance)",
     "valeur": "luminance moyenne de 120,6 à 125,1, saut maximal de 0,24 entre deux images ; aucune image noire",
     "source": "journal wf_817e38e8 (agent revue:realisateur)",
     "nature": "mesure_ici"
    },
    {
     "fait": "Rendu CPU local en 1920×1080, image 120 (portable, Blender 5.1.1)",
     "valeur": "rue 3D 92,2 s (24 éch. + OIDN) ; parallaxe 112,5 s en 64 éch. sans débruitage, 54 s en 16 éch. + OIDN",
     "source": "animation/rendu/mesure_1080.log (92,2 et 112,5 s) ; 54 s : journal wf_817e38e8 (agent scenes:blender)",
     "nature": "mesure_ici"
    },
    {
     "fait": "Contrôles locaux en 640×360 (images 1, 120, 240)",
     "valeur": "parallaxe : EEVEE 1,5 s, Cycles CPU 8 à 9 s, Workbench 0,8 s par image ; rue 3D : EEVEE 1,9 s, Cycles CPU 11 s, Workbench 0,2 s",
     "source": "journal wf_817e38e8 (agent scenes:blender)",
     "nature": "mesure_ici"
    },
    {
     "fait": "Scène de rue 3D construite entièrement par script (maillages en from_pydata)",
     "valeur": "36 objets, 77 000 faces ; rue de 6 m × 42 m en pente de 4 % ; travelling de 10 m en 10 s, 35 mm",
     "source": "journal wf_817e38e8 (agent scenes:blender) ; animation/scenes/rue3d.py",
     "nature": "mesure_ici"
    },
    {
     "fait": "Poids des MP4 1080p d'origine (H.264 High, 24 i/s, 10 s, faststart)",
     "valeur": "parallaxe 4 135 689 octets ; rue 3D 6 576 165 octets",
     "source": "animation/rendu/kaggle_sortie/mesures.json",
     "nature": "mesure_ici"
    },
    {
     "fait": "Note du relecteur « réalisateur » — parallaxe 2,5D",
     "valeur": "6/10 : seul rendu « documentaire », mais bords de calques visibles (aplats gris sous les auvents dès l'image 1), halo d'arche, foule figée",
     "source": "journal wf_817e38e8 (agent revue:realisateur)",
     "nature": "jugement"
    },
    {
     "fait": "Note du relecteur — rue 3D par script avec mannequins",
     "valeur": "4/10 : parallaxe parfaite et scène réutilisable, mais « maquette de jeu » (mannequins sans visage, bois des poteaux posé en travers, fanions saturés, enseigne lue « CA »)",
     "source": "journal wf_817e38e8 (agent revue:realisateur)",
     "nature": "jugement"
    },
    {
     "fait": "Restylisation image par image : clip et réglages",
     "valeur": "24 images (une sur deux, images 49 à 95 du travelling), jouées à 12 i/s (2,0 s) ; sortie 1024×576 ; 16 pas ; graine fixe 2718 ; même consigne pour toutes les images",
     "source": "animation/style/kaggle_sortie/mesures.json (clip, reglages)",
     "nature": "mesure_ici"
    },
    {
     "fait": "Coût d'une édition Qwen-Image 2.1 sur 2 × T4 en 1024×576, 16 pas",
     "valeur": "DiT 39,5 s en moyenne (38,4 à 40,3), 2,34 s par pas, 1er pas 4,46 s ; décodage 2,08 s → 41,6 s par image ; 49 éditions, 0 échec, aucun NaN",
     "source": "animation/style/kaggle_sortie/mesures.json (resultats, resume)",
     "nature": "mesure_ici"
    },
    {
     "fait": "Découpage du temps de la session de restylisation",
     "valeur": "modèle prêt à 242 s ; encodeur 157 s ; DiT 2 007 s ; décodage 108 s ; post-traitement 58 s ; total 2 601 s ; quota 5,27 h → 5,99 h (43 min)",
     "source": "animation/style/kaggle_sortie/mesures.json (phases) ; quota_avant.txt, quota_apres.txt",
     "nature": "mesure_ici"
    },
    {
     "fait": "Scintillement BRUT (écart absolu moyen entre images successives, 0-255, 1024×576)",
     "valeur": "original 12,55 ; aquarelle 11,74 (0,94×) ; cartoon 22,99 (1,83×) — l'aquarelle paraît plus stable que l'original parce qu'elle baisse le contraste : mesure trompeuse",
     "source": "animation/style/kaggle_sortie/mesures.json (post.scintillement)",
     "nature": "mesure_ici"
    },
    {
     "fait": "Scintillement COMPENSÉ du mouvement (image suivante recalée par le flux optique DIS des originaux, pixels cohérents à l'aller-retour)",
     "valeur": "original 1,86 ; aquarelle repeinte 14,66 (7,9×) ; cartoon repeint 23,26 (12,5×)",
     "source": "animation/style/kaggle_sortie/mesures.json (post.scintillement)",
     "nature": "mesure_ici"
    },
    {
     "fait": "Astuce images clés + flux optique (1 image sur 6 repeinte, les autres fabriquées en déformant les deux clés voisines)",
     "valeur": "aquarelle 4,88 (2,6×, contre 7,9×) ; cartoon 7,16 (3,9×, contre 12,5×) : scintillement divisé par 3 ; fondu simple sans flux : 7,3× et 12,1× avec images fantômes",
     "source": "animation/style/kaggle_sortie/mesures.json (post.scintillement)",
     "nature": "mesure_ici"
    },
    {
     "fait": "Qualité du flux optique utilisé pour la mesure et l'astuce",
     "valeur": "87,5 % de pixels fiables, déplacement moyen 6,05 px entre deux images",
     "source": "animation/style/kaggle_sortie/mesures.json (post)",
     "nature": "mesure_ici"
    },
    {
     "fait": "Encoder la consigne une seule fois (avec l'image du milieu) et la resservir à toutes les images",
     "valeur": "écart de 1,27 avec la consigne propre à l'image, contre 11,74 entre deux images successives ; 27 à 29 s d'encodeur économisées par image",
     "source": "animation/style/kaggle_sortie/mesures.json (controle_consigne_propre, encodage)",
     "nature": "mesure_ici"
    },
    {
     "fait": "Coût de production avec l'astuce des images clés",
     "valeur": "≈ 8,7 s par image produite (calcul : 5 clés × 41,6 s ÷ 24 images), contre 41,6 s en repeint complet",
     "source": "journal wf_817e38e8 (agent style + contrôle) — calculé, pas mesuré",
     "nature": "mesure_ici"
    },
    {
     "fait": "Notes du relecteur — restylisation",
     "valeur": "image seule : aquarelle 8/10, cartoon 7,5/10 ; clip aquarelle : 3/10 repeint, 5/10 avec clés + flux (4,5 global) ; clip cartoon : 2/10 repeint, 3,5/10 avec clés (3 global)",
     "source": "journal wf_817e38e8 (agents style et revue:realisateur)",
     "nature": "jugement"
    },
    {
     "fait": "GPU consommé par les trois méthodes (calques Qwen, rendu des deux scènes, restylisation)",
     "valeur": "103 min (1,72 h) : 48 + 12 + 43 min",
     "source": "journal wf_817e38e8 (agent de contrôle) d'après les fichiers quota_avant/après de chaque session",
     "nature": "mesure_ici"
    },
    {
     "fait": "Quota GPU hebdomadaire gratuit de Kaggle",
     "valeur": "30 h par semaine (2 × T4)",
     "source": "sortie de « kaggle quota » (animation/rendu/quota_avant.txt, champ total)",
     "nature": "ailleurs"
    },
    {
     "fait": "Personnages : 9 modèles GLB de Quaternius téléchargés depuis Poly Pizza",
     "valeur": "14 429 284 octets au total (1,34 à 2,00 Mo par fichier) ; 5 240 à 11 100 triangles ; squelette commun de 62 os ; 24 animations chacun",
     "source": "journal wf_3b01cdd2 (agent personnages:inventaire) ; animation/personnages/inventaire.json",
     "nature": "mesure_ici"
    },
    {
     "fait": "Licences des 9 modèles sur Poly Pizza (vérifiées le 27/09/2026, champ « Licence » de chaque page)",
     "valeur": "7 en CC0 1.0 (Adventurer ×2, King, Farmer, Worker homme, Hooded Adventurer, Animated Woman) ; 2 en CC-BY 3.0 (Witch, Worker femme) : attribution à Quaternius obligatoire",
     "source": "https://poly.pizza/m/QBEOV9ZUT8 (Witch, CC-BY 3.0), https://poly.pizza/m/E8079Ahx7k (Worker, CC-BY 3.0), et les 7 pages CC0 (5EGWBMpuXq, I1gTjmuK2m, 7pn3R6hPvE, Yg2bQZO6Hj, y9KWOVG21R, ZwF0K7WBmu, nIItLV9nxS)",
     "nature": "ailleurs"
    },
    {
     "fait": "Cycle de marche des modèles Quaternius (marche EN PLACE : c'est le script qui doit faire avancer le personnage)",
     "valeur": "hommes : 32 images (1,33 s), pied d'appui à 1,36 m/s ; femmes : 40 images (1,67 s), 1,10 m/s ; ≈ 1,78 m par cycle dans les deux cas",
     "source": "journal wf_3b01cdd2 (agent personnages:inventaire) ; journal de construction animation/rendu/controle_v2/journal_controle.txt",
     "nature": "mesure_ici"
    },
    {
     "fait": "Retouches d'import nécessaires",
     "valeur": "matériaux livrés en Metallic 0,4 (aspect plastique, damier en Workbench) → 0 ; échelle 0,86 à 0,95 (modèles de 1,83 à 1,90 m) ; action active à l'import = « Death »",
     "source": "journal wf_3b01cdd2 (agents personnages:inventaire et mise-en-scene)",
     "nature": "mesure_ici"
    },
    {
     "fait": "Mise en scène de la rue v1",
     "valeur": "15 figurants (duplicats liés des 9 modèles) : 8 marchent, 7 attendent ; aucune collision ; glissement des pieds 0,063 à 0,174 m/s pour 0,76 à 1,24 m/s de marche ; pieds entre −2,5 et +2,0 cm du sol",
     "source": "animation/personnages/rendu/kaggle_sortie/mesures.json (controle) + journal du rendu des figurants",
     "nature": "mesure_ici"
    },
    {
     "fait": "Contrôles locaux de la rue v1 avec figurants",
     "valeur": "construction de la scène ≈ 25 s ; Workbench 640×360 0,6 s/image ; EEVEE 960×540 3 à 9 s/image",
     "source": "journal wf_3b01cdd2 (agent mise-en-scene)",
     "nature": "mesure_ici"
    },
    {
     "fait": "Rendu Kaggle de la rue v1 avec figurants (Cycles OptiX, 16 éch. + OIDN GPU, 1920×1080, 240 images)",
     "valeur": "3,36 et 3,44 s/image par carte (mesures.json arrondit la 2e à 3,45) ; ≈ 1,75 s/image avec les deux cartes ; 1re image 9,1 s ; noyau 8,7 min ; quota 0,00 → 0,15 h ; MP4 7 788 109 octets",
     "source": "animation/personnages/rendu/kaggle_sortie/mesures.json + journal du rendu des figurants ; quota_avant.txt, quota_apres.txt",
     "nature": "mesure_ici"
    },
    {
     "fait": "Raccord entre les deux cartes (images 1-120 sur l'une, 121-240 sur l'autre)",
     "valeur": "écart entre images successives de 6,76, 6,66 et 6,65 autour du passage 120 → 121, pour 5,36 en moyenne sur la vidéo : aucun saut visible",
     "source": "journal wf_3b01cdd2 (agent rendu:kaggle)",
     "nature": "mesure_ici"
    },
    {
     "fait": "Note du relecteur — rue v1 avec figurants",
     "valeur": "6/10 (contre 4/10 pour les mannequins) : la rue vit enfin ; défaut bloquant : les jambes traversent les robes longues (8 images d'affilée, 146 à 153), voiles et bonnets lus comme des casques, restes modernes (bottes, t-shirt)",
     "source": "journal wf_3b01cdd2 (agent revue:realisateur)",
     "nature": "jugement"
    },
    {
     "fait": "Correctif des robes longues en v2 : jambes coupées sous l'ourlet et deux os de jupe (avant / arrière) dont la rotation est calculée image par image",
     "valeur": "pan avant 5 à 8° en moyenne, pan arrière 15 à 20° en moyenne (max 22 à 28°) chez les marcheurs ; 0 à 6° chez les figurants immobiles",
     "source": "animation/personnages/rendu/kaggle_sortie_v2 (journal du rendu des figurants) (lignes « jupe ») ; journal wf_a42b0d08 (agent corrections:rue)",
     "nature": "mesure_ici"
    },
    {
     "fait": "Autres corrections v2",
     "valeur": "écart des bras 8° → 3,5° ; voiles moulés sur le crâne ; fanions remplacés par deux velums (flèche 0,45 et 0,4 m) ; cothon ajouté au bout de la rue (60 loges, rayon 30 m)",
     "source": "journal wf_a42b0d08 (agent corrections:rue) ; kaggle_sortie_v2 (journal du rendu des figurants) (ligne cothon)",
     "nature": "mesure_ici"
    },
    {
     "fait": "Contrôle local EEVEE 640×360 de la v2",
     "valeur": "9 images en 13,2 s (1,16 s/image en régime, 1re image 3,9 s)",
     "source": "animation/rendu/controle_v2/journal_controle.txt",
     "nature": "mesure_ici"
    },
    {
     "fait": "Rendu Kaggle de la rue v2",
     "valeur": "3,41 s/image par carte (3,49 et 3,33) ; 1re image 8,6 et 8,0 s ; noyau 8,8 min ; quota 1,97 → 2,12 h (0,15 h) ; MP4 8 232 108 octets ; 1er essai réussi",
     "source": "animation/personnages/rendu/kaggle_sortie_v2/mesures.json ; quota_avant_v2.txt, quota_apres_v2.txt",
     "nature": "mesure_ici"
    },
    {
     "fait": "Contrôle automatique de la v2",
     "valeur": "aucune collision ; glissement 0,057 à 0,175 m/s ; le passant de la ruelle frôle maintenant la caméra à 3,39 m (5,4 m en v1)",
     "source": "animation/personnages/rendu/kaggle_sortie_v2/mesures.json (controle)",
     "nature": "mesure_ici"
    },
    {
     "fait": "Note du relecteur — rue v2",
     "valeur": "7/10 (+1) : robes propres, voiles sans effet casque, velums, cothon ; restent les personnages à facettes « cinématique de jeu », un pilos lu comme un béret, des tuniques qui s'évasent en tutu, l'enseigne lue « CAT », une tour du cothon qui paraît moderne",
     "source": "journal wf_a42b0d08 (agent revue:realisateur)",
     "nature": "jugement"
    },
    {
     "fait": "Piège de file d'attente Kaggle rencontré avant la v2",
     "valeur": "une version poussée pendant une autre session est restée « QUEUED » environ 3 h ; arrêtée depuis le site (Stop Session), la nouvelle version est partie immédiatement, sans quota consommé",
     "source": "journal wf_a42b0d08 (agent rendu:rue-v2)",
     "nature": "mesure_ici"
    }
   ],
   "medias": [
    {
     "fichier": "data/video-ia/animation/parallaxe.mp4",
     "legende": "Méthode 1, parallaxe 2,5D : une seule peinture Qwen découpée en 5 calques, posés à 150, 55, 22, 11 et 5,5 m devant une caméra qui avance de 1,2 m. Les bords de calques se voient sous les auvents (aplats gris). 10 s, Cycles sur 2 × T4, 1,97 s/image par carte.",
     "credit": "Rendu Blender de ce projet ; peinture et calques générés par Qwen-Image 2.1 (ce projet)"
    },
    {
     "fichier": "data/video-ia/animation/parallaxe.jpg",
     "legende": "Affiche (poster) de parallaxe.mp4 : image 121.",
     "credit": "Rendu Blender de ce projet ; peinture générée par Qwen-Image 2.1"
    },
    {
     "fichier": "data/video-ia/animation/recadrages-1080.jpg",
     "legende": "Recadrages 1:1 en 1080p. À gauche, la rue 3D : mannequins sans visage, bois du poteau posé en travers, fanions saturés. À droite, la parallaxe : aplat gris aux bords déchiquetés sous l'auvent, là où les calques ont été bouchés.",
     "credit": "Rendus Blender de ce projet ; textures et peinture générées par Qwen-Image 2.1"
    },
    {
     "fichier": "data/video-ia/animation/rue3d-mannequins.mp4",
     "legende": "Méthode 2, rue 3D construite par script (36 objets, 77 000 faces), textures Qwen, travelling de 10 m. Parallaxe parfaite, mais les passants sont des mannequins immobiles : note 4/10. 2,98 s/image par carte.",
     "credit": "Rendu Blender de ce projet ; textures et fond générés par Qwen-Image 2.1"
    },
    {
     "fichier": "data/video-ia/animation/rue3d-mannequins.jpg",
     "legende": "Affiche (poster) de rue3d-mannequins.mp4 : image 121.",
     "credit": "Rendu Blender de ce projet"
    },
    {
     "fichier": "data/video-ia/animation/style-aquarelle-image.jpg",
     "legende": "Méthode 3, une image seule : l'image 49 du rendu 3D repeinte en aquarelle par Qwen-Image 2.1 (édition, 16 pas, 41,6 s). Belle prise seule (8/10) : les mannequins deviennent des silhouettes drapées, mais les têtes restent lisses.",
     "credit": "Image générée par Qwen-Image 2.1 à partir d'un rendu Blender de ce projet"
    },
    {
     "fichier": "data/video-ia/animation/style-aquarelle-comparaison.mp4",
     "legende": "Quatre versions du même clip de 2 s : le rendu 3D, le repeint image par image (scintillement 7,9× l'original une fois le mouvement compensé), images clés + flux optique (2,6×, traits dédoublés à mi-intervalle), images clés + fondu simple (7,3×, images fantômes).",
     "credit": "Rendu Blender de ce projet ; repeints Qwen-Image 2.1 (ce projet)"
    },
    {
     "fichier": "data/video-ia/animation/style-aquarelle-comparaison.jpg",
     "legende": "Affiche (poster) de style-aquarelle-comparaison.mp4 : les quatre panneaux à la même image.",
     "credit": "Rendu Blender de ce projet ; repeints Qwen-Image 2.1"
    },
    {
     "fichier": "data/video-ia/animation/style-cartoon-comparaison.mp4",
     "legende": "Même comparaison en cartoon 2D : le repeint clignote le plus (12,5× l'original) ; les images clés + flux ramènent à 3,9× mais les contours noirs rendent les traits dédoublés très visibles ; le fondu laisse des passants fantômes.",
     "credit": "Rendu Blender de ce projet ; repeints Qwen-Image 2.1 (ce projet)"
    },
    {
     "fichier": "data/video-ia/animation/style-cartoon-comparaison.jpg",
     "legende": "Affiche (poster) de style-cartoon-comparaison.mp4.",
     "credit": "Rendu Blender de ce projet ; repeints Qwen-Image 2.1"
    },
    {
     "fichier": "data/video-ia/animation/style-cartoon-planche.jpg",
     "legende": "Les 24 images repeintes une à une en cartoon, même graine et même consigne : chacune est propre, mais le ciel passe du crème au bleu sur la dernière rangée et la teinte de la passante change d'une image à l'autre.",
     "credit": "Images générées par Qwen-Image 2.1 à partir de rendus Blender de ce projet"
    },
    {
     "fichier": "data/video-ia/animation/personnages-bruts.jpg",
     "legende": "Les 9 personnages Quaternius tels qu'ils arrivent : aventuriers, roi, fermier, ouvriers au casque de chantier, sorcière. Un seul (la robe verte) passe pour antique sans retouche. Tous partagent le même squelette de 62 os et les mêmes 24 animations.",
     "credit": "Modèles de Quaternius via Poly Pizza : 7 en CC0 ; « Witch » (poly.pizza/m/QBEOV9ZUT8) et « Worker » femme (poly.pizza/m/E8079Ahx7k) en CC BY 3.0. Rendu Blender de ce projet"
    },
    {
     "fichier": "data/video-ia/animation/personnages-habilles.jpg",
     "legende": "Les mêmes modèles rhabillés par script : casques, chapeaux et sacs supprimés, robes, voiles et bonnets ajoutés et déformés par le squelette, couleurs lin, garance, pourpre, indigo, ocre, Metallic ramené de 0,4 à 0.",
     "credit": "Modèles de Quaternius (7 CC0, 2 CC BY 3.0 : Witch, Worker), modifiés dans ce projet ; rendu Blender"
    },
    {
     "fichier": "data/video-ia/animation/trajets-dessus.jpg",
     "legende": "Plan des trajets vu de dessus (v1) : en bleu les marcheurs qui vont vers le port, en rouge ceux qui viennent vers la caméra, en jaune les figurants qui attendent devant les étals, en blanc le trajet de la caméra.",
     "credit": "Rendu Blender de ce projet"
    },
    {
     "fichier": "data/video-ia/animation/rue-personnages-v1.mp4",
     "legende": "Rue v1 avec 15 figurants Quaternius (8 marchent, 7 attendent) : 6/10. La rue vit, mais les jambes traversent les robes longues vues de face et plusieurs voiles se lisent comme des casques. 3,4 s/image par carte, 8,7 min de noyau.",
     "credit": "Rendu Blender de ce projet ; personnages 3D de Quaternius : 7 modèles CC0, « Witch » et « Worker » en CC BY 3.0"
    },
    {
     "fichier": "data/video-ia/animation/rue-personnages-v1.jpg",
     "legende": "Affiche (poster) de rue-personnages-v1.mp4 : image 148, le bonnet de l'ouvrier se lit comme un casque.",
     "credit": "Rendu Blender de ce projet ; personnages 3D de Quaternius : 7 modèles CC0, « Witch » et « Worker » en CC BY 3.0"
    },
    {
     "fichier": "data/video-ia/animation/robes-avant-apres.jpg",
     "legende": "Avant / après (Workbench). En haut, v1 : un tibia et une botte traversent la robe rose, une jambe perce la robe pourpre. En bas, v2 : jambes coupées sous l'ourlet, deux os de jupe qui s'ouvrent juste assez à chaque pas, pieds nus visibles.",
     "credit": "Rendus Blender de ce projet ; personnages 3D de Quaternius : 7 modèles CC0, « Witch » et « Worker » en CC BY 3.0 modifiés"
    },
    {
     "fichier": "data/video-ia/animation/voiles-avant-apres.jpg",
     "legende": "Avant / après des coiffes. En haut, v1 : voiles rigides en visière et bonnet conique qui se lisent comme des casques. En bas, v2 : voile moulé sur le crâne qui tombe en plis sur les épaules.",
     "credit": "Rendus Blender de ce projet ; personnages 3D de Quaternius : 7 modèles CC0, « Witch » et « Worker » en CC BY 3.0 modifiés"
    },
    {
     "fichier": "data/video-ia/animation/rue-personnages-v2.mp4",
     "legende": "Rue v2 : robes et voiles corrigés, velums à la place des fanions, palmiers refaits, cothon au bout de la rue, têtes qui tournent vers les étals. 7/10 : bonne maquette pour un modèle vidéo, pas un plan final (personnages à facettes). 3,41 s/image par carte.",
     "credit": "Rendu Blender de ce projet ; personnages 3D de Quaternius : 7 modèles CC0, « Witch » et « Worker » en CC BY 3.0"
    },
    {
     "fichier": "data/video-ia/animation/rue-personnages-v2.jpg",
     "legende": "Affiche (poster) de rue-personnages-v2.mp4 : image 192, velum au-dessus de la rue.",
     "credit": "Rendu Blender de ce projet ; personnages 3D de Quaternius : 7 modèles CC0, « Witch » et « Worker » en CC BY 3.0"
    },
    {
     "fichier": "data/video-ia/animation/rue-v2-planche.jpg",
     "legende": "Six images de la rue v2 (1, 48, 96, 144, 192, 240), même caméra que la v1 : velums, palmiers denses, tour et quai du cothon au bout de la rue.",
     "credit": "Rendu Blender de ce projet ; personnages 3D de Quaternius : 7 modèles CC0, « Witch » et « Worker » en CC BY 3.0"
    }
   ]
  },
  {
   "id": "video",
   "titre": "Modèles vidéo ouverts : Wan 2.2 et LTX-2.5, et tests en cours",
   "faits": [
    {
     "fait": "Machine des essais vidéo (Kaggle, quota gratuit)",
     "valeur": "2 × Tesla T4 de 15 360 Mio, 31 Go de RAM, 4 cœurs, 0 €",
     "source": "animation/video-ia/ltx/sorties/journal_kaggle_essai1.txt (nvidia-smi, free, nproc) ; ltx/quota_avant.txt (quota 30 h/semaine)",
     "nature": "mesure_ici"
    },
    {
     "fait": "Quota GPU consommé par la session LTX (4 clips B1-B4, un seul essai)",
     "valeur": "0,46 h (compteur 0,15 h → 0,61 h) ; noyau de 27,71 min du 26/09/2026 22:57 au 23:25",
     "source": "animation/video-ia/ltx/quota_avant.txt, quota_apres.txt, ltx/sorties/resume_ltx.json (duree_totale_min)",
     "nature": "mesure_ici"
    },
    {
     "fait": "Quota GPU consommé par les deux essais Wan (A1, A2, A3, A1v13)",
     "valeur": "1,36 h (compteur 0,61 h → 1,97 h) ; essai 1 : 36,57 min, essai 2 : 44,69 min",
     "source": "animation/video-ia/wan/quota_avant.txt, quota_apres.txt, wan/sorties/resume_wan_essai1.json et resume_wan_essai2.json (duree_totale_min)",
     "nature": "mesure_ici"
    },
    {
     "fait": "Mise en route d'une session LTX avant le 1er clip",
     "valeur": "7,19 min : installation 0,69 min, téléchargement 4,09 min, chargement 135 s",
     "source": "animation/video-ia/ltx/sorties/resume_ltx.json (etapes)",
     "nature": "mesure_ici"
    },
    {
     "fait": "Téléchargement des poids LTX-2.5 (transformeur 22B INT8, Gemma 4 12B INT8, VAE, vocodeur, upscaler, IC-LoRA Union)",
     "valeur": "40,2 Go en 195 s (206 Mo/s)",
     "source": "animation/video-ia/ltx/sorties/journal_kaggle_essai1.txt (ligne telechargement)",
     "nature": "mesure_ici"
    },
    {
     "fait": "Encodeur de texte Gemma 4 lancé à part sur la 2e T4 (sous-processus)",
     "valeur": "91,9 s puis 32,1 s par consigne ; VRAM max 13,3 Go",
     "source": "animation/video-ia/ltx/sorties/gemma_2e_t4.log",
     "nature": "mesure_ici"
    },
    {
     "fait": "B1 : LTX-2.5 22B distillé, image→vidéo, parallaxe, 832×448",
     "valeur": "121 images à 24 i/s (5 s), 8 pas, 3,81 min de génération, ≈ 17 à 28 s par pas (1er pas 43 s), 0,53 image/s, VRAM max 11,4 Go",
     "source": "animation/video-ia/ltx/sorties/resume_ltx.json (minutes_generation, pas_s, i_par_s, vram_max_go)",
     "nature": "mesure_ici"
    },
    {
     "fait": "B2 : LTX-2.5, image→vidéo, parallaxe, 1280×704",
     "valeur": "121 images à 24 i/s, 8 pas, 7,20 min, ≈ 45 s par pas (1er pas 66 s), 0,28 image/s, VRAM max 11,8 Go, décodage VAE en tuiles de 512",
     "source": "animation/video-ia/ltx/sorties/resume_ltx.json",
     "nature": "mesure_ici"
    },
    {
     "fait": "B3 : LTX-2.5, 1re + dernière image (rendu Blender de la rue 3D), 832×448",
     "valeur": "121 images, 8 pas, 3,36 min, ≈ 19 s par pas (1er pas 37 s), 0,60 image/s",
     "source": "animation/video-ia/ltx/sorties/resume_ltx.json",
     "nature": "mesure_ici"
    },
    {
     "fait": "B4 : LTX-2.5 + IC-LoRA Union Control, vidéo→vidéo guidé par la seule profondeur Blender, 832×448",
     "valeur": "121 images, 8 pas, 5,39 min, ≈ 35 s par pas (1er pas 51 s), 0,37 image/s, VRAM max 11,8 Go",
     "source": "animation/video-ia/ltx/sorties/resume_ltx.json",
     "nature": "mesure_ici"
    },
    {
     "fait": "Résolution du contrôle de profondeur dans B4 (IC-LoRA « ref0.5 »)",
     "valeur": "ramenée à 416×224 (demi-résolution)",
     "source": "journal de workflow wf_6f7d8c18, agent revue:controle (encodage VAE (1, 3, 121, 224, 416) dans le journal Kaggle)",
     "nature": "mesure_ici"
    },
    {
     "fait": "Contrainte de taille LTX-2 constatée",
     "valeur": "largeur et hauteur arrondies au multiple de 64 : 480 refusé, clips faits en 832×448 (entrées 832×480 rognées de 16 px en haut et en bas)",
     "source": "journal de workflow wf_6f7d8c18, agent session:ltx (echecs)",
     "nature": "mesure_ici"
    },
    {
     "fait": "Fidélité de la 1re image LTX à l'image d'entrée (PSNR)",
     "valeur": "B1 29,5 dB ; B2 32,6 dB ; B3 31,5 dB (sur les PNG ; 0,2 à 0,6 dB de moins sur les MP4)",
     "source": "journal de workflow wf_6f7d8c18, agents session:ltx et revue:controle (recalculé à 0,01 dB près)",
     "nature": "mesure_ici"
    },
    {
     "fait": "B3 : la dernière image imposée agit, mais la trajectoire entre les deux bornes est fausse",
     "valeur": "image 121 à 24,2 dB de l'image de fin (11,7 dB de l'image de début) ; au milieu, caméra jusqu'à 20 images d'avance (image 61 de B3 ≈ image 77 du rendu)",
     "source": "journal wf_6f7d8c18 (revue:controle, revue:realisateur) ; animation/video-ia/travail/evaluation/calage/B3_*.txt",
     "nature": "mesure_ici"
    },
    {
     "fait": "Dérive de la caméra de LTX image→vidéo par rapport au plan Blender (SSIM face à l'image Blender de même rang)",
     "valeur": "B1 : 0,97 à l'image 1, 0,61 à la 13, 0,40 à la 49, 0,35 à la 121 ; B2 (réduit) : 0,99 à l'image 1, 0,70 à la 25, 0,44 à la 49, 0,31 à la 121",
     "source": "animation/video-ia/travail/evaluation/ssim_B1_vs_blender_par.txt, ssim_B2r_vs_blender_par.txt",
     "nature": "mesure_ici"
    },
    {
     "fait": "Assombrissement en fin de plan des clips LTX image→vidéo (luminance moyenne)",
     "valeur": "B1 : 117 → 107 ; B2 : 117 → 106 (sur 255)",
     "source": "animation/video-ia/travail/evaluation/yavg_B1.txt, yavg_B2r.txt",
     "nature": "mesure_ici"
    },
    {
     "fait": "B4 suit bien la profondeur Blender (corrélation des contours avec la profondeur de la même image)",
     "valeur": "0,16 à 0,26 (moyenne 0,21), contre 0,00 à 0,06 avec une profondeur décalée dans le temps ; témoin sans rapport (B1) : 0,05 à 0,12",
     "source": "journal de workflow wf_6f7d8c18, agent revue:controle",
     "nature": "mesure_ici"
    },
    {
     "fait": "B4 : stabilité de la luminance d'une image à l'autre",
     "valeur": "écart efficace de 0,2 niveau",
     "source": "journal de workflow wf_6f7d8c18, agent revue:realisateur",
     "nature": "mesure_ici"
    },
    {
     "fait": "Note du relecteur, clips LTX",
     "valeur": "B4 7/10 ; B2 6/10 ; B1 5,5/10 ; B3 3/10",
     "source": "journal de workflow wf_6f7d8c18, agent revue:realisateur",
     "nature": "jugement"
    },
    {
     "fait": "Notes détaillées B4 (rue 3D rhabillée par la profondeur)",
     "valeur": "fidélité caméra 9/10, stabilité 8/10, photoréalisme 8/10, cohérence historique 4/10 (robe bleue à bretelles, bandanas, fanions, pierre de taille au lieu d'enduit blanc)",
     "source": "journal de workflow wf_6f7d8c18, agent revue:realisateur",
     "nature": "jugement"
    },
    {
     "fait": "Notes détaillées B2 (LTX 704p)",
     "valeur": "photoréalisme 9/10, cohérence historique 7/10, foule 9/10, fidélité caméra 3/10 (avance trop vite puis plonge)",
     "source": "journal de workflow wf_6f7d8c18, agent revue:realisateur",
     "nature": "jugement"
    },
    {
     "fait": "Notes détaillées B3 (1re + dernière image du rendu 3D)",
     "valeur": "photoréalisme 1/10, stabilité 3/10 (deux figurants fusionnés), fidélité caméra 5/10",
     "source": "journal de workflow wf_6f7d8c18, agent revue:realisateur",
     "nature": "jugement"
    },
    {
     "fait": "A1 : Wan 2.2 VACE-Fun A14B (int8, 2 experts, LoRA lightx2v 4 pas, NAG 10), profondeur + 1re image du rendu en référence",
     "valeur": "832×480, 81 images à 16 i/s, 4 pas, 27,10 min de génération, 333 à 432 s par pas (moyenne 376), VRAM max 8,27 Go, + pré-test 480×272 de 9,03 min",
     "source": "animation/video-ia/wan/sorties/resume_wan_essai2.json (clip A1)",
     "nature": "mesure_ici"
    },
    {
     "fait": "A2 : Wan 2.2 I2V-A14B (int8, LoRA lightx2v + Seko 4 pas, NAG 10), 1re + dernière image de la parallaxe",
     "valeur": "832×480, 81 images à 16 i/s, 4 pas, 15,27 min, 188 à 240 s par pas (moyenne 209), VRAM max 10,27 Go, + pré-test de 6,96 min",
     "source": "animation/video-ia/wan/sorties/resume_wan_essai2.json (clip A2)",
     "nature": "mesure_ici"
    },
    {
     "fait": "A2 : ancrage aux deux bouts (PSNR)",
     "valeur": "1re image 33,5 dB face à l'image de départ, dernière 29,3 dB face à l'image de fin imposée (33,0 et 29,4 dB sur le MP4) ; au milieu 19 à 21 dB face au rendu Blender",
     "source": "animation/video-ia/wan/sorties/resume_wan_essai2.json (psnr_img1_vs_par_debut, psnr_derniere_vs_par_fin121) ; journal wf_a42b0d08, agent revue:controle (valeurs MP4)",
     "nature": "mesure_ici"
    },
    {
     "fait": "A2 : à-coup de caméra au départ",
     "valeur": "les 6 premières images Wan couvrent le trajet des 21 premières images Blender ; PSNR entre images consécutives 28 à 33 dB (Blender : 40 à 46 dB)",
     "source": "journal de workflow wf_a42b0d08, agent revue:realisateur",
     "nature": "mesure_ici"
    },
    {
     "fait": "A3 : Wan 2.1 VACE 1.3B (secours, 12 pas, CFG 5), seules les zones du masque régénérées",
     "valeur": "832×480, 81 images, 20,25 min, 92,6 s par pas, VRAM max 5,82 Go ; 59,4 % des pixels à régénérer",
     "source": "animation/video-ia/wan/sorties/resume_wan_essai1.json (clip A3)",
     "nature": "mesure_ici"
    },
    {
     "fait": "A3 : fidélité hors masque et dans le masque",
     "valeur": "brut : 33,7 dB hors masque, 20,3 dB dans le masque (écart moyen 17 niveaux) ; composite hors masque 99,6 dB sur les tableaux avant encodage, ≈ 40,4 à 40,8 dB sur le MP4 livré",
     "source": "animation/video-ia/wan/sorties/resume_wan_essai1.json (psnr_*) ; journal wf_a42b0d08, agent revue:controle (mesure sur MP4)",
     "nature": "mesure_ici"
    },
    {
     "fait": "A3 : dérive de la zone masquée au fil du plan (PSNR face au rendu)",
     "valeur": "31 dB à l'image 1, 22,4 dB à la 41, 20,5 dB à la 80",
     "source": "journal de workflow wf_a42b0d08, agent revue:realisateur",
     "nature": "mesure_ici"
    },
    {
     "fait": "A1 : écart au rendu 3D donné en référence (PSNR de la 1re image)",
     "valeur": "21,6 dB pour le 14B (reste en 3D, enseignes « CAT » recopiées) ; 9,6 dB pour le 1.3B (A1v13, rendu peint)",
     "source": "animation/video-ia/wan/sorties/resume_wan_essai2.json et resume_wan_essai1.json (psnr_img1_vs_rendu3d)",
     "nature": "mesure_ici"
    },
    {
     "fait": "A1 suit la profondeur (corrélation des gradients avec la profondeur de la même image)",
     "valeur": "0,20 à 0,27, contre 0,01 à 0,06 avec la profondeur inversée dans le temps",
     "source": "journal de workflow wf_a42b0d08, agent revue:controle",
     "nature": "mesure_ici"
    },
    {
     "fait": "A1v13 : Wan 2.1 VACE 1.3B sur la rue (secours de l'essai 1)",
     "valeur": "23,82 min, 110,2 s par pas, 12 pas, VRAM max 6,02 Go",
     "source": "animation/video-ia/wan/sorties/resume_wan_essai1.json (clip A1)",
     "nature": "mesure_ici"
    },
    {
     "fait": "Note du relecteur, clips Wan",
     "valeur": "A2 6/10 ; A3 4,5/10 ; A1v13 3,5/10 ; A1 3/10",
     "source": "journal de workflow wf_a42b0d08, agent revue:realisateur",
     "nature": "jugement"
    },
    {
     "fait": "Coût GPU d'un clip de 5 s, LTX contre Wan",
     "valeur": "LTX 3,4 à 7,2 min ; Wan 14B 15,3 à 27,1 min (hors pré-tests de 7 à 9 min)",
     "source": "ltx/sorties/resume_ltx.json ; wan/sorties/resume_wan_essai2.json",
     "nature": "mesure_ici"
    },
    {
     "fait": "Essai Wan 1 : échec des trois clips 14B",
     "valeur": "arrêt en 0,3 à 0,6 min sur « ModuleNotFoundError: No module named 'whisper' » (import de toute l'application WanGP par preprocess_loras) ; les secours VACE 1.3B ont tourné",
     "source": "animation/video-ia/wan/sorties/resume_wan_essai1.json (essai_precedent.erreur)",
     "nature": "mesure_ici"
    },
    {
     "fait": "Encodeur de texte T5 umt5-xxl de Wan : GPU contre CPU",
     "valeur": "7,12 min de GPU en bf16 (essai 1) ; 6,4 min sur un noyau CPU gratuit en fp32 (essai 2)",
     "source": "wan/sorties/resume_wan_essai1.json (t5.minutes) ; wan/t5_sortie/sorties/journal_t5.log",
     "nature": "mesure_ici"
    },
    {
     "fait": "Téléchargements Wan",
     "valeur": "VACE-Fun A14B 38,56 Go ; I2V-A14B 31,67 Go ; VACE 1.3B 4,34 Go ; T5 11,92 Go ; 190 à 230 Mo/s",
     "source": "animation/video-ia/wan/sorties/resume_wan_essai1.json et resume_wan_essai2.json (telechargements)",
     "nature": "mesure_ici"
    },
    {
     "fait": "Interpolation RIFE v4.26 des clips Wan de 16 à 24 i/s",
     "valeur": "81 → 121 images, 7 à 15 s par clip",
     "source": "animation/video-ia/wan/sorties/resume_wan_essai*.json (images_24ips, post_s)",
     "nature": "mesure_ici"
    },
    {
     "fait": "Licences des modèles testés (colonne neutre)",
     "valeur": "Wan 2.2 et Wan 2.1 VACE : Apache 2.0 ; LTX-2.5 : LTX-2.x Community License ; IC-LoRA Union (LTX-2.3) : LTX-2 Community License ; Gemma 4 (encodeur de LTX-2.5) : Apache 2.0",
     "source": "github.com/Wan-Video/Wan2.2 (LICENSE.txt) ; github.com/Lightricks/LTX-2 (LICENSE, LICENSE-2, LICENSE-2_x) ; huggingface.co/google/gemma-4-12B-it — relevés du 26/09/2026, journal wf_b29f6ddb (verif:2, verif:3)",
     "nature": "ailleurs"
    },
    {
     "fait": "Licences des modèles écartés (colonne neutre)",
     "valeur": "HunyuanVideo 1.5 : Tencent Hunyuan Community License (ne s'applique pas dans l'UE, au Royaume-Uni et en Corée du Sud) ; MiniMax H3 : licence MiniMax H3 (UE, Royaume-Uni, Corée du Sud et États-Unis exclus)",
     "source": "huggingface.co/tencent/HunyuanVideo-1.5 (LICENSE) ; huggingface.co/MiniMaxAI/MiniMax-H3 (LICENSE) — journal wf_b29f6ddb (verif:1)",
     "nature": "ailleurs"
    },
    {
     "fait": "Classement de l'arène vidéo Artificial Analysis (relevé du 26/09/2026)",
     "valeur": "texte→vidéo sans son : Seedance 2.0 720p 1259, LTX-2.5 1218, Wan 2.2 A14B 1116 ; image→vidéo avec son : MiniMax H3 1181, Seedance 2.0 720p 1176, LTX-2.5 1035",
     "source": "artificialanalysis.ai, arène vidéo — journal wf_b29f6ddb (synthèse)",
     "nature": "ailleurs"
    },
    {
     "fait": "Temps annoncés par les notebooks communautaires avant nos essais",
     "valeur": "Wan 2.2 I2V-A14B GGUF Q4_K_M sur une T4 Colab : ≈ 13 min pour 81 images en 480p (sans journal d'exécution) ; LTX-2.5 notebook « unlockbulk » : 3 à 5 min en 480p, 6 à 8 min en 704p (libellés du menu)",
     "source": "github.com/Isi-dev/Google-Colab_Notebooks (wan22_Lightx2v.ipynb) ; kaggle.com/code/unlockbulk/ltx-2-5-22b-distilled-video-generator — journal wf_b29f6ddb (verif:3, verif:4)",
     "nature": "ailleurs"
    },
    {
     "fait": "Matériel demandé par le code officiel de Wan 2.2 A14B",
     "valeur": "au moins 80 Go de VRAM en mono-GPU",
     "source": "github.com/Wan-Video/Wan2.2 README — journal wf_b29f6ddb (verif:3)",
     "nature": "ailleurs"
    },
    {
     "fait": "Dernière version ouverte de Wan",
     "valeur": "Wan 2.2 ; Wan 2.5, 2.6, 2.7 et 3.0 seulement par API",
     "source": "huggingface.co/api/models?author=Wan-AI — journal wf_b29f6ddb (verif:3)",
     "nature": "ailleurs"
    },
    {
     "fait": "Prix de référence payant (Seedance 2.0 mini avec vidéo en entrée)",
     "valeur": "0,040 $/s en 480p et 0,091 $/s en 720p",
     "source": "relevé tarifaire du 11/09/2026 cité dans le journal wf_b29f6ddb (synthèse)",
     "nature": "ailleurs"
    },
    {
     "fait": "Ce que LTX-2.5 accepte en image (moteur Wan2GP)",
     "valeur": "texte seul, image de départ, image de fin, suite d'une vidéo fournie, suite de la dernière vidéo générée ; injection d'images à des indices choisis",
     "source": "github.com/deepbeepmeep/Wan2GP, commit 2345ae1 (25/09/2026), models/ltx2/ltx2_handler.py (image_prompt_types_allowed « TSEVL », mode « Inject Frames »)",
     "nature": "ailleurs"
    },
    {
     "fait": "Vidéos de contrôle acceptées par LTX (Wan2GP)",
     "valeur": "mouvement humain (pose), profondeur, contours Canny, format brut d'IC-LoRA, zone masquée à repeindre, feuille de références « ingrédients », SDR→HDR",
     "source": "Wan2GP commit 2345ae1, models/ltx2/ltx2_handler.py (control_choices)",
     "nature": "ailleurs"
    },
    {
     "fait": "Fenêtre glissante de LTX dans Wan2GP (enchaînement par continuation)",
     "valeur": "fenêtre de 5 à 501 images (241 par défaut, pas de 4) ; recouvrement de 1 à 97 images (9 par défaut)",
     "source": "Wan2GP commit 2345ae1, models/ltx2/ltx2_handler.py (sliding_window_defaults)",
     "nature": "ailleurs"
    },
    {
     "fait": "Variante MSR (Multiple Subject Reference) de LTX-2.5",
     "valeur": "1 à 4 sujets ou objets, ou 2 à 5 références avec le décor en premier ; chaque référence encodée sur 33 images répétées ; préréglage 145 images en 1280×704",
     "source": "Wan2GP commit 2345ae1, defaults/ltx2_25_22B_msr.json et models/ltx2/infos.py",
     "nature": "ailleurs"
    },
    {
     "fait": "[Fait — voir la famille styles-ltx] Images de départ repeintes par Qwen-Image 2.1 pour le test de styles LTX",
     "valeur": "4 styles × 2 graines, 1056×576, 17 pas, ≈ 42 s par édition ; 22,8 min de GPU en deux essais (essai 1 arrêté en 480 s, soit 8,0 min, sans image : « shape mismatch » 4 608 contre 4 680 dans le RoPE)",
     "source": "animation/video-ia/styles/qwen/sortie_essai2/journal.txt et mesures.json ; sortie_essai1/journal.txt (échec) ; journal wf_8ff9d3d1 (images:qwen)",
     "nature": "mesure_ici"
    },
    {
     "fait": "[Fait — voir la famille styles-ltx] Note des images de départ stylisées (notes de l'agent qui a fait les images, pas de la relecture du réalisateur)",
     "valeur": "photo 8,5/10 ; Disney/Pixar 8/10 ; cartoon 8/10 ; anime façon Ghibli (demandé « manga ») 7/10",
     "source": "animation/video-ia/styles/images_style/retenues.json ; journal wf_8ff9d3d1 (images:qwen)",
     "nature": "jugement"
    },
    {
     "fait": "[Fait — voir la famille styles-ltx] Qwen déplace légèrement le cadrage en repeignant",
     "valeur": "de −0,9 à +2,2 % en largeur (sx 0,9913 à 1,0221) et de 0,6 à 5,5 % en hauteur (sy 1,0063 à 1,0548), recalé avant LTX",
     "source": "animation/video-ia/styles/images_style/recalage_mesures.json, retenues.json ; journal wf_8ff9d3d1",
     "nature": "mesure_ici"
    },
    {
     "fait": "[Fait — voir la famille styles-ltx] Méthode du test de styles LTX",
     "valeur": "rue 3D v2, 4 styles × 2 variantes : profondeur + image de départ stylisée, ou profondeur seule + consigne de style ; négatif par NAG 5 / 3,5 / 0,5",
     "source": "animation/video-ia/styles/ltx/noyau/ltx_styles.py (en-tête)",
     "nature": "mesure_ici"
    },
    {
     "fait": "[Fait — voir la famille styles-ltx] Test de styles LTX : 8 clips générés",
     "valeur": "8 clips (4 styles × 2 variantes), 832×448, 121 images, 8 pas ; générés le 27/09/2026 de 22:15 à 23:12, rapatriés et relus le 28/09/2026 ; 64,8 min de quota en deux essais (compteur 2,50 → 2,64 → 3,58 h) ; session de l'essai 2 : 56,41 min. Relus et publiés le 28/09/2026 (page video-ia-styles.html).",
     "source": "animation/video-ia/styles/ltx/quota_avant.txt, quota_avant_essai2.txt ; animation/video-ia/continuite/travail/quota_avant.txt ; animation/video-ia/styles/ltx/sorties/resume_ltx_styles.json (clips, debut, fin, duree_totale_min)",
     "nature": "mesure_ici"
    },
    {
     "fait": "[Fait — voir la famille continuite-ltx] Méthode du test de continuité",
     "valeur": "241 images (10 s) coupées en 3 clips, jointures après les images 81 et 161 ; 4 méthodes : clips indépendants, dernière image comme image de départ, continuation avec 17 images de recouvrement, une seule fenêtre de 241 images (référence)",
     "source": "animation/video-ia/continuite/noyau/ltx_continuite.py (en-tête)",
     "nature": "mesure_ici"
    },
    {
     "fait": "[Fait — voir la famille continuite-ltx] Test de continuité lancé",
     "valeur": "poussé sur Kaggle le 28/09/2026 à 01:56 (heure locale), compteur de quota à 3,58 h ; terminé en 55,4 min (session), résultats relus et publiés le 28/09/2026 (page video-ia-continuite.html)",
     "source": "animation/video-ia/continuite/travail/heure_push_essai1.txt, quota_avant.txt ; animation/video-ia/continuite/sorties/sorties/resume_continuite.json",
     "nature": "mesure_ici"
    },
    {
     "fait": "[En cours] Scénario du film de 5 min (v2 du 28/09/2026)",
     "valeur": "« Carthage: The City Before the Fire » : 10 séquences, 22 plans, 300 s (7 200 images à 24 i/s), 14 prises continues pour 13 coupes (la plus longue : 52 s, prise A), narration de 686 mots ; résolution visée 1280 × 704",
     "source": "animation/film/scenario/scenario.md et scenario.json (v2) ; journal wf_2e4faedb",
     "nature": "mesure_ici"
    },
    {
     "fait": "[En cours] Film : avancement de la previz",
     "valeur": "6 décors construits par script (aujourdhui, byrsa, maison, ports, rue, ville) ; 7 plans sur 22 à profondeur rendue (p07, p10, p17, p18, p20, p21, p22), le 27/09/2026 ; état du 27/09, la previz est en construction depuis (aucun nouveau décompte publié)",
     "source": "animation/film/decors/*.py ; animation/film/rendus/p07 … p22",
     "nature": "mesure_ici"
    },
    {
     "fait": "[En cours] Film : voix off enregistrée",
     "valeur": "minimax/speech-2.8-hd par OpenRouter (POST /api/v1/audio/speech), voix English_Trustworth_Man ; 53 phrases, 4 051 caractères ; 285,3 s de narration posée (somme des 10 pistes de séquence, pauses comprises), 262,6 s de parole ; −16,1 LUFS intégrés, crête −1,7 dBTP ; coût 0,59 $ tout compris (essais des 3 voix, 53 phrases, phrases régénérées, contrôle par transcription), dont ≈ 0,41 $ (0,405) pour les 4 051 caractères du texte final",
     "source": "animation/film/voix/minutage.json ; animation/film/scenario/scenario.md (section « Voix off enregistrée ») ; animation/film/scenario/scenario.json (voix_off.cout_usd = 0,405) ; compteur de crédits OpenRouter 12,48 → 13,07 $ (journal wf_2e4faedb, agent voix : cout_usd, duree_narration_s)",
     "nature": "mesure_ici"
    },
    {
     "fait": "[En cours] Film : choix de la voix",
     "valeur": "essai court de trois voix sur le début de s01 : English_Trustworth_Man ≈ 100 Hz, 2,6 mots/s (retenue) ; English_Deep-VoicedGentleman ≈ 98 Hz, 2,3 mots/s (la narration dépasserait 300 s d'≈ 6 s) ; Gemini 3.8 Charon ≈ 114 Hz, moins stable d'un appel à l'autre",
     "source": "animation/film/voix/essais/ ; journal wf_2e4faedb (agent voix)",
     "nature": "mesure_ici"
    },
    {
     "fait": "[En cours] Film : contrôle de la voix off",
     "valeur": "transcription à l'aveugle par google/gemini-3.8-flash : aucun mot manquant ni répété, noms propres reconnus",
     "source": "animation/film/voix/controle_transcription.json, controle_voix.py",
     "nature": "mesure_ici"
    },
    {
     "fait": "[En cours] Sorties d'un plan de previz sans textures pour LTX (outil, pas un résultat du film)",
     "valeur": "construction du décor 33,8 s ; aperçu Workbench en couleurs unies 0,55 s/image ; profondeur EEVEE 8 échantillons 0,45 s/image (PC sans GPU dédié)",
     "source": "animation/film/rendus/essai_rue/temps.json",
     "nature": "mesure_ici"
    },
    {
     "fait": "Quota GPU total de la rubrique, au 28/09/2026 à 9 h (tests publiés)",
     "valeur": "≈ 10,1 h. Compteur Kaggle : 0,41 → 5,99 h la semaine du 24/09 (5,58 h) + 0,00 → 4,51 h la semaine du 26/09 (4,51 h) = 10,09 h. Somme par famille : 281 (Qwen) + 30 (rendus Blender) + 43 (restylisation) + 28 (LTX) + 82 (Wan) + 87,6 (styles : 22,8 Qwen + 64,8 LTX) + 55,8 (continuité) = 607,4 min = 10,12 h ; 0 €. Le film n'a pas encore consommé de GPU.",
     "source": "tous les fichiers quota_*.txt du dossier de travail (sorties/essai-1 … continuite/travail/quota_apres_gpu.txt) ; somme des relevés de chaque famille",
     "nature": "mesure_ici"
    }
   ],
   "medias": [
    {
     "fichier": "data/video-ia/video/comparatif_rue.mp4",
     "legende": "La rue 3D, les mêmes 5 s vues quatre fois. En haut : le rendu Blender et sa carte de profondeur. En bas : Wan 2.2 VACE-Fun A14B, qui reçoit la profondeur ET la 1re image du rendu (A1, reste en 3D), et LTX-2.5 qui ne reçoit que la profondeur (B4, photoréaliste, caméra suivie). 960×588, 24 i/s, muet. Affiche : comparatif_rue_affiche.jpg.",
     "credit": "Previz Blender du projet, personnages 3D de Quaternius : 7 modèles CC0, « Witch » et « Worker » en CC BY 3.0 ; vidéos générées par Wan 2.2 (Alibaba) et LTX-2.5 (Lightricks)"
    },
    {
     "fichier": "data/video-ia/video/comparatif_rue_affiche.jpg",
     "legende": "Affiche de comparatif_rue.mp4.",
     "credit": "idem comparatif_rue.mp4"
    },
    {
     "fichier": "data/video-ia/video/comparatif_parallaxe.mp4",
     "legende": "Le marché en parallaxe 2,5D. En haut : le plan Blender d'origine et Wan 2.2 I2V-A14B en 1re + dernière image (A2, cadrage respecté, foule presque figée). En bas : LTX-2.5 image→vidéo en 480p (B1) et en 704p (B2) : foule vivante, mais la caméra part seule. 960×588, 24 i/s, muet. Affiche : comparatif_parallaxe_affiche.jpg.",
     "credit": "Scène générée par Qwen-Image 2.1, découpée en calques et animée dans Blender ; vidéos générées par Wan 2.2 (Alibaba) et LTX-2.5 (Lightricks)"
    },
    {
     "fichier": "data/video-ia/video/comparatif_parallaxe_affiche.jpg",
     "legende": "Affiche de comparatif_parallaxe.mp4.",
     "credit": "idem comparatif_parallaxe.mp4"
    },
    {
     "fichier": "data/video-ia/video/b4_ltx_profondeur.mp4",
     "legende": "Le meilleur clip (7/10) : LTX-2.5 + IC-LoRA Union guidé par la seule profondeur Blender. Pierre, tissus, palmier et mer ; mise en page et travelling suivis. 832×448, 5 s, 5,4 min de GPU, muet. Affiche : b4_ltx_profondeur_affiche.jpg.",
     "credit": "Généré par LTX-2.5 (Lightricks) à partir de la profondeur d'une previz Blender du projet"
    },
    {
     "fichier": "data/video-ia/video/b4_ltx_profondeur_affiche.jpg",
     "legende": "Affiche de b4_ltx_profondeur.mp4.",
     "credit": "idem b4_ltx_profondeur.mp4"
    },
    {
     "fichier": "data/video-ia/video/b4_planche.jpg",
     "legende": "Neuf images du clip B4, de gauche à droite et de haut en bas : le décor tient, mais une robe bleue à fines bretelles s'installe au premier plan et des fanions de fête barrent la rue — la profondeur ne dit rien des costumes.",
     "credit": "Généré par LTX-2.5 (Lightricks)"
    },
    {
     "fichier": "data/video-ia/video/b3_personnages_fusionnes.jpg",
     "legende": "B3, bord gauche, images 37 à 85 : en haut le rendu Blender, en bas LTX. La femme en jaune et l'homme en orange se fondent en une seule silhouette qui glisse.",
     "credit": "Rendu Blender (personnages 3D de Quaternius : 7 modèles CC0, « Witch » et « Worker » en CC BY 3.0) et LTX-2.5 (Lightricks)"
    },
    {
     "fichier": "data/video-ia/video/a3_wan_masque.mp4",
     "legende": "Wan 2.1 VACE 1.3B, seules foule, toiles et fumée régénérées (4,5/10) : hors masque l'image reste celle de Blender ; dans le masque, voile laiteux, ânes translucides, visages flous. La méthode est bonne, le modèle trop faible. 832×480, 20,3 min de GPU, muet.",
     "credit": "Généré par Wan 2.1 VACE (Alibaba) sur un plan Blender du projet"
    },
    {
     "fichier": "data/video-ia/video/a3_wan_masque_affiche.jpg",
     "legende": "Affiche de a3_wan_masque.mp4.",
     "credit": "idem a3_wan_masque.mp4"
    },
    {
     "fichier": "data/video-ia/video/b1_fantome_calque.jpg",
     "legende": "Défaut hérité de la source : la frange grise d'un bord de calque (à gauche du marchand) devient un fantôme gris que LTX garde aux images 30, 60 et 87 de B1, et à l'image 49 de B2.",
     "credit": "Plan Blender du projet et LTX-2.5 (Lightricks)"
    },
    {
     "fichier": "data/video-ia/video/b2_ltx_704p.mp4",
     "legende": "LTX-2.5 image→vidéo en 1280×704 (6/10), réduit en 960 px et publié sans son : la piste son que LTX génère avec l'image est retirée tant qu'elle n'a pas été écoutée. la plus belle image du lot, mais la caméra avance trop vite puis monte en plongée. 7,2 min de GPU. Affiche : b2_ltx_704p_affiche.jpg.",
     "credit": "Généré par LTX-2.5 (Lightricks) à partir d'une image du projet"
    },
    {
     "fichier": "data/video-ia/video/b2_ltx_704p_affiche.jpg",
     "legende": "Affiche de b2_ltx_704p.mp4.",
     "credit": "idem b2_ltx_704p.mp4"
    },
    {
     "fichier": "data/video-ia/video/b2_camera_derive.jpg",
     "legende": "Images 97 et 121 : à gauche le plan Blender prévu, à droite B2 (réduit). La caméra de LTX est partie bien plus loin et plus haut, et la foule a doublé.",
     "credit": "Plan Blender du projet et LTX-2.5 (Lightricks)"
    },
    {
     "fichier": "data/video-ia/video/styles_images_depart.jpg",
     "legende": "Test de styles : la 1re image de la rue v2 (en haut à gauche) repeinte par Qwen-Image 2.1 en Disney/Pixar 3D, anime façon Ghibli, cartoon 2D et photo documentaire ; données à LTX comme image de départ des clips b (page video-ia-styles.html).",
     "credit": "Rendu Blender du projet (personnages 3D de Quaternius : 7 modèles CC0, « Witch » et « Worker » en CC BY 3.0) repeint par Qwen-Image 2.1"
    },
    {
     "fichier": "data/video-ia/video/film_previz_gris_prof.jpg",
     "legende": "Film de 5 min, en cours — la méthode : Blender ne livre qu'une maquette sans textures, en couleurs unies (à gauche, aperçu Workbench) et sa profondeur (à droite, entrée de LTX). Textures, costumes et lumière seront confiés à LTX.",
     "credit": "Previz Blender du projet (personnages 3D de Quaternius : 7 modèles CC0, « Witch » et « Worker » en CC BY 3.0)"
    }
   ]
  },
  {
   "id": "styles-ltx",
   "titre": "Styles : le mouvement de Blender, le style d'une image repeinte (LTX-2.5 + Qwen-Image 2.1)",
   "faits": [
    {
     "fait": "Méthode",
     "valeur": "rue v2 (15 figurants, travelling avant de 5 s), profondeur Blender 832×448, 121 images, en IC-LoRA Union (DVG) ; 4 styles × 2 variantes : a = profondeur + consigne de style, b = la même chose + l'image 1 repeinte par Qwen-Image 2.1 en image de départ ; graine 42, 8 pas, 24 i/s, négatif par NAG 5 / 3,5 / 0,5",
     "source": "animation/video-ia/styles/ltx/sorties/resume_ltx_styles.json ; animation/video-ia/styles/ltx/noyau/ltx_styles.py",
     "nature": "mesure_ici"
    },
    {
     "fait": "Coût LTX par clip",
     "valeur": "37,4 à 37,6 s par pas ; 5,70 à 5,73 min par clip a, 5,96 à 6,09 min par clip b ; mise en route 8,52 min ; session de 56,41 min pour les 8 clips (durée mesurée de bout en bout, autres étapes comprises : ce n'est pas la somme des étapes, ≈ 55,3 min) ; VRAM max 11,82 Go",
     "source": "animation/video-ia/styles/ltx/sorties/resume_ltx_styles.json (clips, etapes, duree_totale_min)",
     "nature": "mesure_ici"
    },
    {
     "fait": "Quota GPU du test de styles",
     "valeur": "87,6 min : 22,8 min Qwen (compteur 2,12 → 2,50 h ; dont l'essai 1, arrêté après 480 s de script, 8,0 min, sans image) + 64,8 min LTX (compteur 2,50 → 2,64 → 3,58 h ; essai 1 : 8,4 min sans clip)",
     "source": "animation/personnages/rendu/quota_apres_v2.txt (2,12 h) ; animation/video-ia/styles/qwen/sortie_essai1/journal.txt ; animation/video-ia/styles/ltx/quota_avant.txt (2,50 h), quota_avant_essai2.txt ; animation/video-ia/continuite/travail/quota_avant.txt",
     "nature": "mesure_ici"
    },
    {
     "fait": "Essai 1 LTX : cause de l'échec",
     "valeur": "processus tué faute de RAM, d'après le commentaire du noyau (déduction : le journal de l'essai 1 a été écrasé) : profondeur en float32 (541 Mo) pendant que le processus Gemma restait actif ; corrigé à l'essai 2 (profondeur en uint8, 135 Mo, et attente de la fin de Gemma)",
     "source": "animation/video-ia/styles/ltx/noyau/ltx_styles.py (commentaire, lignes 782-785) ; journal de workflow wf_8ff9d3d1 (agent ltx)",
     "nature": "mesure_ici"
    },
    {
     "fait": "PSNR de la 1re image générée contre l'image de départ, avant encodage",
     "valeur": "disney b 30,52 dB ; photo b 29,10 ; manga b 28,19 ; cartoon b 24,76 ; clips a (sans image de départ) 9,68 à 13,94",
     "source": "animation/video-ia/styles/ltx/sorties/resume_ltx_styles.json (psnr_img1_vs_image_style_db)",
     "nature": "mesure_ici"
    },
    {
     "fait": "Suivi du mouvement de Blender",
     "valeur": "sur 7 images par clip (i = 1, 21, …, 121), contours de l'image i comparés à ceux des 7 images Blender de mêmes rangs : maximum en j = i 7 fois sur 7 pour les 4 clips b et cartoon a, 6 fois sur 7 pour disney a, manga a et photo a (à i = 41, j = 21 l'emporte de justesse) ; rapport des écarts i/i+2 sur i/i+1 de 1,45 à 1,56 (Blender : 1,59), pas de scintillement",
     "source": "animation/video-ia/styles/ltx/suivi.py et suivi_sortie.txt (sortie recopiée du journal) ; journal de workflow wf_8ff9d3d1 (agent ltx)",
     "nature": "mesure_ici"
    },
    {
     "fait": "Corrélation des contours avec le rendu Blender de même rang, image 1 → image 121",
     "valeur": "clips b : 0,42–0,77 → 0,24–0,38 (ils partent de l'image de départ) ; clips a : 0,22 à 0,31, stable ; repère : 0,384 entre deux images de Blender distantes de 30",
     "source": "animation/video-ia/styles/ltx/sorties/mesures_clips.json",
     "nature": "mesure_ici"
    },
    {
     "fait": "Notes du relecteur (réalisateur), clips de styles",
     "valeur": "photo b 8 ; disney b 7 ; manga b 7 ; cartoon b 7 ; photo a 7 ; disney a 4 ; manga a 3,5 ; cartoon a 3,5",
     "source": "journal de workflow wf_8ff9d3d1 (relecture du réalisateur)",
     "nature": "jugement"
    },
    {
     "fait": "Défauts relevés à la relecture",
     "valeur": "sans image de départ : style absent, figurants clonés en beige (photo a : photoréaliste mais monotone) ; avec image : pseudo-lettres « CA » sur les enseignes (signe de Tanit lu comme des lettres par Qwen), bras nus et chapeau conique dans disney b, passant peint de face qui se retourne en ≈ 0,5 s (images 1 à 13) ; entrant du premier plan gauche (images 90 à 121) flou, en traînées ou avec des filaments noirs",
     "source": "journal de workflow wf_8ff9d3d1 (relecture du réalisateur)",
     "nature": "jugement"
    },
    {
     "fait": "Contre-contrôle",
     "valeur": "8 MP4 conformes (H.264, 832×448, 24 i/s, 121 images, sans piste audio) ; minutes par clip identiques au journal de session ; images de départ envoyées = versions recalées (md5 identiques) ; entrées issues de la rue v2 ; Disney garde un dédoublement de 10 à 20 px sur les figurants après recalage",
     "source": "journal de workflow wf_8ff9d3d1 (contre-contrôle)",
     "nature": "mesure_ici"
    }
   ],
   "medias": [
    {
     "fichier": "data/video-ia/video/styles_photo_b.mp4",
     "legende": "Photo documentaire, profondeur + image (8/10). 832×448, 5 s, muet.",
     "credit": "Généré par LTX-2.5 à partir d'une previz Blender du projet (Quaternius : 7 modèles CC0, « Witch » et « Worker » en CC BY 3.0) et d'une image Qwen-Image 2.1"
    },
    {
     "fichier": "data/video-ia/video/styles_cartoon_b.mp4",
     "legende": "Cartoon 2D, profondeur + image (7/10). 832×448, 5 s, muet.",
     "credit": "Généré par LTX-2.5 à partir d'une previz Blender du projet (Quaternius : 7 modèles CC0, « Witch » et « Worker » en CC BY 3.0) et d'une image Qwen-Image 2.1"
    },
    {
     "fichier": "data/video-ia/video/styles_manga_b.mp4",
     "legende": "Manga, rendu en anime façon Ghibli, profondeur + image (7/10). 832×448, 5 s, muet.",
     "credit": "Généré par LTX-2.5 à partir d'une previz Blender du projet (Quaternius : 7 modèles CC0, « Witch » et « Worker » en CC BY 3.0) et d'une image Qwen-Image 2.1"
    },
    {
     "fichier": "data/video-ia/video/styles_disney_b.mp4",
     "legende": "Disney/Pixar 3D, profondeur + image (7/10). 832×448, 5 s, muet.",
     "credit": "Généré par LTX-2.5 à partir d'une previz Blender du projet (Quaternius : 7 modèles CC0, « Witch » et « Worker » en CC BY 3.0) et d'une image Qwen-Image 2.1"
    },
    {
     "fichier": "data/video-ia/video/styles_cartoon_a.mp4",
     "legende": "Cartoon demandé, profondeur seule (3,5/10) : style absent. 832×448, 5 s, muet.",
     "credit": "Généré par LTX-2.5 à partir d'une previz Blender du projet (Quaternius : 7 modèles CC0, « Witch » et « Worker » en CC BY 3.0)"
    },
    {
     "fichier": "data/video-ia/video/styles_*_affiche.jpg",
     "legende": "Affiches des 5 vidéos : image 60 de chaque clip.",
     "credit": "Images tirées des clips ci-dessus"
    },
    {
     "fichier": "data/video-ia/video/styles_planche_image60.jpg",
     "legende": "Image 60 de chaque clip : rendu Blender et profondeur, puis par style l'image Qwen (note de l'agent qui l'a faite), le clip a et le clip b (notes de la relecture du réalisateur). 1600×1594.",
     "credit": "Rendu Blender du projet (Quaternius : 7 modèles CC0, « Witch » et « Worker » en CC BY 3.0), Qwen-Image 2.1, LTX-2.5"
    },
    {
     "fichier": "data/video-ia/video/styles_disney_retournement.jpg",
     "legende": "disney b, images 1, 4, 7, 10 et 13 : le passant peint de face par Qwen se retourne.",
     "credit": "Généré par LTX-2.5 (previz Blender du projet, Quaternius : 7 modèles CC0, « Witch » et « Worker » en CC BY 3.0)"
    },
    {
     "fichier": "data/video-ia/video/styles_entrant_image121.jpg",
     "legende": "Image 121, bord gauche, clips b photo, manga et cartoon : l'entrant flou ou en traînées.",
     "credit": "Généré par LTX-2.5 (previz Blender du projet, Quaternius : 7 modèles CC0, « Witch » et « Worker » en CC BY 3.0)"
    }
   ]
  },
  {
   "id": "continuite-ltx",
   "titre": "Continuité : trois clips enchaînés dans la même scène (LTX-2.5)",
   "faits": [
    {
     "fait": "Méthode",
     "valeur": "241 images (10 s) de la rue v2, profondeur 832×448 à bornes fixes ; jointures après les images 81 et 161 ; M1 trois clips indépendants ; M2 dernière image du clip précédent en image de départ ; M3 continuation avec 17 images reprises (fenêtres 1-81, 65-161, 145-241) ; M4 une seule fenêtre de 241 images (témoin) ; même consigne, graine 42, 8 pas, NAG 5 / 3,5 / 0,5 ; clip 1-81 commun à M1, M2 et M3",
     "source": "animation/video-ia/continuite/sorties/sorties/resume_continuite.json ; animation/video-ia/continuite/noyau/ltx_continuite.py",
     "nature": "mesure_ici"
    },
    {
     "fait": "Appels Wan2GP (commit 2345ae1)",
     "valeur": "tous : generate(frame_num, input_frames = profondeur, video_prompt_type « DVG ») ; M2 : + image_start ; M3 : + input_video (17 images) et prefix_frames_count = 17, latentes 0 à 2 figées, profondeur sur les 80 images neuves",
     "source": "journal de workflow wf_c56ffc7d (agent ltx, contre-contrôle)",
     "nature": "mesure_ici"
    },
    {
     "fait": "Coût GPU par méthode",
     "valeur": "M4 10,96 min (64,2 à 65,1 s par pas, VRAM max 10,6 Go, RAM libre 4,2 Go) ; M1 et M2 14,57 min ; M3 15,55 min (4,86 + 5,36 + 5,33) ; mise en route 7,36 min ; session 55,39 min",
     "source": "animation/video-ia/continuite/sorties/sorties/resume_continuite.json",
     "nature": "mesure_ici"
    },
    {
     "fait": "Quota GPU du test de continuité",
     "valeur": "compteur 3,58 → 4,51 h, soit 55,8 min (±0,6 min, affichage au centième d'heure)",
     "source": "animation/video-ia/continuite/travail/quota_avant_gpu.txt, quota_apres_gpu.txt",
     "nature": "mesure_ici"
    },
    {
     "fait": "Saut à la jointure (résidu après compensation du mouvement, flux DIS, divisé par la variation normale)",
     "valeur": "M1 ×12,61 et ×8,67 ; M2 ×1,79 et ×1,34 ; M3 ×1,91 et ×1,65 ; M4, sans jointure, aux mêmes paires ×1,24 et ×1,10 ; variations normales 2,007 / 1,765 / 1,970 / 1,760 (niveaux sur 255)",
     "source": "animation/video-ia/continuite/mesures_raccords.json",
     "nature": "mesure_ici"
    },
    {
     "fait": "Couleur à la jointure (ΔE2000, 8 images avant contre 8 après)",
     "valeur": "M1 2,99 et 4,06 ; M2 0,15 et 0,50 ; M3 0,20 et 0,36 ; M4 0,51 et 0,14 ; ΔE normal médian 0,35 à 0,41, p90 0,69 à 1,06",
     "source": "animation/video-ia/continuite/mesures_raccords.json",
     "nature": "mesure_ici"
    },
    {
     "fait": "Mouvement et rang de la jointure",
     "valeur": "flux médian à la jointure / voisines : M1 ×7,73 et ×5,82 ; M2 ×0,89 et ×0,89 ; M3 ×1,03 et ×0,89 ; M4 ×0,94 et ×1,02 ; rang parmi 240 paires : M1 1 et 2, M2 1 et 9, M3 1 et 2, M4 7 et 42",
     "source": "animation/video-ia/continuite/mesures_raccords.json",
     "nature": "mesure_ici"
    },
    {
     "fait": "Netteté par clip (variance du Laplacien, médiane, clips 1-81 / 82-161 / 162-241)",
     "valeur": "M1 284 / 235 / 275 ; M2 285 / 154 / 152 ; M3 285 / 221 / 247 ; M4 237 / 198 / 269",
     "source": "animation/video-ia/continuite/mesures_raccords.json (nettete)",
     "nature": "mesure_ici"
    },
    {
     "fait": "Fidélité du décor à la profondeur, images 82 à 161 (corrélation des contours)",
     "valeur": "M3 0,140 ; M2 0,157 ; M1 0,190 ; meilleur décalage temporel −3 à 0 image pour toutes les méthodes (M4 −1 à 0)",
     "source": "journal de workflow wf_c56ffc7d (contre-contrôle)",
     "nature": "mesure_ici"
    },
    {
     "fait": "Fondu sur le recouvrement de M3 (test local, sans GPU)",
     "valeur": "saut ×1,97 et ×1,73 sans fondu ; ×1,14 et ×0,97 avec 8 images ; ×1,12 et ×0,95 avec 16 images (le script lit les clips bruts — clip C1 et fenêtres 2 et 3 —, pas M3_241i.mp4 réencodé ; variation normale 1,932, médiane hors des 31 paires autour de chaque jointure)",
     "source": "animation/video-ia/continuite/scripts/fondu_recouvrement.py (sortie du 28/09/2026, journal de workflow wf_c56ffc7d, relecture)",
     "nature": "mesure_ici"
    },
    {
     "fait": "Contre-contrôle",
     "valeur": "4 × 241 images, H.264 832×448, 24 i/s, sans audio ; M3 : images reprises = images 65 à 81 de C1 (écart 3,2 à 4,0 ; 7,5 à 8,5 décalées d'une image) ; M2 : image 0 du clip 2 = image 81 de C1 (3,63 contre 8,48) ; montages retrouvés à 1,3 près ; rapports, rangs et ΔE recalculés à l'identique",
     "source": "journal de workflow wf_c56ffc7d (contre-contrôle)",
     "nature": "mesure_ici"
    },
    {
     "fait": "Notes du relecteur (réalisateur), plan de 10 s",
     "valeur": "M4 7 ; M3 6 ; M2 5 ; M1 3 (en plan continu ; chaque clip seul ≈ 6,5)",
     "source": "journal de workflow wf_c56ffc7d (relecture du réalisateur)",
     "nature": "jugement"
    },
    {
     "fait": "Défauts relevés à la relecture",
     "valeur": "M2 et M3 : arcades de la profondeur (images ≈ 100 à 241) remplacées par un mur plein ; M2 : murs cireux, montre-bracelet (images 161 à 205), objet jaune en forme de momie (197 à 205) ; M1 : coupe franche (décor, soleil, passants) ; M4 : ciel blanc surexposé alors que C1, même graine et même consigne, a un ciel bleu",
     "source": "journal de workflow wf_c56ffc7d (relecture du réalisateur) ; animation/video-ia/continuite/revue_realisateur/",
     "nature": "jugement"
    },
    {
     "fait": "Recette retenue pour le film et estimation de coût",
     "valeur": "jusqu'à 10 s une fenêtre (M4) ; au-delà, fenêtres de 241 images en M3 (17 reprises) + fondu de 8 images ; jamais M1 dans une scène, pas de M2 ; à tester : fenêtres de 361 et 481 images. Estimation : ≈ 1,1 min de GPU par seconde de film ; 300 s ≈ 6,5 à 7,5 h pour une prise de chaque plan, 13 à 15 h avec deux prises (832×448, hors montée en résolution)",
     "source": "journal de workflow wf_c56ffc7d (relecture du réalisateur) ; calcul à partir de resume_continuite.json",
     "nature": "jugement"
    }
   ],
   "medias": [
    {
     "fichier": "data/video-ia/video/continuite_4_methodes.mp4",
     "legende": "Les 10 s, quatre méthodes en grille 2 × 2 (M1, M2 / M3, M4), repère « RACCORD » après chaque jointure. Première des deux lectures de comparaison_continuite.mp4 (241 images), réduite en 960 px, étiquette « lecture 1/2 » masquée ; muet.",
     "credit": "Généré par LTX-2.5 à partir de la profondeur d'une previz Blender du projet (Quaternius : 7 modèles CC0, « Witch » et « Worker » en CC BY 3.0)"
    },
    {
     "fichier": "data/video-ia/video/continuite_ralenti.mp4",
     "legende": "Images 70 à 93 et 150 à 173 au quart de la vitesse. Réduit en 960 px, muet.",
     "credit": "Généré par LTX-2.5 (previz Blender du projet, Quaternius : 7 modèles CC0, « Witch » et « Worker » en CC BY 3.0)"
    },
    {
     "fichier": "data/video-ia/video/continuite_m3_fondu.mp4",
     "legende": "M3 avec fondu sur le recouvrement — variante à 16 images (la variante retenue, 8 images, mesure pareil). 832×448, muet.",
     "credit": "Généré par LTX-2.5 (previz Blender du projet, Quaternius : 7 modèles CC0, « Witch » et « Worker » en CC BY 3.0), fondu calculé en local"
    },
    {
     "fichier": "data/video-ia/video/continuite_m4.mp4",
     "legende": "M4, une seule fenêtre de 241 images (7/10). 832×448, muet.",
     "credit": "Généré par LTX-2.5 (previz Blender du projet, Quaternius : 7 modèles CC0, « Witch » et « Worker » en CC BY 3.0)"
    },
    {
     "fichier": "data/video-ia/video/continuite_*_affiche.jpg",
     "legende": "Affiches des 4 vidéos.",
     "credit": "Images tirées des vidéos ci-dessus"
    },
    {
     "fichier": "data/video-ia/video/continuite_planche_raccords.jpg",
     "legende": "Images 80 | 82 et 160 | 162 de chaque méthode, mesures en marge.",
     "credit": "Généré par LTX-2.5 (previz Blender du projet, Quaternius : 7 modèles CC0, « Witch » et « Worker » en CC BY 3.0)"
    },
    {
     "fichier": "data/video-ia/video/continuite_arcades_image201.jpg",
     "legende": "Image 201 : profondeur Blender (arcades à droite), M4 (arcades rendues), M3 et M2 (mur plein).",
     "credit": "Previz Blender du projet (Quaternius : 7 modèles CC0, « Witch » et « Worker » en CC BY 3.0) et LTX-2.5"
    }
   ]
  }
 ],
 "desaccords": [
  "Marge mémoire du DiT sur un T4 : 0,4 Gio (nvidia-smi, sorties/essai-3/mesures.json) et non 0,7 Gio (premier rapport, calcul sans le cache de l’allocateur).",
  "Scène de Carthage 1664×928, 20 pas : 126,1 s (journal Kaggle brut) et non 130 s (note de travail).",
  "Recadrage des transferts de style à 768 : ×1,12 en anime et en 3D, sur la photo du Forum seulement (corrélation de contours), et non ≈ 5 % partout (premier rapport).",
  "« Bug à 1024 » de l’édition : requalifié en rejeu du bruit (même graine, même taille) ; voir diffusers #14824.",
  "Parallaxe, temps par carte : 1,96 et 1,99 s en régime (journal) contre 1,94 et 2,00 s (mesures.json) ; on garde le journal.",
  "Licences des personnages Quaternius : 7 modèles en CC0, mais « Witch » et « Worker » (femme) en CC BY 3.0 sur Poly Pizza (vérifié le 27 et le 28/09/2026), alors que les notes de travail disaient CC0 pour les 9.",
  "A3 hors masque : 99,6 dB sur les tableaux avant encodage (resume_wan_essai1.json), ≈ 40,4 à 40,8 dB sur le MP4 livré ; c’est la valeur MP4 qui est publiée.",
  "A2, ancrage : 33,5 / 29,3 dB sur les tableaux, 33,0 / 29,4 dB sur le MP4.",
  "LTX, secondes par pas : les moyennes s_par_pas de resume_ltx.json sont faussées par des rappels courts ; le régime lu dans pas_s est ≈ 17-18 / 45 / 19 / 35 s pour B1 / B2 / B3 / B4.",
  "Temps de Wan annoncé par la recherche comme « mesuré » : c’était une annonce de notebook sans journal d’exécution.",
  "Quota total : ≈ 9,2 h au 28/09/2026, test de styles LTX compris (64,8 min, styles/ltx/quota_avant*.txt et continuite/travail/quota_avant.txt), et non ≈ 8,1 h (première rédaction, arrêtée aux images de départ Qwen).",
  "Test de styles LTX : terminé (8 clips, resume_ltx_styles.json : fin le 27/09 à 23:12, clips rapatriés le 28/09), et non « tourne encore » ; test de continuité poussé le 28/09 à 01:56, et non le 27/09.",
  "Vitesse de Qwen en 1664×928, 20 pas : mesurée (137,0 s de débruitage, 144,8 s au total, tests/mesures.json), alors que la première rédaction affichait « — ».",
  "Transferts de style : 4 styles (anime, cartoon, 3D, aquarelle), 9 images T_* (styles/sorties/essai-1/resume_styles.json), et non 5 styles.",
  "Retouche sous masque 02c : 11,7 hors zone (edition/sorties/essai-2/mesures.json) et non 11,6 (relecture) ; 02d : 16,0 hors zone dans le fichier, 17,7 à 18,8 sur les seules colonnes du fond (relecture).",
  "Édition : 22 éditions (11 + 7 + 4) plus 1 portrait généré, et non « 23 éditions » ; « 33 styles » désignait 33 images pour 12 styles.",
  "Saturation de l'édition 09_edit_foule : 0,152 → 0,345 (remesure de relecture, rapport/donnees.json) contre 0,154 → 0,346 (agent de génération) ; la valeur n'est pas dans tests/mesures.json.",
  "Installation pip : 178 à 194 s sur les 4 sessions (essais 1 à 3 et tests, journal.txt), et non 184 à 194 s.",
  "Dérive de caméra LTX : SSIM 0,97 (image 1) → 0,35 (image 121) pour B1 et 0,99 → 0,31 pour B2 ; les 0,61 et 0,70 publiés d'abord étaient les valeurs aux images 13 et 25.",
  "Recalage des images de départ : de −0,9 à +2,2 % en largeur (retenues.json, sx 0,9913 à 1,0221), et non 0,3 à 2,2 %.",
  "Premier essai des images de départ Qwen : 480 s = 8,0 min (styles/qwen/sortie_essai1/journal.txt), et non 8,4 min (estimation d'agent).",
  "Blender, secondes par image et par T4 : moyennes par scène 1,97 à 3,41 s (mesures.json) ; 3,44 était une valeur par carte (rue v1), le maximum par carte est 3,49 (rue v2, GPU 0).",
  "Restylisation image par image : 41,6 s par image avec les deux T4 ensemble (DiT réparti 16 + 16 blocs), pas par carte.",
  "Arène Artificial Analysis : les scores 1 218 / 1 035 attribués à LTX-2.5 sont ceux de l'entrée « LTX-2.5 Fast » (Pro : 1 209 / 1 006) ; l'équivalence avec le modèle distillé ouvert n'est pas vérifiée.",
  "Previz du film : l'aperçu Workbench est en couleurs unies, sans texture, et non « gris ».",
  "B2 : publié sans sa piste son, qui n'a pas été écoutée par un humain.",
  "Notes des clips de styles : la relecture du réalisateur est retenue (photo b 8, disney b 7, manga b 7, cartoon b 7, photo a 7) ; l'agent qui a tourné les clips notait 8,5 / 8 / 7,5 / 7,5 / 7,5 (journal wf_8ff9d3d1, agent ltx). La planche publiée (styles_planche_image60.jpg) est refaite avec les notes de relecture ; la planche d'origine (planche_styles_image060.png) porte les premières.",
  "Continuité, M3 : saut ×1,91 et ×1,65 dans mesures_raccords.json (M3_241i.mp4 réencodé ; variation normale = médiane des 238 paires internes, 1,97) ; ×1,97 et ×1,73 dans le test de fondu, qui lit les clips bruts (résidu à la jointure 3,81 et 3,34, contre 3,758 et 3,26 sur le fichier réencodé) et prend sa normale hors des 31 paires autour de chaque jointure (1,932). La base seule donnerait ×1,95 et ×1,69 ; le reste vient des clips bruts. Le tableau publie les premiers ; l'effet du fondu est donné avec les seconds, sur la même base.",
  "Continuité : la mesure brute du noyau (écart sans compensation du mouvement) donnait M2 et M3 entre ×1,07 et ×1,28 (resume_continuite.json) ; la mesure compensée (mesures_raccords.json) les met à ×1,34–×1,91 et révèle un frémissement d'une image. La compensée est retenue.",
  "Continuité : le fichier M3_fondu_recouvrement.mp4 contient la variante à 16 images de fondu (fondu_recouvrement.py n'écrit la vidéo que pour k = 16), alors que le rapport de relecture l'annonce comme la variante à 8 ; les deux mesurent pareil (×1,12 / ×0,95 contre ×1,14 / ×0,97). Publié avec la bonne légende.",
  "Continuité, coût de M3 : +10 % par fenêtre (5,36 contre 4,86 min), mais +6,7 % sur l'ensemble (15,55 contre 14,57 min) — contre-contrôle wf_c56ffc7d.",
  "Continuité, netteté de M2 : « 35 à 45 % de détail en moins » se lit par rapport à M1 sur les mêmes clips (154 et 152 contre 235 et 275) ; par rapport au premier clip de M2 (285), la baisse est de 46 à 47 %.",
  "Voix off, résolu : 0,59 $ est la dépense totale lue au compteur de crédits OpenRouter (12,48 → 13,0691 $, journal wf_2e4faedb) — essais des 3 voix, 53 phrases, phrases régénérées et contrôle par transcription Gemini ; 0,405 $ (scenario.json, voix_off.cout_usd ; ≈ 0,41 $ dans scenario.md) est le prix des seuls 4 051 caractères du texte final. La page publie les deux.",
  "Test de styles LTX : clips générés le 27/09/2026 de 22:15 à 23:12 (resume_ltx_styles.json, debut / fin), rapatriés et relus le 28/09 ; la première rédaction du relevé disait « sortis le 28/09 ».",
  "Suivi du mouvement dans les clips de styles : le test porte sur 7 images par clip (1, 21 … 121), et non sur « chaque image générée » (première rédaction de la page) ; le chiffre n'est pas dans mesures_clips.json mais dans la sortie de suivi.py, recopiée dans styles/ltx/suivi_sortie.txt.",
  "Qwen, images de départ des styles : les 22,8 min viennent du compteur de quota (2,12 → 2,50 h), et non du journal de l'essai 2 ; les 8,0 min de l'essai 1 sont la durée du script (480 s).",
  "Styles : « sans image de départ, le style disparaît » vaut pour les styles dessinés (Disney, manga, cartoon) ; photo a reste photoréaliste (7/10). Première rédaction corrigée dans le bloc clé, l'accueil et le résumé de rubrique.",
  "Voix off : 285,3 s = durée des 10 pistes de séquence, pauses entre phrases comprises (duree_narration_s) ; 262,6 s = parole seule (scenario.md).",
  "Scénario : la v2 du 28/09 (10 séquences, 14 prises, la plus longue 52 s, 686 mots) remplace la v1 d'abord publiée (12 prises, 53 s, 678 mots).",
  "Quota total : ≈ 10,1 h, par le compteur (5,58 + 4,51 = 10,09 h) comme par la somme des familles (607,4 min = 10,12 h) ; et non ≈ 9,2 h (état du 28/09 avant la continuité)."
 ]
}
