Tessera : mise à l'échelle vidéo 4K et 8K par mosaïque pour MiniMax H3

ComfyUI Wikinews

Tessera est un pack de nœuds ComfyUI qui affine les clips MiniMax H3 tuile par tuile en 2K, 4K et 8K, avec conditionnement par tuile et encodage/décodage en flux.

Tessera a été publié le 30 octobre 2026 par hashu786 sous la forme d'un pack ComfyUI de neuf nœuds pour la vidéo MiniMax H3. Il prend une plaque déjà suréchantillonnée, l'affine tuile par tuile et segment par segment jusqu'en 2K, 4K ou 8K, et diffuse en flux l'encodage et le décodage VAE afin que le clip en pixels pleine résolution n'ait jamais à résider en mémoire. Code et flux de travail d'exemple : hashu786/ComfyUI-Tessera.

H3 est performant sur les clips courts en 544p et coûteux au-delà. Les approches existantes pour atteindre une résolution supérieure consistent soit à régénérer l'image à une taille plus grande en acceptant une passe plus lente et moins stable, soit à suréchantillonner les pixels et à perdre du détail. Tessera emprunte une troisième voie : conserver le clip source comme la référence que le modèle comprend déjà, suréchantillonner l'image avec un rééchantillonneur neutre, et laisser H3 restituer chaque tuile de cette plaque sous un conditionnement local exact.

Le pack est livré sous forme de nœuds ComfyUI simples, sans dépendances supplémentaires, en version 1.0.0, et son pyproject.toml contient un bloc [tool.comfy] (DisplayName = "Tessera", PublisherId = "hashu786") destiné à la publication sur Comfy Registry.

La source 544pLe rendu 4x de Tessera
Clip source en 544pRendu 3840x2176 issu de la vidéo promotionnelle du projet

Tuiles ancrées à la plaque, et non les unes aux autres

La façon évidente de raffiner un grand latent par morceaux consiste à parcourir les tuiles dans l'ordre et à laisser chacune hériter de la bordure terminée de ses voisines. L'auteur de Tessera a mesuré pourquoi cela échoue avec H3 : la dérive de recalage s'accumule le long d'une rangée, à +1,5, -2,1, -9,3 et -15,5 px sur quatre tuiles, parce que chaque tuile est conditionnée par la supposition de la tuile précédente au lieu de l'être par la source.

Tessera inverse la dépendance. Chaque tuile est débruitée par rapport à ses propres recadrages de la même vérité terrain :

  • Les références DiT sont recadrées sur la fenêtre de la tuile et mappées sur la grille de latent de cette fenêtre, de sorte que la référence vidéo et la référence d'image optionnelle montrent le correctif de la tuile dans l'image, et non le plan entier.
  • Le texte est réencodé à partir du propre recadrage de la tuile lorsqu'une entrée clip est connectée. Sans cela, le nœud de référence standard transmet l'image entière à Qwen et chaque tuile se voit décrire un sujet qu'elle ne contient peut-être pas, ce que les notes appellent l'échec du sujet fantôme.
  • Les guides restent sur la grille exacte de la plaque, et le nœud échoue immédiatement s'ils ne correspondent pas.

Les tuiles partagent également un champ de bruit global unique plutôt que de tirer un bruit par tuile, et les bandes le long d'une couture sont générées par les deux voisines avec une bande seam_regen de 32 px, puis mélangées par accumulation normalisée par les poids. Deux tuiles ayant toutes deux vu une bande produisent un fondu enchaîné exact d'un rendu à l'autre au lieu d'un mélange fantôme.

La planification comprend une étape de tête et deux étapes de queue

Les sigmas par défaut sont 1.0, 0.7, 0.4, 0.0 : une étape avec la tête turbo distillée, puis deux étapes euler dans la queue fine. Le guide in-band est traité comme un clamp spectral : il n'est donc bruité que pour la queue (guide_release 0.8) au lieu de l'être sur toute l'exécution. La tête décide de la structure avec l'ensemble des indices disponibles, la queue ajoute de la texture en toute liberté, et au moment du passage de relais suffisamment de signal est engagé pour que le contenu ne puisse plus se déplacer.

Mesuré sur le clip de référence de l'auteur, cette combinaison apporte +67 % de détail local par tuile par rapport à la référence à bordure gelée, avec un scintillement proche de celui de la référence initiale, et faire passer le même programme de LMS à euler a donné +56 % de détail tout en réduisant le scintillement d'environ un tiers. Deux étapes de tête donnent un résultat pire, pas meilleur : cela fait converger l'état vers le guide adouci et coûte 21 % de détail, et un modèle turbo distillé franchissant deux fois les sigmas intermédiaires a émis des NaN dans le latent lors d'une exécution mesurée.

