Attention ! Ne cliquez pas sur ce lien, c'est un piège à enfoirés du net !

Chez oim, forum libreChez oim, forum libre

 


Pages: [1]   En bas

Auteur Sujet: Comment faire tourner une IA créatrice de memes internet ? + bot twitter  (Lu 5230 fois)

programheure

  • Orateur balbutiant
  • Hors ligne Hors ligne
  • Messages: 1
Comment faire tourner une IA créatrice de memes internet ? + bot twitter
« le: lundi 26 octobre 2020, 22:06 »
le: lundi 26 octobre 2020, 22:06

Bonjour à toutes et tous!

J'ai récemment appris pas mal de choses à propos des memes internet.

Je vous mets un lien vers un article de blog pertinent sur le sujet :
https://vulgabio.wordpress.com/2020/10/24/example-post-3/

D'après le travail de Susan Blackmore, ces derniers peuvent revêtir une apparence physique absolument indéfinie, tant qu’ils respectent les conditions de l’évolution darwinienne dans leur transmission culturelle. Cette façon de décrire les memes n’a pas pour vocation de les assimiler à de réels « être vivants » (Quoi que, même dans le domaine de la biologie, la définition exacte du vivant est un sujet à débats).

Ainsi, je suis conforté dans mon idée qui est de produire à mon tour une "machine à meme". Pour être précis, une intelligence artificielle productrice de memes.
Tout d’abord, son système interne de production est parfaitement darwinien : Il y a mutation d’un grand nombre de phrases à vocation humoristique concurrente, sélection de ces dernières au fil des « générations », en fonction de leur réussite face à des critères que j’intègre au programme au préalable. Enfin, il y a hérédité puisque les modèles de memes qui ont réussi la sélection sont sauvegardés et refiltrés à chaque génération, jusqu’à atteindre un « optimal ».      
      
Dans un second temps, les memes produits seront transférées à une autre machine évolutive, les cerveaux (et non plus les variables de mon code) ! Avec un « bot-twitter », je voulais publier automatiquement des memes créés par l’IA. Ces derniers seront sélectionnés par les utilisateurs du réseau social, au moyen des retweets, likes. Peut-être, certains d’entre eux deviendront à leurs tours viraux, « vivant et se reproduisant » par imitation au sein de leur nouvel « hôte », les humains !

J'ai trouvé sur Github quelques lignes de codes pour ce qui semble être un programme d'Intelligence Artificielle... créateur de memes. (https://github.com/dylanwenzlau/ml-scripts/tree/master/meme_text_gen_convnet) C'est comme ça que ça marche avec le codage, on mise sur l'intelligence collective !



Ayant découvert le codage sur R, j'ai appris python sur le tas, à l'occasion de ce projet. Mon objectif était surtout de réussir à réaliser des prédictions, bref : maîtriser le programme et le faire tourner sur ma propre machine. J'en ai profité pour étudier le fonctionnement de l'IA.

Plusieurs points clés du programme :

1 )  Un travail de traitement des données

Les memes ne sont pas considérés comme des images, mais comme des textes que l'on génère sur une image. Ainsi, en utilisant le format json, la base de données d'entrainement ne se réduit qu'à des blagues textuelles qui sont référencés à des images de memes "vierges" :

Ainsi, si on référence ce meme vierge : "15454"

La base de données des blagues liés à ce meme ressemblera à cela : 

["15454","POP MUSIC"]
,["15454","USA"], ...

Evidemment, il est possible de multiplier les memes, les références. S'il y a plusieurs textes, ces derniers sont séparés par ce symbole : "|".
Tout cela permet à l'IA de n'être qu'un générateur de texte ! Il faudra ensuite recoller le texte prédit sur l'image correspondante pour visualiser le meme.

Imaginons que le programme me propose en prédiction : "USA MUSIC", je n'aurais plus qu'à remplir l'espace vide correspondant.



2 ) L'entrainement

il est sans doute nécessaire de le rappeler, ce programme est une IA dit "faible". Elle ne peut mener qu’une tache simple, grandement assistée par l'homme. Donc il n'y a pas de peur à avoir...  :jq: Le programme apprend en modifiant des paramètres successivement à partir d'un set de données séparé entre des données d'entrainement et des données de vérification. Les outils classiques d'IA que sont Keras et Tenserflow sont utilisés. 

La première fois que j'ai fait tourner le programme d'entrainement (directement à partir de la console Windows), cela n'a pas vraiment marché :
Après la première génération, le programme n'arrivait plus à trouver la suite des données et ne pouvais continuer à apprendre.


