Une image fabriquée
Une image fabriquée par une machine porte souvent la trace des opérations qui l’ont produite, et cette trace se mesure. Cette démonstration fabrique deux images sur votre appareil, montre où la trace apparaît, et montre à partir de quand elle devient illisible.
Tout se calcule dans votre navigateur. Les deux images sont dessinées sur cet appareil, leurs spectres y sont calculés, et aucune image n’est téléchargée de nulle part. Ouvrez l’onglet Réseau de votre navigateur et manipulez la démonstration : aucune requête ne part.
Deux images, le même contenu, une opération de différence
Les deux images ci-dessous sortent du même champ de départ. L’une est rendue telle quelle. L’autre passe par un goulot : elle est réduite, puis réagrandie en répétant chaque pixel, ce qui est l’opération de suréchantillonnage que les générateurs d’images enchaînent pour passer d’une petite carte de valeurs à une image de grande taille. Rien d’autre ne les sépare.
Lancez la fabrication. Les deux images, leurs deux spectres et la mesure chiffrée s’afficheront ici.
Ce que la mesure montre
La trace est un manque, pas un pic
L’idée répandue veut qu’une image fabriquée montre des pics dans son spectre. Ce que cette démonstration mesure est l’inverse, et c’est plus intéressant. Aux fréquences de la grille de suréchantillonnage, l’image fabriquée a systématiquement moins d’énergie que son voisinage, d’environ onze décibels. Ces fréquences sont exactement celles que le noyau de répétition annule : en répétant chaque pixel un certain nombre de fois, on applique un filtre dont les zéros tombent aux multiples de ce nombre. Le spectre garde donc le creux de l’outil qui l’a produit.
Sur l’image témoin, la même mesure donne moins d’un décibel d’écart, dans un sens ou dans l’autre, parce qu’il n’y a aucune raison qu’une texture privilégie ou évite ces fréquences-là. La différence entre les deux images n’est donc pas une impression : c’est un nombre, et il se refait.
Elle disparaît sous presque rien
Poussez le curseur de bruit et regardez la mesure fondre. Les valeurs relevées sur la graine par défaut, au facteur huit, sont celles-ci.
| Bruit ajouté | Image témoin | Image fabriquée |
|---|---|---|
| aucun | +0,2 | -11,0 |
| 2 niveaux | -0,5 | -4,6 |
| 5 niveaux | -0,8 | -1,6 |
| 10 niveaux | -1,2 | -0,5 |
| 20 niveaux | -0,7 | +0,2 |
| 40 niveaux | -0,4 | +0,8 |
À cinq niveaux de gris de bruit, soit deux pour cent de l’échelle, la trace est déjà tombée sous le niveau du témoin. À dix niveaux, elle n’existe plus. Un bruit de cette amplitude est invisible à l’œil, et il se produit tout seul : une recompression, une capture d’écran, un redimensionnement, un filtre de retouche en font autant sans que personne l’ait voulu.
La trace est indiscutable et elle ne survit à presque rien. Les deux moitiés de cette phrase comptent autant.
La méthode
Le calcul entier, pour qui veut le refaire sans cette page.
- Fabriquer le champ de départ. Cinq couches de bruit lissé, de plus en plus fines, additionnées avec une amplitude qui diminue de moitié à chaque couche. On obtient une texture dont l’énergie décroît avec la fréquence, comme celle d’une photographie. Le tirage est ensemencé par la graine affichée, donc reproductible.
- Fabriquer la seconde image. Moyenner le champ par blocs carrés du côté choisi, ce qui donne une petite image, puis la réagrandir en répétant chaque pixel autant de fois. C’est un suréchantillonnage au plus proche voisin.
- Ajouter le bruit, s’il y en a, à la même amplitude sur les deux images.
- Passer chaque image en luminance, retirer sa moyenne, puis calculer sa transformée de Fourier à deux dimensions. Retirer la moyenne est indispensable : sinon la composante continue écrase tout et le spectre n’est qu’un point au centre.
- Recentrer le spectre, prendre l’amplitude de chaque fréquence, et la convertir en décibels par rapport au maximum.
- Mesurer. Faire la moyenne des décibels aux fréquences dont les deux coordonnées sont des multiples du pas de grille, puis la moyenne des décibels partout ailleurs, et soustraire. C’est l’écart de grille. Une valeur proche de zéro veut dire que ces fréquences n’ont rien de particulier. Une valeur nettement négative veut dire qu’un noyau de répétition est passé par là.
Le pas de grille vaut le côté de l’image divisé par le facteur de suréchantillonnage. Changez le facteur dans la démonstration, et le pas change avec lui : la mesure va chercher la trace ailleurs, et elle la trouve. C’est ce qui montre que la mesure suit vraiment l’opération, et qu’elle ne trouve pas ce qu’elle a envie de trouver.
Ce que cette démonstration ne fait pas
- Elle montre qu’une opération de fabrication laisse une trace mesurable et reproductible dans le domaine des fréquences.
- Elle montre que cette trace dépend du réglage de l’opération, et se déplace avec lui.
- Elle montre à partir de quelle perturbation la trace cesse d’être lisible.
- Elle ne détecte rien. Cette page fabrique elle-même les deux images : elle sait laquelle est laquelle, elle ne le devine pas, et elle ne rend aucun score de confiance.
- Elle ne juge aucune image que vous lui apporteriez, et elle n’accepte pas de fichier. Un outil qui prétendrait trancher sur une image réelle mentirait.
- Elle ne reproduit pas un vrai générateur d’images. Le suréchantillonnage est l’une de ses opérations, pas toutes, et les architectures récentes atténuent délibérément cette signature.
Ce que la recherche a mesuré
Trois résultats publiés encadrent cette démonstration, et un quatrième en donne la limite.
Les images produites par des réseaux génératifs présentent des artefacts systématiques visibles dans le domaine fréquentiel, causés par les opérations de suréchantillonnage communes à ces architectures. Le composant de suréchantillonnage des réseaux antagonistes laisse une empreinte spectrale caractéristique et reproductible, exploitable même sans avoir vu ce modèle précis à l’entraînement. Ces travaux disent la même chose que la mesure ci-dessus : l’outil signe son passage.
La limite est publiée aussi, et elle est nette. Un travail évalué par les pairs établit que les filigranes invisibles au niveau du pixel sont retirables par une attaque de régénération, qui ajoute du bruit puis reconstruit l’image, et que cette famille d’attaques préserve la qualité visuelle. Ses auteurs concluent qu’il faut passer des filigranes invisibles à des marques qui préservent le sens de l’image. Ce que le curseur de bruit de cette page fait en trois secondes est la version élémentaire de cette attaque.
Un dernier fait ferme la discussion sur l’œil humain : des observateurs ne distinguent plus de manière fiable un visage synthétique d’un visage réel, et jugent même les visages synthétiques en moyenne plus dignes de confiance. Se fier à son impression n’est donc pas une méthode de repli.
Le geste à garder
Devant une image dont l’origine compte, ne cherchez pas l’indice dans l’image. Cherchez la source : qui l’a publiée le premier, à quelle date, et que disent les métadonnées de provenance quand elles existent. Ce chemin est traité au chapitre les filigranes. Un indice technique sert à documenter un doute, jamais à conclure seul.
Pour aller plus loin
Le même travail sur un signal sonore est au chapitre une voix fabriquée. Les deux façons de marquer un contenu sont au chapitre les filigranes. Les situations où l’outil se referme sont réunies dans quand ne pas s’en servir. Toutes les démonstrations du site sont réunies à la page démonstrations, et le sommaire du cours à la page comprendre.
Sources
- Leveraging Frequency Analysis for Deep Fake Image Recognition Joel Frank, Thorsten Eisenhofer, Lea Schönherr, Asja Fischer, Dorothea Kolossa, Thorsten Holz, 2020. Établit que les images générées par des réseaux génératifs présentent des artefacts systématiques visibles dans le domaine fréquentiel, causés par les opérations de suréchantillonnage communes à ces architectures.
- Detecting and Simulating Artifacts in GAN Fake Images Xu Zhang, Svebor Karaman, Shih-Fu Chang, 2019. Établit que le composant de suréchantillonnage utilisé par les réseaux antagonistes laisse une empreinte spectrale caractéristique et reproductible, exploitable pour détecter une image générée même sans avoir vu ce modèle précis à l’entraînement.
- Invisible Image Watermarks Are Provably Removable Using Generative AI Xuandong Zhao, Kexun Zhang, Zihao Su, Saastha Vasan, Ilya Grishchenko, Christopher Kruegel, Giovanni Vigna, Yu-Xiang Wang, Lei Li, NeurIPS 2024. Établit qu’une attaque de régénération, qui ajoute du bruit à une image puis la reconstruit, retire les filigranes invisibles au niveau du pixel en préservant la qualité visuelle, et que les auteurs recommandent en conséquence de passer à des marques qui préservent le sens de l’image.
- AI-synthesized faces are indistinguishable from real faces and more trustworthy Sophie J. Nightingale, Hany Farid, 2022. Établit que des observateurs humains ne parviennent plus à distinguer de manière fiable un visage synthétique d’un visage réel, et jugent même les visages synthétiques en moyenne plus dignes de confiance.