Les tuiles sans relief sont ignorées plutôt qu'échantillonnées. Un recadrage de plaque uniforme ne donne au modèle aucun indice et une liberté totale, et l'auteur l'a surpris à peindre le visage de référence dans un ciel vide et de la fumée, pire encore une fois le ré-encodage de texte par tuile activé. flat_skip (par défaut 4.0) conserve la plaque dans ces fenêtres et récupère le temps d'échantillonnage. La décision est prise par tuile et par chunk sur l'énergie des pixels source, puisque deux métriques dans l'espace latent se sont révélées fausses coup sur coup.

Diffuser en flux les parties qui ne tiennent pas

À 4x, un clip de 15 secondes représente environ 36 Go sous forme d'IMAGE ComfyUI en float32, par copie, et le graphique simple en conserve trois copies plus deux encodages du clip entier. Cela provoque une OOM sur n'importe quel GPU, c'est pourquoi Tessera répartit le travail :

  • Streamed Encode met à l'échelle puis encode via VAE la source par fenêtres temporelles sur la grille de blocs 17 px du H3, avec un ré-encodage de préchauffage de 22 px par fenêtre qui est jeté. Sur une exécution validée de 544p à 4K, le pic du tampon de pixels côté encodage était d'environ 5,2 Go, contre 57,6 Go pour la copie du clip entier qui provoquait l'OOM du graphique simple.
  • Streamed Decode assemble la sortie au moyen d'un seul décodage en flux, avec un tampon sauvegardé sur disque au-delà de 4 Go. Une toile 8K de 124 images avait auparavant échoué en allouant 49,7 Go dans le décodage monolithique.
  • Un précontrôle du disque s'exécute avant l'échantillonnage de la première tuile, car le besoin d'espace de travail du décodage est connaissable au moment de la planification. Une exécution d'échantillonnage 8K avait déjà passé 8 heures 49 minutes avant d'échouer à allouer un tampon de 67,6 Go.
  • Assurance anti-crash : si l'étape de sortie échoue malgré tout, le latent raffiné est sauvegardé sous tessera_rescue_<timestamp>.latent et le graphique renvoie tout de même un latent, de sorte que LoadLatent plus le décodeur en flux récupèrent le rendu sans rééchantillonnage.

Les longs clips en mouvement rapide passent par Temporal Dilate / Decimate, qui augmente la fréquence d'images par segment et recale la sortie au retour. Les fenêtres de tronçon sont budgétées en secondes de contenu réel : la dilatation divise le contenu dans chaque fenêtre, donc la fenêtre temporelle évolue avec le facteur de dilatation afin de conserver la même quantité de structure de mouvement par fenêtre. Le planificateur aligne aussi chaque début de fenêtre en milieu de segment sur un multiple de 5 latents, ce qui correspond au propre timing de tokens de H3 (un token de tête puis quatre images par token), après qu'un test de 15 secondes a montré un métronome de scintillement à 17 px dans chaque tronçon mal aligné.

Exécutions mesurées

L'exécution de référence de l'auteur pour le passage de 544p à 4K : un clip de 15 secondes, 617 images dilatées, 18 fenêtres, 24 tuiles réparties sur 3 chunks alignés, 3 heures au total sur un seul GPU. L'oscillation d'une image à l'autre s'est établie à 2,44 % en moyenne et 16,1 % en pic, contre 2,32 % et 12,3 % pour la référence 2x du même clip, sans aucune signature de 17 images restante dans l'autocorrélation.

Exécutions publiées sur le Discord Banodoco le lendemain de la sortie, par des personnes autres que l'auteur :

  • LDWorks David, RTX 6000 Pro avec poids BF16 : 121 images, de 2K à 4K, 84 étapes de refine à environ 32 s/étape, 44 minutes pour atteindre 93 %.
  • seitanism : 1344x768, 362 images, dilatées temporellement à 583 images et rendues en 2688x1536 en 46:58 ; un deuxième clip de 1920x1088 à 3840x2176 en 53:08 ; un troisième avec une image fixe Qwen-Image 2.1 comme image d'ancrage en 27:48. Son verdict : cela ne corrige pas tous les artefacts de mouvement, mais ça tient la route.
  • mdkb, sur une RTX 3060 de 12 Go, l'a testé en le confrontant à son propre budget de 20 minutes et a demandé une recette pour faible VRAM. La réponse de l'auteur : elle est encore à venir, les valeurs par défaut livrées ciblant les cartes à grande VRAM.

