Skip to content

Commit

Permalink
dallE
Browse files Browse the repository at this point in the history
  • Loading branch information
linogaliana committed Dec 30, 2022
1 parent 4b01c3d commit 8f24e44
Showing 1 changed file with 96 additions and 32 deletions.
128 changes: 96 additions & 32 deletions content/course/modern-ds/dallE/index.qmd
@@ -1,5 +1,5 @@
---
title: "Génération d'images avec Python et DALL-E"
title: "Génération d'images avec Python, DALL-E et StableDiffusion"
date: 2022-08-26T13:00:00Z
draft: false
weight: 60
Expand Down Expand Up @@ -46,7 +46,12 @@ print_badges("content/course/modern-ds/dallE.qmd")
```
:::

{{% box status="note" title="Remarque" icon="fa fa-lightbulb" %}}
::: {.cell .markdown}
```{=html}
<div class="alert alert-info" role="alert">
<h3 class="alert-heading"><i class="fa-solid fa-comment"></i> Note</h3>
```

L'utilisation de ce tutoriel est assez exigeante en termes d'infrastructure
car il est nécessaire de disposer de GPU.

Expand All @@ -58,33 +63,110 @@ Pour le moment, il faudra
se contenter de `Google Colab` pour tester ces exemples. La configuration
à mettre en oeuvre pour tester ces exemples est présentée dans une autre
boîte.
{{% /box %}}

{{% box status="note" title="Utiliser des GPU sur `Colab`" icon="fa fa-lightbulb" %}}
```{=html}
</div>
```
:::

::: {.cell .markdown}
```{=html}
<div class="alert alert-warning" role="alert">
<h3 class="alert-heading"><i class="fa-solid fa-lightbulb"></i> Hint</h3>
```

Par défaut, Colab n'utilise pas de GPU mais de la CPU. Il est donc nécessaire
d'éditer les paramètres d'exécution du Notebook
- Dans le menu `Exécution`, cliquer sur `Modifier le type d'exécution`
- Sélectionner `GPU` sous `Accélérateur matériel`
{{% /box %}}

```{=html}
</div>
```
:::

# Contexte

