Dessine-moi un mouton sur la lune

Hervé Rincent

Hervé Rincent

6 avr. 2021

Une image est une fonction.

Une fonction un peu compliquée, qui, à partir d'un couple de coordonnées (x, y) retourne une couleur.

Un air de musique est aussi une fonction. A partir d'un instant (ex : 1 minute, 22 secondes, 34 centièmes), elle retourne la position de la membrane du haut-parleur.

Un objet est une fonction. A partir de coordonnées en 3 dimensions (x, y, z), elle retourne si l'objet occupe l'espace à cette endroit, et si oui de quelle couleur il est.

Beaucoup de choses peuvent être numérisées sous la forme d'une fonction au lieu d'une structure de données.

C’est une autre façon de voir les choses. On représente une connaissance par la réponse à une question, et non pas par une encyclopédie.

C'est un peu comme apprendre quelque chose par une discussion au lieu d’un livre.

Bien sûr, il y a quelque part des données permettant de répondre à la question. Celui à qui vous posez la question va fouiller dans sa mémoire pour trouver la réponse.

Mais vous n'accédez pas directement à cette mémoire. Ce qui laisse l'opportunité de l'organiser comme on le veut.

Assez philosophé. A quoi ça sert ?

Et bien ça ouvre la voie à la recherche de nouvelles fonctions. De nouvelles façons de transformer une question en une réponse.

Dans une publication récente dont le titre n’est pas facile à placer dans une conversation (“Implicit Neural Representations with Periodic Activation Functions”), des chercheurs de l'université de Stanford proposent une fonction astucieuse pour représenter des images.

Cette fonction est constituée d’un réseau de neurones dont la fonction d'activation est une sinusoïde ("SIREN"). Je ne vais pas plus loin dans les détails. Cette fonction est intéressante pour fusionner deux images :

Voila comment ça fonctionne :

  1. On repère les objets importants de chaque image en recherchant les variations de couleurs. Ainsi, on délimite les contours des pyramides ainsi que les détails de l'ours qui se baigne.
  2. On additionne les variations des 2 images. Dans l'exemple ci-dessus, ça fonctionne bien car l'image des pyramides comporte peu de détails dans sa partie basse, alors que celle de l'ours comporte peu de détails dans sa partie haute.
  3. On entraîne le réseau de neurones SIREN pour obtenir une fonction qui représente l'image des variations à partir des coordonnées.
  4. On modifie un peu la fonction ainsi obtenue, afin qu'elle puisse estimer l'image à partir des coordonnées de chaque pixel.

En voila un ours qui se baigne dans l’océan au pied des pyramides.

Dessine moi un mouton sur la lune

Mais on peut faire mieux.

La représentation d'une image par une fonction peut aussi servir à créer de nouvelles images à partir d'un texte. Par exemple, on entre le texte “un mouton sur la lune”, et ça dessine un mouton sur la lune.

Puisque la fonction qui transforme des coordonnées en une image est un réseau de neurones, on peut aussi l'entraîner à représenter une image soumise à un modèle de classification.

C'est l'idée du modèle deep-daze qui s'appuie sur SIREN pour la génération des images, et sur CLIP pour la classification.

Le principe :

Voici ce que ça donne pour "un mouton sur la lune", avec une taille d'image 256x256 pixels et 10,000 itérations (140 minutes de calcul sur Google Colab) :

Et l’image finale (oui, c'est un peu effrayant) :

OK, il y a encore de la marge avant d'obtenir des oeuvres d'art !

Cependant :

Résumons : on réussi à générer automatiquement une image en rapport avec un texte, avec des moyens techniques (presque) dérisoires, et des modèles d’IA sortis de labos de recherche. C’était encore de la science fiction il y a quelques années…

A votre tour

Prenez un processus opérationnel de votre entreprise.

Envisagez-le comme une fonction qui transforme des informations d'entrée en informations de sorties.

Essayez de numériser cette fonction en choisissant la stratégie qui convient le mieux :

Voila 3 options techniques pour innover. Les méthodes et les outils sont disponibles et souvent gratuits. Les moyens nécessaires sont à portée de main.

Plus rien ne manque pour passer à l'action !


Continuer la lecture

Utilisez des verbes pour penser vos logiciels. Pas des noms.

8 avr. 2021

3 min read

Utilisez des verbes pour penser vos logiciels. Pas des noms.

Lire l'article
Javascript est le pire des langages. Je l'adore.

30 mars 2021

5 min read

Javascript est le pire des langages. Je l'adore.

Lire l'article
Inscription à la newsletter

Recevez chaque semaine un article pour réfléchir à votre prochain projet tech/data

gratuit, sans spam, désinscription en 1 clic

Merci ! Regardez dans botre boite mail. Un lien de confirmation n'attend plus que votre clic.
Arghh il semble compliqué de vous ajouter à la liste de diffusion. Et si vous m'envoyiez un mail directement à contact@camilab.co ?