CommunityImagegithub.com

daniil-kzn/image-edit-fidelity

Règles indépendantes du modèle pour générer et modifier des images de personnes et de scènes avec n'importe quel modèle d'image (Qwen-Image, Nano Banana / Gemini Image, GPT Image, Seedream, Flux / Kontext, Kling O3 image, Midjourney, Stable Diffusion et les plus récents). Couvre l'anatomie humaine intacte pour chaque personne (une tête, deux yeux, deux bras, deux jambes, cinq doigts par main, pas de membres partant du dos ou de la poitrine, pas de corps fusionnés), une fidélité stricte aux références attachées (inventaire des personnes, des objets et du décor, ne modifier que ce qui a été demandé), le transfert d'exactement une partie d'une référence à une autre (vêtement, objet, échange de tête : seule la tête est remplacée, rien d'autre), une différence pixel par rapport à la référence avec réparation par collage (ref_diff.py), et une vérification des défauts avant de montrer. À utiliser chaque fois qu'une image est générée ou modifiée avec n'importe quel modèle et qu'elle contient des personnes ou utilise une image de référence (« отредактируй фото », « замени голову », « перенеси куртку с первого фото на второе », « поменяй только фон », « сгенерируй картинку с людьми », « edit this photo », « swap the face », « put this object into that picture »), conjointement avec la compétence propre au modèle si elle existe (par exemple qwen-image-2).

Qu'est-ce que image-edit-fidelity ?

Cette compétence fournit un ensemble de règles universelles, indépendantes du modèle d'IA, garantissant une haute fidélité lors de la génération ou de la modification d'images, en particulier celles contenant des personnes ou utilisant des images de référence. Elle impose une anatomie humaine strictement correcte (une seule tête, deux bras, deux jambes, cinq doigts par main) pour éviter les défauts courants comme les membres supplémentaires ou les corps fusionnés, et exige que seuls les éléments explicitement demandés par l'utilisateur soient modifiés, tout le reste (personnes, objets, éclairage, composition) restant identique à la référence. La compétence prend en charge une large gamme de modèles, de Qwen-Image à Stable Diffusion, et pour chacun, elle dicte l'approche appropriée : utiliser un champ de « negative prompt » lorsqu'il est disponible, ou formuler des instructions positives sans liste d'exclusions lorsque ce champ est absent. Elle inclut également des procédures détaillées pour le transfert d'un élément spécifique (comme un vêtement ou un objet) d'une image source à une image cible, ainsi que pour les échanges de tête, en s'assurant que seul l'élément nommé est déplacé sans altérer le reste de l'image cible. Enfin, elle intègre un outil de vérification par différence pixel (ref_diff.py) qui compare l'image modifiée à la référence, détecte les écarts involontaires et permet de réparer automatiquement les zones qui ont dévié en collant la région modifiée sur l'original.

Compatible avec✓Claude Code~Codex CLI~Cursor✓Gemini CLI
npx skills add https://github.com/daniil-kzn/qwen-image-2-skill/tree/HEAD/image-edit-fidelity

Installed? Explore more Image skills: steipete/songsee, affaan-m/frontend-design, mattpocock/improve-codebase-architecture · View all 6 →

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Fidélité d'édition d'image et anatomie (tout modèle)

Ces règles s'appliquent à tous les modèles d'image. Elles décrivent ce que le résultat doit être et comment le vérifier ; la compétence propre au modèle (qwen-image-2, storyboard-keyframes, fal-runner pour l'exécution) fournit les points de terminaison, les paramètres, les limites et le style de l'invite. Lorsqu'une compétence propre au modèle existe, suivez les deux : ses paramètres et ces règles de fidélité. Les instructions d'édition prêtes à l'emploi se trouvent dans references/edit-patterns.md.

Comment exprimer les règles pour un modèle donné :

  • Champ d'invite négative (Qwen, Seedream, Stable Diffusion, Kling) : placez-y les listes d'anatomie et de fidélité des §1 et §2.
  • Pas de champ d'invite négative (GPT Image, Nano Banana / Gemini, Flux Kontext et la plupart des modèles d'édition par instruction) : rédigez-les sous forme d'énoncés positifs dans l'invite (« chaque personne a une tête, deux bras et deux jambes », « la pièce, les meubles et les objets restent exactement tels quels ») et une courte phrase d'exclusion à la fin (« N'ajoutez et ne retirez aucune personne ou objet »). Ne collez pas une longue liste « pas de X, pas de Y » dans l'invite : de nombreux modèles dessinent les objets nommés.
  • Réécriture de l'invite (Qwen enable_prompt_expansion, Model Studio prompt_extend, options « invite magique ») : désactivez-la pour les modifications ; le réécrivain ajoute des accessoires et un style qui ne figurent pas dans la référence.
  • Quelle entrée définit la taille de sortie varie selon le modèle (Qwen : la dernière image ; autres : la première, ou un champ de taille explicite). Vérifiez le schéma et faites en sorte que la sortie prenne les proportions et la taille de la référence de base.
  • Les limites de longueur diffèrent (Qwen fal edit 800 caractères). Lorsque la clause CONSERVER ne tient pas, conservez les éléments les plus susceptibles de dériver (§2 étape 2).