La publication par l'organisation [Open AI](https://openai.com/) de
son modèle de génération de contenu créatif [Dall-E-2](https://openai.com/dall-e-2/)
La publication en avril 2022 par l'organisation [Open AI](https://openai.com/) de
son modèle de génération de contenu créatif [`Dall-E-2`](https://openai.com/dall-e-2/)
(un jeu de mot mélangeant Dali et Wall-E) a créé un bruit inédit dans
le monde de la _data-science_.
Un compte twitter ([@Weird Dall-E Mini Generations](https://twitter.com/weirddalle))
propose de nombreuses générations de contenu drôles ou incongrues.
le monde de la _data-science_[^1].

L'inconvénient principal de `Dall-E`
pour générer facilement du contenu
est que le nombre de contenu pouvant être créé
avec un accès gratuit est limité (50 crédits gratuits par mois)[^2].
Depuis le 22 Août 2022, un générateur de contenu
similaire est disponible gratuitement,
avec une licence plus permissive[^3]. Ce générateur, développé
par une équipe de chercheurs [@Rombach_2022_CVPR],
s'appelle `Stable Diffusion` ([dépôt `Github` pour le code source](https://github.com/CompVis/stable-diffusion) et
[dépôt `HuggingFace` pour le modèle mis à disposition](https://huggingface.co/CompVis/stable-diffusion-v1-4)[^4]).
Un [excellent article de blog](https://huggingface.co/blog/stable_diffusion) décrit la démarche de `Stable Diffusion`. La plupart des exemples originaux
dans cette partie seront basés sur `Stable Diffusion`.

[^1]: _[The Economist](https://www.economist.com/news/2022/06/11/how-a-computer-designed-this-weeks-cover)_ a par exemple consacré
un numéro a ce sujet. Ce bruit sur la capacité des
intelligences artificielle à générer du contenu créatif
a d'ailleurs été amplifié plus récemment
avec la publication du _chatbot_ `chatGPT`.
Le bloggeur tech Casey Newton a pu parler d'une
[révolution créative dans le monde de l'IA](https://www.platformer.news/p/how-dall-e-could-power-a-creative).

Voici par exemple l'une des productions possibles de DALL-E-2
[^2]: Au départ, la liste d'attente de deux semaines pour pouvoir créer un compte
a également été un frein. Celle-ci a néanmoins rapidement été levée.

[^3]: Il est notamment possible de réutiliser l'image générée à des fins commerciales. En revanche, il est interdit de chercher à nuire à une personne. Pour cette raison, il est fréquent que les visages de personnes célèbres soient floutés pour éviter la création de contenu nuisant à leur réputation.

[^4]: `Huggingface` est une plateforme de partage de modèles de type réseau de neurone. Les utilisateurs de réseaux de neurone peuvent
ainsi mettre à disposition le résultat de leurs travaux sous forme d'API pour faciliter la réutilisation de leurs
modèles ou réutiliser facilement des modèles, ce qui évite de les ré-entraîner (ce qui aurait un coût écologique non
négligeable comme expliqué dans le chapitre introductif).


`Dall-E-2` et `StableDiffusion`
sont des modèles généralistes.
D'autres modèles, plus spécialisés,
existent également.
Le modèle [`Midjourney`](https://en.wikipedia.org/wiki/Midjourney)
(produit propriétaire de la société du même nom)
permet la production de contenu
artistique, [DreamBooth](https://dreambooth.github.io/) (développé par Google)
est spécialisé dans la génération de contenu dans un nouveau
contexte.

Le principe de tous ces modèles est le même: un utilisateur
donne une instruction (une ou plusieurs phrases) et l'intelligence
artificielle l'interprète et génère une image censée être
cohérente avec l'instruction.

Voici par exemple l'une des productions possibles de `DALL-E-2`

![](https://upload.wikimedia.org/wikipedia/commons/2/2b/A_Shiba_Inu_dog_wearing_a_beret_and_black_turtleneck_DALLE2.jpg)

_"A Shiba Inu dog wearing a beret and black turtleneck"_

Et voici un premier exemple de production humoristique faite à partir de Mini Dall-E, la version

`Midjourney`, spécialisé dans le contenu esthétique,
génèrera l'image suivante avec l'instruction _"mechanical dove"_:

![](https://upload.wikimedia.org/wikipedia/commons/thumb/a/a9/A_mechanical_dove_8274822e-52fe-40fa-ac4d-f3cde5a332ae.png/250px-A_mechanical_dove_8274822e-52fe-40fa-ac4d-f3cde5a332ae.png)

`StableDiffusion`, modèle généraliste comme `Dall-E`,
crééra le contenu suivant avec
l'instruction _"A photograph of an astronaut riding a horse"_:

!["A photograph of an astronaut riding a horse"](https://upload.wikimedia.org/wikipedia/commons/thumb/3/32/A_photograph_of_an_astronaut_riding_a_horse_2022-08-28.png/250px-A_photograph_of_an_astronaut_riding_a_horse_2022-08-28.png)

Enfin, `DreamBooth` pourra lui introduire un chien dans une grande variété
de contextes:

![](https://dreambooth.github.io/DreamBooth_files/teaser_static.jpg)


Un compte _Twitter_ ([@Weird Dall-E Mini Generations](https://twitter.com/weirddalle))
propose de nombreuses générations de contenu drôles ou incongrues.
Voici un premier exemple de production humoristique faite à partir de Mini Dall-E, la version
publique:


Expand All @@ -96,7 +178,8 @@ Ainsi qu'un deuxième:
{{< tweet user="weirddalle" id="1556573904600268801" >}}


Dall-E-2 s'appuie sur des réseaux de neurone à différents niveaux :
Les modèles `Dall-E-2` et `Stable Diffusion`
s'appuient sur des réseaux de neurone à différents niveaux :

- le contenu de la phrase est analysé par un réseau de neurone similaire (mais bien sûr plus évolué) que
ceux que nous avons présenté dans la partie [NLP](#nlp)
Expand All @@ -107,25 +190,6 @@ modèles entraînés à reconnaître des images

Illustration du fonctionnement de ce type de générateur d'image (ici à partir de `Stable Diffusion`)

Jusqu'à présent, l'inconvénient principal de `Dall-E`
pour générer facilement du contenu
était que le nombre de contenu pouvant être créé
avec un accès gratuit était limité (50 crédits gratuits par mois).
Depuis le 22 Août 2022, un générateur de contenu
similaire est disponible gratuitement,
avec une licence plus permissive[^1]. Ce générateur, développé
par une équipe de chercheurs [@Rombach_2022_CVPR],
s'appelle `Stable Diffusion` ([dépôt `Github` pour le code source](https://github.com/CompVis/stable-diffusion) et
[dépôt `HuggingFace` pour le modèle mis à disposition](https://huggingface.co/CompVis/stable-diffusion-v1-4)[^2]).
Un [excellent article de blog](https://huggingface.co/blog/stable_diffusion) décrit la démarche de `Stable Diffusion`.


[^1]: Il est notamment possible de réutiliser l'image générée à des fins commerciales. En revanche, il est interdit de chercher à nuire à une personne. Pour cette raison, il est fréquent que les visages de personnes célèbres soient floutés pour éviter la création de contenu nuisant à leur réputation.

[^2]: `Huggingface` est une plateforme de partage de modèles de type réseau de neurone. Les utilisateurs de réseaux de neurone peuvent
ainsi mettre à disposition le résultat de leurs travaux sous forme d'API pour faciliter la réutilisation de leurs
modèles ou réutiliser facilement des modèles, ce qui évite de les ré-entraîner (ce qui aurait un coût écologique non
négligeable comme expliqué dans le chapitre introductif).

Les images générées par `Stable Diffusion` sont également impressionnantes:

Expand Down

0 comments on commit 8f24e44

Please sign in to comment.