Il s'agissait d'un petit souci d'indexation que j'ai corrigé.

BREF :
J'ai pu faire tourner le logiciel quelques temps (une nuit environ). Voici comment le modèle s'est amélioré :


Et oui, à la fin, le modèle n’apprenait plus grand chose... La preuve : génération après génération, la val_loss n'a pas diminué (elle était donc systématiquement plus élevée). En d’autres termes : peu importe comment les paramètres du modèle varient, les prédictions ne ressemblent jamais d'avantage aux memes de vérification.

"val_loss did not improve"




3 ) Enfin : la prédiction !

J'ai lancé, encore candide, le programme de prédiction. Surprise : cela ne marchait pas : Cela me disait que le fichier de prédiction (le modèle optimisé après l'entrainement) était introuvable !

Le bug, cette fois, était beaucoup plus simple à identifier :

Code
def get_model_path(base_path, model_name):
    #return base_path + '/models/' + model_name + '_' + datetime.datetime.today().strftime('%Y_%m_%d_%H_%M_%S') impossible de trouver le bon fichier (date qui ne correspond pas)
    return base_path + '/models/' + model_name + '_' + '2020_05_10_19_05_16'

Quand le logiciel de prédiction veut utiliser la version la plus récente du modèle, il cherche dans mes fichiers un modèle daté de maintenant ... Alors que le modèle est nommé avec la date de l'enregistrement, soit toujours un autre moment (dans le passé).
Par exemple : si on est le 10/10/2020 et que notre modèle de prédiction a été enregistré le 05/10/2020 à 19H05 et 16sec, le programme va devoir chercher le modèle numéroté de la bonne date ! En tout cas, pas à la date du 10/10/2020... car il ne trouvera rien ! Du coup, à la main, j'ai précisé la bonne date pour trouver le bon fichier...


BREF (encore) :
Quand on entraine le modèle pendant une ou deux générations seulement, voici ce qui est ressort de la boite noire :

"predicting meme text for ID 112126428...
taeeeteseeseeeeaetreeaeaeaaeteeaeeetaaseeseeaetet eeeesaeteeeeeaeeaeseeeaaaeesaeraaeeaeseaesteaeeee aaeesaeteaeeeeeeaeeaereteeeaeeeetaeaeeesea"

Par contre, en l'entrainant pendant toute une nuit (50 générations, comme vous pouvez le vérifier dans le graphique de la val_loss plus haut) :





visuellement, ça pourrait donner ce genre de meme :


Pas très drôle, hein ?

L'IA balbutie !

...

Mais elle ne pourra jamais faire mieux !  :gk: Je vous rappelle que le modèle n'a pas pu être amélioré depuis une trentaine de générations...
Tout ce dont elle est capable, c'est donner des mots courts mais très utilisés parmi les données d'entrainement.

5 ) Pourquoi cet échec de l'IA?

Et bien, c'est plutôt simple à comprendre. Ce sont mes datas le souci ; il n'y en a pas assez du tout ! J'ai fait une petite recherche pour savoir où ce logiciel est utilisé. Le créateur, dylan wenzlau, est également le fondateur du site de caption de memes : Imgflip.
Le petit fichier d'entrainement proposée sur GitHub est infime à côté des millions de memes que brasse ce site. Chaque utilisateur de ce site fait un travail gratuit pour l’IA ; lui permet de renforcer ses réseaux de neurones, d'apprendre de nouvelles combinaisons de lettres, de blagues. D'ailleurs, le site propose d'utiliser en ligne le générateur de meme. Il s'agit des mêmes lignes de codes, mais utilisées à partir d'une quantité bien plus importante de données d'apprentissage. J'aurais bien aimé pouvoir traiter ces big datas, mais elles ne sont pas en libre accès.


6 ) Un bot twitter ?

J'ai choisi de publier les prédictions faites par ImgFlip meme generator. Puisqu'il s'agit du résultat d'un générateur de meme qui a pu apprendre autant que nécessaire.
On crée un compte twitter développeur, on récupère les clés de l'API. Voici un petit code pour publier automatiquement des images référencées en les comptant de 1 à ... 'n' (meme1.jgp, meme2.jgp, meme3.jpg ... memen.jpg)

