Que fait FilmForge Contrôle d'Image ?
Rien n'entre dans le film sur une vignette. Chaque peinture est lue à pleine taille par rapport à ses fiches, mesurée par les outils, notée et se voit attribuer l'un des trois verdicts suivants. Le verdict indique toujours ce qui se passe ensuite et son coût : accepter (gratuit), corriger dans le code (gratuit, avec l'appel exact) ou repeindre (2,75 crédits, avec l'invite corrigée).
Chemins : les dossiers scripts/, templates/ et config/ ci-dessous sont des dossiers à l'intérieur de cette compétence (le répertoire de base affiché lors de son chargement), placés par ./install.sh. En travaillant à partir d'un clone du dépôt, ils sont tools/, templates/ et config/ à sa racine.
Procédure
- Planche contact du lot, pour le voir comme une séquence (les voisins se coupent-ils ensemble ?) :
python3 scripts/contact_sheet.py build art/film --shotlist shotlist.yaml --out out/contact_sheet.jpg - Vue complète de chaque peinture (lire l'image elle-même, pas la planche).
- Recadrages à 100 % de ce qui compte : visages, mains, le sujet critique pour l'échelle, tout ce qui est petit.
python3 scripts/contact_sheet.py zoom art/film/s03_x.png --out-dir out/zoom --grid 2x2ou--box x0,y0,x1,y1. Un lecteur d'images réduit les grandes images ; les recadrages montrent les pixels réels. - Mesurer les règles de couleur, la palette et l'exposition :
python3 scripts/ledger.py palette continuity.yaml --paintings art/film --shotlist shotlist.yamlIl signale la palette de chaque peinture, sa distance (delta E) par rapport au script couleur de la scène, la part de chaque règle de couleur interdite dans le cadre et les sauts d'exposition en stops entre les voisins d'une même scène. - Noter selon la grille (ci-dessous) : neuf critères, de 0 à 2.
- Décider le verdict selon les règles ci-dessous.
- Écrire l'entrée dans
qa.yaml(format ci-dessous), puis reconstruire la planche contact avec--qa qa.yamlpour les badges. - Rapporter : le décompte des verdicts, chaque correction et chaque repeint en une ligne, les crédits qu'un repeint coûterait.
Grille d'évaluation (templates/qa-rubric.md contient les ancres de score)
| Critère | Ce que vous vérifiez |
|---|---|
| identité | visages et marqueurs de costume par rapport aux fiches |
| anatomie | mains, yeux, membres sur le sujet principal |
| échelle | chaque verrou d'échelle et chaque décompte (mesurer les pixels dans les recadrages) |
| style | le verrou d'apparence : médium, trait, couleur, texture |
| couleur | le script couleur et les règles interdites (depuis ledger.py palette) et l'exposition par rapport aux voisins |
| continuité | chaque accessoire et état que le registre liste pour ce plan, et rien en dehors de sa portée |
| narration | le battement se lit en deux secondes |
| composition | cadrage tel que listé, l'œil atterrit sur le sujet, la zone de texte calme |
| propreté | pas de texte peint, filigrane, bavure ou figure parasite |
Mesurer l'échelle : dans un recadrage, mesurer le sujet et sa référence en pixels et comparer le rapport avec le verrou d'échelle. L'exemple du moteur : la phalène couvre 20 px sur un doigt de 60 px, alors que son verrou indique une main entière ouverte (120 px ou plus à ce cadrage) : un sixième de sa taille, échelle 0, repeindre.
Règles de verdict
- accepter : aucun critère à 0, total de 15 sur 18 ou plus, aucune violation mesurée.
- corriger : chaque défaut a une correction dans le code (tableau ci-dessous) et rien à 0 sur identité, échelle ou narration.
- repeindre : identité, échelle ou narration à 0 ; anatomie à 0 sur le sujet principal ; style à 0 ; ou trois défauts ou plus.
Corriger dans le code avant les crédits (modules de painted-film-pipeline)
| Défaut | Module et appel |
|---|---|
| un objet dans une teinte erronée (une écharpe qui fait passer un personnage secondaire pour le héros) | grade.py IN OUT recolor:x0:y0:x1:y1:lo:hi:new_hue:sat |
| une couleur interdite qui fuit (du bleu avant la fin) | grade.py IN OUT blue:0.3 (tire la bande vers l'argent ; keep=0.3) ou recolor vers une teinte autorisée |
| une figure parasite dans une zone propre | un patch provenant d'une région propre décalée (le motif fix_s22.py) |
| mauvais recadrage, tangente, mauvaise marge haute | le crop: [x0, y0, x1, y1] du plan en pixels source |
| exposition ou contraste décalé par rapport aux voisins | automatique : la correspondance de niveau mappe la luminance aux 0,5 et 99,5 centiles de chaque plan vers des cibles partagées |
| détail doux | automatique : suréchantillonnage Lanczos 4K avec netteté uniquement sur les bords |
| une image sans vie | mouvement dans le code (forge-motion), jamais un repeint |
Chaque correction écrit un nouveau fichier (_g), est remesurée et reçoit done: true uniquement lorsque la mesure passe.
Détails et significations des paramètres : references/code-fixes.md.
Repeindre : diagnostiquer, puis corriger
Nommer la cause comme un emplacement d'invite ou une référence : « verrou d'échelle manquant dans l'emplacement 4 », « fiche attachée dans le mauvais ordre », « apparence paraphrasée ». Écrire l'invite corrigée en entier, vérifier le budget et la transmettre à forge-painter. Si la cause affecterait d'autres plans (un verrou manquant dans le registre), le dire : il s'agit d'un changement de moteur, pas d'un seul repeint.
Format d'entrée qa.yaml
- shot: s02
file: art/film/s02_last_match.png
checked: [cadre complet, zoom 2x2 à 100 %, palette ledger]
scores: {identité: 1, anatomie: 2, échelle: 2, style: 2, couleur: 0, continuité: 2, narration: 2, composition: 2, propreté: 2}
total: 15
max: 18
measured: {no_gold_pct: 4.4, script_dE: 5}
verdict: corriger
notes: Une lueur dorée de l'allumette couvre 4,4 % du cadre (la règle autorise 2 % avant s05) et teinte la capuche.
fix:
problem: lueur dorée, teinte 38 à 58
module: painted-film-pipeline pipeline/grade.py (recolor)
call: python grade.py s02_last_match.png s02_last_match_g.png recolor:250:250:700:650:38:58:22:0.8
params: {box: [250, 250, 700, 650], hue_band: [38, 58], new_hue: 22, sat: 0.8}
why_not_repaint: une bande de teinte dans une boîte
verify: ledger.py palette montre no-gold sous 2,0 % sur le fichier _g ; la capuche se lit rouge à 100 %
done: false
Une entrée de repeint a repaint: {cause, prompt_changes, credits, corrected_prompt} au lieu de fix.
Résultats concrets de productions réelles
- Échelle (repeint) : cinq images Simorgh ont dessiné la huppe trop petite à côté de la fille (s21, s25, s33, s36, s39). Le code ne peut pas agrandir un sujet peint de manière convaincante ; elles ont été programmées pour un repeint à sa vraie taille, et la cause (aucun rapport d'échelle dans les invites ou sur les fiches) est devenue une règle moteur.
- Couleur (corriger) : du bleu s'est glissé dans les images avant la fin ; un tirage de bande vers l'argent les a corrigées dans le code.
- Identité par couleur (corriger) : l'écharpe d'un personnage secondaire correspondait à la couleur du héros, donc il se lisait comme elle ; un recolor de bande de teinte à l'intérieur d'une boîte l'a déplacée.
- Figure parasite (corriger) : une figure peinte supplémentaire dans une image calme a été supprimée par patch à partir de régions propres décalées.
- La porte du livre d'images : les visages correspondent aux références ; le bon aspect et les couleurs du script couleur ; la zone de texte vraiment calme ; le motif de la page présent ; cela vous fait ressentir la ligne de texte qu'il accompagne. Un échec, refait.
Ne jamais
- Accepter à partir d'une vignette ou d'une planche contact seule.
- Repeindre ce que le code peut corriger, ou « corriger » dans le code ce qui rend l'histoire incorrecte.
- Laisser passer une peinture dont la règle mesurée échoue, même si elle semble correcte.
Liste de vérification de porte (pour le lot)
- Chaque peinture lue à pleine taille, avec recadrages des visages, mains et sujets critiques pour l'échelle
-
ledger.py paletteexécuté ; chaque erreur expliquée dans un verdict - Chaque peinture a une entrée qa.yaml avec scores, verdict et action suivante
- Planche contact reconstruite avec badges et examinée
Références
references/code-fixes.md: les paramètres de chaque correction, comment les choisir et comment vérifier