[PYTHON] Création d'une image trompeuse pour le modèle de génération de légende

Papier original Deep neural networks are easily fooled High confidence predictions for unrecognizable images Afin de connaître le contenu du DNN, il est dit qu'une image qui n'est pas comprise par l'homme mais qui est classée en DNN avec 99% ou plus de confiance a été générée. Par exemple, cela ressemble à ceci: キャプチャ.JPG jkljkljlklk.JPG (Extrait du journal)

Générons également cette image trompeuse pour le modèle générateur.

Exemple de génération de légende ordinaire

comme ça Ci0S0LkU4AE5DjK_orig.jpg Si vous incluez une image d'un cheval, vous obtiendrez une légende comme celle-ci. Il semble que vous puissiez voir deux choses ressemblant à des chevaux. La probabilité d'apparition d'une phrase est calculée à partir de la probabilité d'apparition d'un mot. Trois phrases faciles à sortir s'affichent. On estime que plus le nombre sur la gauche est petit, plus la phrase est appropriée pour l'image. (En fait, l'inversion de signe de la somme des logs softmax pour chaque mot divisé par le nombre de mots)

De plus, si vous insérez une image avec des valeurs de pixels aléatoires, l'instruction suivante sera générée. Ci0S0MjUYAAGFzR_orig.jpg Bien qu'il s'agisse d'une phrase, le nombre est grand, c'est-à-dire qu'il n'est pas possible de juger ce qu'il y a dans l'image.

résultat de génération d'image trompeur

J'ai pu bien le générer pour le moment. Ci0HI4LUgAAhh_W_orig.jpg Ci0HI4AUUAAUxX5_orig.jpg

Deux feuilles ont été générées. Aucun des deux n'est connu des humains et les machines ont une forte probabilité de générer des phrases sur les chevaux. (= Le nombre est plus petit que l'exemple précédent)

Ci-dessus: codage direct, le pixel de l'image est le gène direct En bas: encodage indirect, les pixels ont une certaine corrélation Dans l'article, le codage indirect a produit un beau motif et a été exposé comme un art, mais il n'a pas fonctionné simplement en créant finalement un NN et en lui donnant une corrélation. (Peut-être que c'était trop bon)

Comment as-tu fais ça

L'image a évolué de sorte que la probabilité de générer une seule phrase était élevée. En haut de la phrase générée dans le premier exemple "a couple of horses are standing in a field" A été sélectionné, et l'image a évolué de sorte que la probabilité de génération de cette phrase était élevée. Huit nouveaux individus ont été générés à chaque fois, laissant huit excellents individus, et le codage direct a donné un tel résultat dans environ 300 générations.

À propos du modèle de génération

Cette fois, nous avons généré une image trompeuse pour le modèle de génération de légende Show, Attend and Tell. La valeur BLEU pour COCO du modèle était de 0,689 / 0,503 / 0,359 / 0,255.

Résumé

En utilisant un algorithme évolutif, nous avons réussi à générer une image trompeuse qui augmente la probabilité de générer une certaine déclaration pour le modèle de génération. Si vous pensez que cette image peut être trompée par d'autres modèles formés avec le même CNN, ou si vous la faites évoluer pour plusieurs phrases, essayez-la.

Recommended Posts

Création d'une image trompeuse pour le modèle de génération de légende
Création d'un wrapper Python pour l'API Qiita
Programme pour rechercher la même image
(Lecture du papier) Jukebox: A Generative Model for Music Prafulla (Échantillonnage de musique avec VQ-VAE)
L'image est Namekuji
Essayez une recherche similaire de recherche d'images à l'aide du SDK Python [Recherche]
Essayez de modifier une nouvelle image à l'aide du modèle StyleGAN2 entraîné
Divulguer le savoir-faire qui a créé un service de recherche d'images similaire pour les actrices audiovisuelles grâce à l'apprentissage profond par chainer
Découvrez les dates du tournoi fou
Créez un modèle pour votre planning Django
Changer la liste dans l'instruction for
Algorithme de hachage pour déterminer la même image
Création d'un modèle d'estimation de position pour la compétition d'intelligence humaine de loup à l'aide de l'apprentissage automatique
Un modèle qui identifie la guitare avec fast.ai
Présentation du modèle DCGAN pour Cifar 10 avec keras
Création d'un outil de gestion de bibliothèque d'en-tête uniquement pour C / C ++
Faire un histogramme pour le moment (matplotlib)
J'ai essayé de créer un Dockerfile pour l'environnement de développement de Django
Python: préparez un sérialiseur pour l'instance de classe:
Traitement d'image? L'histoire du démarrage de Python pour
Implémentation du modèle Deep Learning pour la reconnaissance d'images
Une histoire sur l'amélioration du programme pour le remplissage partiel des données d'image binarisées 3D