Code
import tweepy
import time
consumer_key = "" 
consumer_secret = "" 
access_token = "" 
access_token_secret = ""   
#je ne vous donne pas mes clés, sinon, n'importe qui pourrait publier sur le compte de mon bot !!
i = 0
print("start")
while i != n: #on publie autant que l'on a d'image, il y a au total  'n' images
    auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
    auth.set_access_token(access_token, access_token_secret)
    api = tweepy.API(auth) #authentification auprès de twitter
    media = api.media_upload("meme" + repr(i) + ".jpg") #nom de chaque images à publier, je les ai numérotées de 1 à ... n
    tweet = 'meme number ' + repr(i) + '  #AI' #texte accompagnant l'image
    post_result = api.update_status(status=tweet, media_ids=[media.media_id]) #publication
    print(repr(i) + "/" + n) #petit compteur pour voir où l'on en est dans les publications
    time.sleep(50) #temps, en seconde de pause entre chaque tweets
    i = i+1
print("done")


Vous pouvez suivre mon bot si vous le souhaitez ! C'est assez drôle, soit parceque l'IA dit n'importe quoi, soit parceque la blague est étrangement bien trouvée !
Je vais bientôt lancer les publications, avec un rythme sans spam (un post toutes les 2 ou 3 heures).
  :gq: Je vous tient au courant.



parfois, c'est même flippant  :o


C'est ici que ça se passe
-->  @Just_a_meme_bot

Conclusion ?

Je vous remercie de m'avoir lu jusqu'ici ! Désolé de ne pas avoir pu aller plus loin dans la création de l'IA.
Cependant, si vous avez des idées sur la manière avec laquelle on pourrait surmonter le souci de manque de données d'entrainement, cela m'intéresserait ! 
Signaler au modérateur   IP archivée

alex

  • Administrateur
  • Moulin à paroles
  • ********
  • Hors ligne Hors ligne
  • Sexe: Homme
  • Messages: 23.067
  • Proprio officiel chez oim !
Comment faire tourner une IA créatrice de memes internet ? + bot twitter
« Réponse #1 le: mardi 27 octobre 2020, 07:10 »
le: mardi 27 octobre 2020, 07:10

Je t'ai trouvé quelques milliers d'images sur des banques libres de droits.
https://www.istockphoto.com/fr/photos/mème?excludenudity=false&mediatype=photography&phrase=mème&sort=mostpopular

Moins intéressant car la plupart ne sont pas vierges :
https://fr.123rf.com/images-libres-de-droits/memes.html

Le souci est de récupérer les images automatiquement en "un seul jet". A toi de voir, j'ai pas encore avalé mon café.

Tu devrais publier ton truc, "la soupe python Windows" et surtout les data de base (les images vierges), sur Github.
Ca me permettrait de suivre ça tranquillement.
Signaler au modérateur   IP archivée

Otomatic

  • Observateur
  • Pipelette pathologique
  • ******
  • Hors ligne Hors ligne
  • Sexe: Homme
  • Messages: 1.652
  • Vieux geek assagi
      • Aviatechno
Comment faire tourner une IA créatrice de memes internet ? + bot twitter
« Réponse #2 le: mardi 27 octobre 2020, 09:29 »
le: mardi 27 octobre 2020, 09:29

Mon objectif était surtout de réussir à réaliser des prédictions
Pour ça, il existe le pendule, le jeux de tarot, le marc de café et autres trucs divinatoires  :-\
Signaler au modérateur   IP archivée
« La vie sans musique est tout simplement une erreur, une fatigue, un exil. » Friedrich Nietzsche.
« Ce n'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont forcément raison. » Coluche

alex

  • Administrateur
  • Moulin à paroles
  • ********
  • Hors ligne Hors ligne
  • Sexe: Homme
  • Messages: 23.067
  • Proprio officiel chez oim !
Comment faire tourner une IA créatrice de memes internet ? + bot twitter
« Réponse #3 le: vendredi 30 octobre 2020, 21:30 »
le: vendredi 30 octobre 2020, 21:30

Je me suis abonné à ton fil Twitter histoire de voir ce que pond ton memebot.
Mais je persiste, un compte Github avec ton boulot dans un repo, ça ferait toute la différence !
Tu pourrais même espérer avoir des contributeurs qui nourriraient la bête en datas.

En attendant, qu'est-ce que tu fais manger à ta mini IA ? Seul, c'est mission quasi impossible.
Rends ton truc public, c'est la seule façon de nourrir l'engin... :iq:
Et une IA, ça crève de faim ! Ca en veut encore et encore ! Tu l'as remarqué par toi même. :ju:
Signaler au modérateur   IP archivée
Pages: [1]   En haut
 

Page générée en 0.126 secondes avec 21 requêtes.