Animer une image fixe : trois méthodes

la mesure. rue de Carthage · 2026-09-25 · Kaggle 2 × T4 + Blender 5.1 · 3 méthodes · 0 €

Une rue de marché de Carthage vers 200 av. J.-C., peinte par Qwen-Image 2.1. Il faut la faire bouger pour une vidéo : la découper en plans, la reconstruire en 3D, ou repeindre chaque image d'un rendu. Les trois ont tourné du premier coup ; aucune n'est diffusable telle quelle.

run
calques, rendu, restylisation
date
2026-09-25
machine
Kaggle 2 × T4 · Blender 5.1.1
durée
103 min de GPU
coût
0 €
journal
releve.json
méthodes par image et par T4GPUnotedéfaut principal
parallaxe 2,5D1,9712 min à elles deux6/10bords de calques, foule figée
rue 3D par script2,984/10maquette de jeu
repeint image par image41,6 (2 T4)43 min3/10scintillement

Temps : Cycles OptiX en 1920×1080, 16 échantillons + débruitage, pour les deux premières ; édition Qwen en 1024×576 pour la troisième, qui occupe les deux T4 à la fois (DiT réparti 16 + 16 blocs) : par carte, compter le double. Les deux rendus ont partagé un noyau de 11,5 min (0,20 h de quota). Les notes sont celles du relecteur : des jugements, pas des mesures. Sources : rendu/kaggle_sortie/mesures.json, style/kaggle_sortie/mesures.json.

1. De la peinture aux calques

La parallaxe demande des plans séparés : ciel, lointain, maisons, marché, premier plan. Qwen-Image 2.1 sait sortir une image transparente ; on lui a donc d'abord demandé les calques directement.

Demandé seul en RGBA, le calque « marché » garde 87,8 % de pixels opaques : seul le ciel devient transparent, le modèle rend une scène complète. L'extraction par édition (« garde seulement X, le reste transparent ») ne vaut pas mieux (2/10) : le fond, censé être opaque, sort transparent à 62,7 %.

animation/assets/journal-kaggle/journal.txt

Scène de marché complète sur fond transparent, au lieu d'un calque isolé

Le calque « marché » demandé seul : une scène entière. Image générée par Qwen-Image 2.1.

Les cinq calques extraits par édition, recomposés, avec des trous violets

Les 5 calques extraits par édition, recomposés : le violet montre les trous. Ce qui est enlevé devient transparent, rien n'est reconstruit.

Ce qui marche : générer une seule scène, puis la découper sur le CPU de Kaggle, sans quota GPU. Profondeur par Depth Anything V2 Small (10,3 s), segmentation par Mask2Former ADE20K (5,4 s), trous bouchés par LaMa : 96,6 s par scène. Les 5 calques (17, 10, 34, 24 et 14 % des pixels) empilés redonnent la scène à 0,03/255 près.

animation/assets/journal-kaggle/decoupe.json

Carte de profondeur en niveaux de gris et partition de la scène en cinq zones colorées

Profondeur (clair = proche) et partition en 5 calques : fond, lointain, maisons, marché, premier plan. Scène générée par Qwen-Image 2.1, découpe Depth Anything V2 et Mask2Former.

Le calque des maisons seul, avec des silhouettes floues là où se tenait la foule

Le calque des maisons vu seul : ce que cachait la foule est bouché par LaMa en silhouettes floues, invisibles aux décalages testés.

La scène recomposée avec les calques décalés, une bande grise au bord droit

Calques décalés de 4, 14, 26 et 48 px sur 1 664 : aucun trou dans la scène. La bande grise du bord droit dit d'agrandir chaque plan d'au moins 6 %.

2. La parallaxe 2,5D 6/10

Les 5 calques posés à 150, 55, 22, 11 et 5,5 m d'une caméra de 40 mm qui avance de 1,2 m en 10 s. Rendu Blender de ce projet, peinture Qwen-Image 2.1. Muet.