1. Anatomie humaine : toujours intacte

Chaque personne dans chaque sortie a une anatomie humaine normale : exactement une tête, deux yeux, un nez, une bouche, deux oreilles, un cou, deux bras attachés aux épaules, deux mains avec cinq doigts chacune, deux jambes attachées aux hanches, deux pieds. Pas de têtes, membres, mains ou doigts supplémentaires ou manquants ; pas de membres poussant dans le dos, la poitrine, le ventre ou une autre personne ; pas de corps fusionnés ; pas d'articulations se pliant dans le mauvais sens. Cela s'applique à la génération de texte vers image et aux modifications, aux personnes en arrière-plan et aux images stylisées (dessin animé, bande dessinée, peinture), sauf si l'utilisateur demande explicitement une créature non humaine. Une image avec un corps déformé est un défaut, quel que soit le reste de sa qualité.

Pourquoi cela casse : les modèles de diffusion perdent la trace du membre de qui est de qui lorsque les corps se chevauchent (câlins, mains jointes, foules, une personne portant un enfant), lorsque les mains sont petites ou cachées, et dans les poses complexes. Empêchez cela dans l'invite et détectez-le lors de la vérification.

  1. Invite. Pour chaque personne, dites où se trouvent chaque bras et chaque main et ce qu'ils font (« sa main droite tient une tasse à hauteur de poitrine, son bras gauche pend détendu le long de son corps »), et où sont les jambes (« debout, poids sur la jambe gauche », « assis, jambes croisées »). Nommez le nombre de corps lorsqu'il y a plusieurs personnes (« exactement trois personnes, chacune avec une tête, deux bras et deux jambes »). Intégrez l'anatomie naturelle dans la phrase de style : « corps humains anatomiquement corrects, proportions naturelles ». Décrivez le contact avec précision : la main de qui repose sur l'épaule de qui.
  2. Composition qui maintient les corps lisibles. Privilégiez les poses où les deux mains sont visibles ou clairement cachées (dans les poches, derrière le dos, hors du cadre) ; évitez les enchevêtrements de bras entrelacés, les personnes debout directement les unes derrière les autres, et les membres coupés de manière ambiguë par le cadre. Plus il y a de personnes, plus les corps sont petits et plus les erreurs sont nombreuses : gardez le nombre aussi bas que la demande le permet ; dans les foules, gardez les personnes en arrière-plan petites, simples et partiellement occultées par des objets clairs.
  3. Liste d'exclusion anatomique (invite négative, ou une phrase positive lorsqu'il n'y a pas de champ négatif) : membres supplémentaires, bras supplémentaires, jambes supplémentaires, mains supplémentaires, doigts supplémentaires, doigts manquants, deux têtes, tête supplémentaire, yeux supplémentaires, corps fusionnés, membres partant du torse, mains déformées, anatomie difforme.
  4. Modifications. Changer une pose, des vêtements ou ajouter une personne ne doit pas ajouter ou perdre de parties du corps : mettez « même anatomie : une tête, deux bras, deux jambes pour chaque personne » dans la clause CONSERVER (§2). Une modification de pose est la modification à plus haut risque ; vérifiez chaque personne dans le cadre, pas seulement celle modifiée.
  5. Vérifiez chaque personne avant de montrer (recadrez et zoomez chaque corps en taille réelle ; les petites figures d'arrière-plan incluses) : comptez les têtes, les yeux, les bras, les mains, les jambes, les pieds ; comptez les doigts sur chaque main visible ; tracez chaque membre jusqu'à son épaule ou sa hanche et confirmez qu'il appartient au bon corps ; recherchez les membres poussant dans le dos, la poitrine ou le cou, les mains fusionnées, une troisième jambe entre deux personnes, les articulations tordues. Inscrivez le nombre par personne dans les notes de vérification (« P1 : 1 tête, 2 bras, 2 mains 5+5, 2 jambes : OK »).
  6. Correction. Une petite erreur de main ou de doigt : un passage d'édition sur un recadrage autour de cette main (« corrigez la main gauche : cinq doigts, pose naturelle, tenant la tasse »), puis recollez le recadrage (ref_diff.py --paste-back). Un membre ou une tête supplémentaire ou manquant : régénérez avec une pose plus simple, moins de chevauchements et la description du membre de l'étape 1. Ne montrez jamais une image avec un corps déformé comme résultat final ; si l'utilisateur veut quand même voir un brouillon, nommez le défaut.

2. Fidélité à la référence : ne modifier que ce qui a été demandé

Lorsque l'utilisateur joint une image de référence, la référence est la vérité terrain et la demande est une différence minimale par-dessus. Tout ce que l'utilisateur n'a pas demandé de changer reste tel quel : le nombre de personnes et qui elles sont, leurs poses et leurs places, les vêtements, la pièce ou la rue, les meubles et les objets autour, leur nombre et leurs positions, le cadrage et l'angle de la caméra, la direction et la couleur de la lumière, le style et la texture, tout texte. Une modification qui « a l'air bien » mais qui a ajouté une personne, déplacé une chaise ou changé la fenêtre est une modification ratée. La plupart des modèles restituent l'intégralité du cadre et sont libres de « l'améliorer », donc la fidélité doit être demandée explicitement, puis vérifiée.

  1. Faites l'inventaire de la référence avant d'écrire quoi que ce soit. Regardez-la en taille réelle (recadrages pour les petites zones) et écrivez reference_inventory.md dans le dossier du projet :
    • cadrage : taille du plan, hauteur et angle de la caméra, ce qui touche chaque bord du cadre, rapport hauteur/largeur, pixels ;
    • personnes : nombre exact ; pour chacune, position dans le cadre (gauche/centre/droit, premier plan ou arrière-plan), pose, regard, mains, vêtements de la tête aux pieds, cheveux, âge, ce qu'elle tient ;
    • décor : pièce ou lieu, murs, fenêtres, portes, sol, meubles avec positions ;
    • objets : chaque élément visible avec son nombre, sa couleur et l'endroit où il se trouve (3 tasses sur la table, pas « tasses ») ;
    • lumière : direction de la source, dureté, température de couleur, ombres, heure de la journée ;
    • style : photo ou illustration, grain, étalonnage des couleurs, profondeur de champ ;
    • texte et logos, textuellement. Divisez ensuite cela en deux listes : MODIFIER (uniquement ce que l'utilisateur a demandé) et CONSERVER (tout le reste). Si la demande est ambiguë quant à la portée (« rendez-le plus cosy » : meubles ? lumière ? les deux ?), demandez avant de générer plutôt que de laisser le modèle décider.
  2. Rédigez l'invite d'édition comme modification + conservation. Première phrase : la modification demandée, spécifique et locale (quoi, où, quelle taille, de quel côté du cadre). Ensuite, la clause de préservation construite à partir de CONSERVER, nommant des éléments concrets plutôt que « tout le reste » : « Conservez exactement deux personnes : l'homme à gauche en pull gris et la femme à droite en robe bleue, mêmes visages, poses et positions. Conservez la table en bois avec trois tasses blanches, la fenêtre à gauche, l'étagère à droite, la lumière chaude de la fenêtre, le cadrage et l'angle de la caméra inchangés. N'ajoutez et ne retirez aucune personne ou objet. » Sous une limite de longueur, conservez les éléments les plus susceptibles de dériver : le nombre et l'identité des personnes, les objets près de la zone modifiée, l'architecture d'arrière-plan, le cadrage. Décrivez uniquement la modification en détail ; ne redécrivez pas toute la scène avec de nouveaux mots, cela incite le modèle à la redessiner.
  3. Paramètres qui protègent la référence :
    • réécriture de l'invite désactivée ;
    • taille de sortie = rapport hauteur/largeur et taille de la référence ; un rapport différent force le modèle à inventer ou recadrer du contenu ;
    • la référence de base à la position qui définit la taille de sortie, appelée par son numéro dans l'invite ; n'attachez que les références dont la modification a besoin, chaque image supplémentaire est une autre source de dérive ;
    • mode masque ou inpainting si le modèle en propose un : masquez uniquement la zone à modifier ;
    • liste d'exclusion de fidélité : personnes supplémentaires, personnes manquantes, personne différente, arrière-plan modifié, objets ajoutés, objets supprimés, cadrage différent, éclairage différent, plus la liste d'anatomie du §1 ;
    • palier bon marché pour les brouillons ; une sortie par appel jusqu'à ce que l'instruction tienne, puis 2-3.
  4. Vérifiez par rapport à la référence, pas de manière isolée. Exécutez python3 ~/.claude/skills/image-edit-fidelity/scripts/ref_diff.py <reference> <output> --allow x0,y0,x1,y1 (la boîte où la modification était censée se produire, en pixels de la référence). Il indique combien a changé en dehors de cette boîte par cellule de grille et écrit un côte à côte et une carte de chaleur. Passez ensuite en revue reference_inventory.md ligne par ligne sur la sortie : nombre et identité des personnes, chaque objet et sa position, arrière-plan, lumière, cadrage, texte. Tout élément CONSERVER qui a changé est un défaut, même mineur.
  5. Réparer au lieu de régénérer tout le cadre. Lorsque la modification est correcte mais que le reste a dévié, collez uniquement la région modifiée sur l'original : ref_diff.py <reference> <output> --allow <boite> --paste-back final.png (bord estompé, le reste du cadre provient de la référence pixel par pixel). Si la modification elle-même est erronée, resserrez la phrase MODIFIER et ajoutez les éléments dérivés à CONSERVER par leur nom ; modifiez une chose par tentative.
  6. Signalez à l'utilisateur ce qui a changé et confirmez ce qui a été vérifié comme conservé ; nommez toute déviation acceptée.

3. Transférer une partie d'une référence à une autre

Lorsque l'utilisateur demande de prendre un élément d'une référence source (une veste, une lampe, un visage, un logo, un ciel) et de le placer dans une référence cible, exactement deux choses se produisent : l'élément nommé est copié de la source, et l'endroit nommé dans la cible est remplacé par lui. Rien d'autre ne bouge dans aucune direction :

  • de la source, prendre UNIQUEMENT l'élément nommé : pas son arrière-plan, les autres personnes ou objets, les couleurs, l'éclairage, le style ou le cadrage ;
  • dans la cible, modifier UNIQUEMENT l'endroit nommé : les personnes, leur nombre, leurs visages, leurs poses, leurs vêtements, les objets, le décor, la lumière, le cadrage et le texte restent tels quels dans la cible (liste CONSERVER du §2 construite à partir de l'inventaire de la cible) ;
  • n'ajoutez rien « pour que ça colle » (accessoires supplémentaires, ombres d'objets qui n'existent pas, nouvelles personnes). La seule adaptation autorisée est l'élément lui-même prenant la perspective, l'échelle et la lumière de la cible pour se situer naturellement à l'endroit remplacé.

Comment :

  1. Faites l'inventaire de la cible (§2) et décrivez l'élément dans la source avec précision (quoi, couleur, matière, forme, détails qui doivent survivre : boutons, motif, logo).
  2. Recadrez la source étroitement autour de l'élément (respectez le côté minimum du modèle, 384 px pour Qwen) avant de la télécharger, afin que le modèle n'ait rien d'autre à emprunter. Placez la cible à la position qui définit la taille de sortie.
  3. Structure de l'invite : « Prenez uniquement [élément avec caractéristiques clés] de l'image 1. Dans l'image 2, remplacez [endroit exact : de qui, quel côté, quel objet] par celui-ci, en l'adaptant à la perspective, l'échelle et la lumière de l'image 2. Ne prenez rien d'autre de l'image 1 : pas son arrière-plan, ses personnes, ses couleurs ou son éclairage. Tout le reste dans l'image 2 reste exactement tel quel : [éléments CONSERVER de l'inventaire de la cible, nombre de personnes, visages, poses, objets, décor, cadrage]. N'ajoutez et ne retirez aucune personne ou objet. » Échangez les numéros d'image si le modèle veut la base en premier.
  4. Vérifiez avec ref_diff.py <cible> <sortie> --allow <boite de l'endroit remplacé> : les changements en dehors de la boîte sont des défauts ; réparez avec --paste-back. Comparez également l'élément transféré avec le recadrage source : forme, couleur, motif et détails doivent correspondre.

Échange de tête

La tête d'une personne de l'image 1 sur une personne de l'image 2 est le cas le plus strict de cette règle. Sur la personne cible, SEULE la tête est remplacée : le visage, les traits du visage, la peau du visage, les cheveux et les oreilles proviennent de l'image 1 ; l'angle de la tête, l'inclinaison, la direction du regard, l'échelle et la lumière de la scène suivent la cible afin que la tête repose sur le cou existant. Tout le reste de la personne cible reste tel quel dans l'image 2 : le corps, la carrure, le cou et les épaules, les vêtements, la pose, les mains, les accessoires sous la tête ; les autres personnes gardent leur propre tête et tout le reste ; le décor, les objets et le cadrage ne changent pas. Rien de l'image 1 en dehors de la tête (ses vêtements, son corps, son arrière-plan, les autres personnes) n'apparaît dans la sortie.

  • Avant l'appel, réglez les parties ambiguës avec l'utilisateur uniquement si elles existent : couvre-chef,

… [tronqué pour la traduction]

Skills associés