Le VAE a un design modulaire. L'encodeur, le décodeur et la VAE sont 3 modèles qui partagent des poids. Après avoir entraîné le modèle VAE, le codeur peut être utilisé pour générer des vecteurs latents. Le décodeur peut être utilisé pour générer des images de police en échantillonnant le vecteur latent à partir d'une distribution gaussienne avec moyenne = 0 et std = 1.
| encodeur | décodeur |
|---|---|
![]() | ![]() |
Taille de l'ensemble de données = Train 5000 et validation 1000 pour chaque classe
largeur, hauteur = 112, 112
taille de police = 25
caractères utilisés = "aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz"
Les images sont générées avec font2png.py
Les polices proviennent des polices Google
| idx | nom de police | Exemples d'images |
|---|---|---|
| 0 | Ebgaramond | ![]() ![]() ![]() ![]() ![]() |
| 1 | Pt_serif | ![]() ![]() ![]() ![]() ![]() |
| 2 | Notosans | ![]() ![]() ![]() ![]() ![]() |
| 3 | Roboto | ![]() ![]() ![]() ![]() ![]() |
| 4 | Vertueux | ![]() ![]() ![]() ![]() ![]() |
| 5 | Bangeurs | ![]() ![]() ![]() ![]() ![]() |
| 6 | Pacifico | ![]() ![]() ![]() ![]() ![]() |
| 7 | Dancingcript | ![]() ![]() ![]() ![]() ![]() |
| 8 | Inconsolata | ![]() ![]() ![]() ![]() ![]() |
| 9 | VT323 | ![]() ![]() ![]() ![]() ![]() |
| époque | 20 | 50 | 200 |
|---|---|---|---|
| enregistrer | ![]() | ![]() | ![]() |
| espace latent | ![]() | ![]() | ![]() |
1 cadre = 1 lot
1 époque = 196 lots
| époque = 1 | époque = 2 | époque = 3 |
|---|---|---|
![]() | ![]() | ![]() |
| époque = 4 | époque = 5 | époque = 6 |
![]() | ![]() | ![]() |

[1] Kingma, Diederik P. et Max Welling. "Bayes variationnel en codage automatique."
[2] Blog Keras: Construire des autoencoders à Keras
[3] Keras Exemple: VAE
[4] Erik Bernhardsson. "Analyser des polices de 50K en utilisant des réseaux de neurones profonds"
[5] TJ Torres. "A Fontastic Voyage: Polices génératives avec des réseaux contradictoires"
[6] Julien Despois. "Visualisation de l'espace latente - bits d'apprentissage en profondeur # 2"