Suppression de filigrane IA · Version vérifiée au pixel près
Supprime les filigranes blancs/semi-transparents « XXIA généré » dans les coins des images générées par l'IA (Doubao/Jimeng/Kolors etc.). Argument clé : vérification au niveau du pixel sans auto‑tromperie, double signal croisé anti‑hallucination, vote multi‑candidats par indicateurs objectifs – là où d'autres se contentent de « retoucher l'image puis de dire que c'est bon à l'œil », ici tout est calculé.
Scénarios d'utilisation
- Filigranes blancs/semi-transparents « XXIA généré » dans les coins des images IA (Doubao/Jimeng/Kolors etc.)
- Filigrane superposé sur un fond relativement uniforme (bloc de couleur unie/ciel/mer/dégradé)
- Filigrane situé dans un coin plutôt que sur le sujet principal
Chaîne complète (chaîne de relais réduisant la corrélation d'erreur)
La suppression du filigrane est une chaîne de relais en quatre sauts : localisation → échantillonnage du fond → recouvrement → vérification. Chaque saut, indépendant, ne commet qu'une petite erreur ; l'accumulation des sauts réduit drastiquement le taux de réussite. Les méthodes identiques tombent toutes dans le même piège. La version complète = validation individuelle aux nœuds clés + croisement de signaux de principes différents + vote multi‑candidats.
① Localisation (deux signaux croisés, principes obligatoirement différents)
- Signal A Méthode de grille agrandie : agrandir la zone candidate avec une grille rouge 10x10 (étiquettes x0‑x9/y0‑y9), demander au modèle visuel de ne rapporter que « le filigrane est dans x‑y à x‑y » – ne se fier qu'aux limites des cases, pas aux pourcentages/descriptions de pixels, puis reconvertir en coordonnées originales pour un balayage pixel par pixel.
- Signal B Clustering de densité de pixels : aucune analyse pixel dépendante du modèle visuel. Pour les couleurs blanches/semi‑transparentes (r>180, g>180, b>180, semi‑transparent ramené à 140‑150), sommer par ligne pour trouver les blocs denses de texte, colonnes continues de pixels blancs > 3 pour trouver l'étendue en x du texte.
- A et B doivent tous deux localiser pour verrouiller la zone du filigrane ; si un seul trouve → réexaminer, ne pas recouvrir immédiatement (croisement de principes différents pour éviter qu'un même modèle visuel ne chute ensemble).
- Le filigrane peut être dans un coin (ex. zone de mer bleue) et non sur le sujet – balayer d'abord l'image entière pour les clusters denses de pixels blancs/semi‑transparents avant de fixer les coordonnées.
② Recouvrement (vote multi‑candidats, pas de décision arbitraire)
Générer plusieurs candidats, voter avec indicateurs objectifs pour choisir le meilleur :
- Candidat 1 : bande de fond de même largeur au‑dessus (ou à gauche) du filigrane, étirée verticalement sur la zone (LANCZOS) – le plus naturel pour fonds complexes
- Candidat 2 : remplissage par couleur moyenne autour (gauche/contour) + masque avec bord gaussien flou (GaussianBlur 2px) – fonds uniformes
- Candidat 3 : interpolation multidirectionnelle
- Indicateurs de vote : continuité de texture de la zone (gradient de bord) + variance statistique des couleurs + distance euclidienne aux pixels environnants. Le meilleur indicateur gagne, pas « je trouve que c'est mieux ».
- Ajouter un padding de 6‑8 px à la zone de recouvrement pour éviter les résidus de bordure du texte.
③ Vérification (décision au pixel près, isoler les faux positifs visuels)
- Vérification pixel par pixel avec
scripts/verify_watermark_removed.py: comparer l'image originale et l'image traitée sur le nombre de pixels blancs dans la zone cible. Original 856 → Traité 2 = éliminé ✅ - Le modèle visuel ne participe pas à la décision, il fournit seulement une localisation grossière. Les faux positifs de type « il reste un filigrane » (zones complexes comme poils blancs/éclaboussures/flammes claires) sont isolés par la diff pixel en dehors du nœud, sans bloquer la progression.
- Résidu jugé éliminé si le nombre de pixels blancs traités dans la zone cible est < 5 % de l'original.
Chaîne entière (gérée comme un système distribué)
- Entrée/sortie de chaque saut fixées : dict bbox / liste de candidats / indicateurs, testables et reproductibles séparément.
- Vérifier de bout en bout : taux de succès (taux de pixels atteint) + coût (tours) + traçabilité, comparé à une ligne de base à un seul saut – les gains moins les coûts doivent être positifs pour vraiment déployer.
Pièges clés (rencontrés en pratique)
- Le modèle visuel hallucine « il reste un filigrane » : sur fonds complexes (poils blancs/éclaboussures/flammes claires), il répète « il y a Doubao IA généré en bas à droite » même si la preuve pixel montre l'élimination. La diff pixel est le juge – une fois le seuil atteint, ne pas refaire à cause du modèle visuel.
- Le modèle visuel peut dire « bas à droite » en désignant tout le quart inférieur droit ; les coordonnées précises exigent une analyse pixel (clustering de densité blanche par ligne/colonne).
- Les zones claires de l'image (poils blancs du tigre/vagues écumantes) interfèrent avec la détection du blanc – si le fond est blanc ET l'image traitée est blanche partout, ce n'est pas un filigrane mais le contenu.
- Sur fond complexe, l'étirement du fond du dessus est plus naturel qu'une couleur unie ; la couleur unie n'est bonne que pour les fonds uniformes (ex. mer).
- Jugement résiduel : zone cible traitée blanche < 5 % du blanc original = éliminé.
Script
scripts/verify_watermark_removed.py— Vérification pixel par pixel de la suppression du filigrane (comparaison des pixels blancs original vs traité)
Dépendances
- Python 3,
PIL+numpy(pip install pillow numpy)
Limites (honnêteté)
- Le recouvrement par « étirement/remplissage de pixels environnants » est essentiellement une pseudo‑réparation. Si le filigrane recouvre du contenu réel (visage/logo produit/texture complexe), le recouvrement déformera – nécessite une véritable réparation IA (inpainting/Lama).
- Ce skill excelle : filigranes d'images IA, fonds relativement uniformes, validation pixel fiable. La localisation et la vérification sont les plus solides.
🙋 À propos de l'auteur
九品锦锂e | Transforme les pièges rencontrés en skill « prêt à l'emploi », pas de manuel.
Ce skill est la version que j'utilise tous les jours. Si vous bloquez, voulez des astuces avancées, ou avez d'autres scénarios à encapsuler en skill, ajoutez‑moi directement sur WeChat avec le mot‑clé « SkillHub » pour priorité :

Scannez pour ajouter l'auteur · Mentionnez « SkillHub » pour priorité