Utilisation avec ComfyUI

Installez en clonant le référentiel dans ComfyUI/custom_nodes/. La console de démarrage affiche [Tessera] loaded 9 node(s) lorsque tous les nœuds sont enregistrés.

nœudce qu'il fait
Tessera Tile Planexécution à blanc : grille de tuiles, disposition des lots et coût avant de dépenser du temps GPU
Tessera Streamed Encodesource vers latent de plaque plus conditionnement de guide, par fenêtres temporelles
Tessera Refinele raffineur en mosaïque avec conditionnement par tuile, découpage en lots, tuiles héro, saut des tuiles plates et sortie protégée contre les plantages
Tessera Streamed Decodedécodeur en flux autonome, également la voie de récupération des latents sauvés
Tessera Guide Anchorépisse une image fixe détaillée dans la bande fine du guide, corrigée en décalage et propagée par flux
Tessera Temporal Dilate / Decimatedilatation de la fréquence d'images par segment et re-synchronisation exacte
Tessera Guide Graingrain assorti pour le guide
Tessera Extra Optionsles réglages experts avec les valeurs par défaut validées

Le flux de travail fourni câble le clip source comme référence H3, une plaque Lanczos à l'échelle choisie, un ancrage optionnel sur la première image via Qwen-Image 2.1, et la paire de LoRA que l'auteur utilise comme recette maison (le LoRA de détail LMS du pack H3 d'Alissonerdx et un LoRA turbo en 3 étapes). Il vise un facteur 4 sur une source 544p, pour finir en 3840x2176.

Le panneau Tile Plan

Le nœud Tile Plan dans la vidéo promotionnelle : grille, lots et coût prévu avant une exécution.

Modèles utilisés par l'exemple : MiniMax H3 ref2va (la build int8 élaguée dans la configuration de l'auteur), les VAE vidéo et audio H3, l'encodeur de texte Qwen3-VL, plus le checkpoint optionnel Qwen-Image 2.1 avec son LoRA turbo et son VAE de correction de texture pour l'image d'ancrage. Le flux de travail attend également les packs de nœuds SAM3 et KJ pour les nœuds optionnels de masque héro et d'aperçu.

Limites à connaître

  • L'exemple est câblé pour une seule cible. La taille de sortie attendue et le facteur d'échelle sont des widgets distincts ; les deux doivent correspondre au clip que vous chargez. Un testeur Discord a exécuté le Flux de travail fourni sur un autre clip en s'attendant à un 2x et a obtenu une Toile 4K qu'il a jugée moins bonne que sa source.
  • L'ancre fixe est un outil 2x. À 4x et au-delà, les notes recommandent de la laisser déconnectée et de laisser le modèle générer la tête, car le raccord effectue un fondu enchaîné entre deux rendus différents de la même texture.
  • Le scintillement de la source est hérité. Une source basse résolution dont la bande fine est elle-même instable produit, une fois upscalée, un flottement amplifié : le raffinement porte la cohérence vers environ 0,75 et ne peut pas aller au-delà.
  • Les coupes de Scène sont indicatives. L'oracle de coupe affiche les images qu'il a trouvées et recommande d'y scinder le clip ; les plans courts à l'intérieur d'une même Fenêtre ne peuvent pas satisfaire à la fois la règle de timing de la tête et le budget de temps de contenu.
  • Les seconds sauts entrent à un sigma réduit, par exemple 1.0, 0.923, 0.55, 0.0, et la plaque du second saut doit être la Sortie du premier saut, et non un intermédiaire ré-adouci.

Disponibilité

  • hashu786/ComfyUI-Tessera sur GitHub, avec example_workflows/tessera_upscaler.json et les notes d'ingénierie complètes dans docs/LAWS.md
  • pyproject.toml contient le bloc [tool.comfy] pour le Comfy Registry (DisplayName = "Tessera") ; au moment du scan, le paquet n'y était pas encore répertorié, il faut donc l'installer depuis le référentiel
  • Les images de référence de cet article sont des images issues de la vidéo promotionnelle du projet, qui compare la source 544p au rendu 4x

Commentaires

Connectez-vous avec GitHub pour rejoindre la discussion.

Chargement des commentaires…
Tessera : mise à l'échelle vidéo 4K et 8K par mosaïque pour MiniMax H3 | ComfyUI Wiki