La marge commune, calculée en lançant les rayons des 4 coins du cadre sur les 240 images, vaut 1,094 : la caméra voit 91 % de la peinture. Rendu à 1,96 et 1,99 s par image selon la carte ; la luminance moyenne reste entre 120,6 et 125,1, sans saut de plus de 0,24 d'une image à l'autre.

rendu/kaggle_sortie, journal du rendu · relecture (balayage de luminance)

Le calque des maisons a dû être bouché sur 5,6 % de l'image, sinon l'arche découvrait des stries grises à la fin du plan. Ces bouchages se voient en aplats gris sous les auvents dès l'image 1, et la foule reste figée : c'est une photo qui glisse.

rendu/kaggle_sortie, journal du rendu · relecture visuelle

3. La rue 3D construite par script 4/10

36 objets et 77 000 faces écrits en Python, textures Qwen, travelling de 10 m. Rendu Blender de ce projet. Muet.

2,98 s par image et par carte sur Kaggle, soit ≈ 1,5 s avec les deux ; 92,2 s pour une image 1080p sur le processeur du portable (24 échantillons).

rendu/kaggle_sortie/mesures.json · rendu/mesure_1080.log

L'avantage de la 3D : la profondeur est exacte, et la scène se refilme sous tous les angles.

Deux recadrages : mannequins sans visage à gauche, aplat gris sous un auvent à droite

Recadrages 1:1 en 1080p. À gauche, la rue 3D : mannequins sans visage, fanions saturés. À droite, la parallaxe : l'aplat gris sous l'auvent.

4. Repeindre chaque image 3/10 en clip

24 images du travelling (une sur deux), repeintes une à une par l'édition de Qwen en aquarelle puis en cartoon, même graine et même consigne. Prise seule, une image est belle (aquarelle 8/10) ; en clip, elle clignote.

Une image de la rue repeinte en aquarelle, silhouettes drapées

Image 49 repeinte en aquarelle, 16 pas, 41,6 s. Rendu Blender repeint par Qwen-Image 2.1.

clipaquarellecartoon
repeint image par image× 7,9× 12,5
1 image sur 6 + flux optique× 2,6× 3,9
1 image sur 6 + fondu× 7,3× 12,1

Mouvement compensé par le flux optique, l'écart entre deux images successives vaut 1,86 sur l'original et 14,66 en aquarelle repeinte : 7,9 fois plus. Repeindre une image sur six et fabriquer les autres en déformant ces clés selon le flux du rendu divise le scintillement par 3 ; le fondu simple ne sert à rien.

style/kaggle_sortie/mesures.json (post.scintillement)

Témoin trompeur : sans compenser le mouvement, l'aquarelle paraît plus stable que l'original (11,74 contre 12,55), parce qu'elle baisse le contraste. Le cartoon, lui, monte à 22,99.

style/kaggle_sortie/mesures.json

Le même clip de 2 s en quatre versions : rendu 3D, repeint, clés + flux (traits dédoublés à mi-chemin), clés + fondu (images fantômes). Rendu Blender, repeints Qwen-Image 2.1. Muet.

La même comparaison en cartoon : les contours noirs rendent les traits dédoublés très visibles. Muet.

Vingt-quatre vignettes de la rue repeintes en cartoon, le ciel bleuit sur la dernière rangée

Les 24 images repeintes une à une en cartoon : chacune est propre, mais le ciel passe du crème au bleu sur la dernière rangée.

Notes des clips : aquarelle 3/10 repeinte, 5/10 avec clés et flux ; cartoon 2/10, puis 3,5/10. Chaque image est propre, mais le ciel change de teinte et les traits fins se dédoublent.

relecture visuelle

Les multiplicateurs sont rapportés à un résidu de 1,86, petit par construction : ils grossissent. Et l'astuce est mesurée avec la famille de flux qui la fabrique : sa division par 3 est un peu flatteuse. Un gain sûr, en revanche : encoder la consigne une fois et la resservir change l'image de 1,27 seulement, et économise 27 à 29 s par image.

style/kaggle_sortie/mesures.json (controle_consigne_propre)

La leçon : repeindre une image puis l'animer, plutôt que repeindre 240 images. Et pour que la rue vive, il lui fallait de vrais figurants.