Code de formation / génération de GAn, c'est-à-dire pour la conception de polices.
Polices générées, ils ont divers styles et ils sont lisibles en tant que personnage. 
Promenade aléatoire dans l'espace d'entrée de style. Vous pouvez regarder des polices transformées progressivement.


























L'Auther a vérifié les codes en cours d'exécution dans un environnement suivant:
Si vous souhaitez exécuter avec le dernier environnement, révisez certains fichiers si nécessaire.
Clone d'abord ce référentiel. Ajouter --recursive car ce référentiel contient un sous-module (FONT2IMG)
git clone --recursive https://github.com/uchidalab/fontdesign_gan
cd fontdesign_gan
Si vous utilisez GPU et Docker, il est facile de configurer votre environnement. Les bibliothèques d'exigences sont écrites dans Dockerfile.
Installez GPU Driver / Nvidia Docker et exécutez les commandes suivantes:
docker build -t fontdesign_gan .
docker run --runtime=nvidia -it --rm -p 6006:6006 --volume `pwd`:/workdir -w /workdir/ fontdesign_gan
avec GPU: Installez GPU Driver / CUDA / CUDNN et exécutez la commande suivante:
pip install -r requirements_gpu.txt
avec CPU: Exécutez la commande suivante:
pip install -r requirements_cpu.txt
Convertir des fichiers de police (.TTF) en fichiers d'image (.png) et emballez-les en fichier hdf5 (.h5)
Faites un répertoire (Ex. ./ttfs ) et copiez des fichiers de police. Définir le chemin de destination (Ex ./src/myfonts.h5 ) et exécuter.
python main.py --ttf2png --png2h5 --font_ttfs ./ttfs --font_h5 ./src/myfonts.h5
--ttf2png est l'option de conversion, les fichiers d'image sont enregistrés dans ./src/pngs/{YYYY-MM-DD_HHmmss} . Si vous utilisez l'option --font_pngs , vous pouvez définir le chemin vous-même.
--png2h5 est l'option de l'emballage, le fichier emballé est enregistré dans l'option de chemin avec lesquelles vous définissez --font_h5 .
Définissez le chemin du fichier emballé et exécutez.
python main.py --train --font_h5 ./src/myfonts.h5
Les résultats sont enregistrés dans ./result/{YYYY-MM-DD_HHmmss} . Vous pouvez définir la destination avec --gan_dir .
Dans le répertoire log , enregistré les mêmes fichiers: journal de Flags, Dernier / Keep TensorFlow's Dumps (.Ckpt *), le journal de Tensorboard.
Dans le répertoire sample , les polices qui ont généré des temporaires sont enregistrées.
Pendant l'entraînement, Tensorboard fonctionne également. URL d'accès qui sera affiché dans la ligne de commande.
Définissez un chemin du répertoire de sortie de Gan formé et un fichier JSON.
Le fichier JSON doit être écrit des ID de style / caractère. Un ID de style correspond à une matrice aléatoire. Un ID de caractère correspond à un caractère.
Les ID sont chargés dans l'ordre et vous pouvez utiliser certains opérandes. Par exemple, si le fichier JSON suit:
{
"style_ids": [
"0", "5", "21", "37", "17..39:4"
],
"char_ids": [
"0-3", "6*4"
],
"col_n": 4
}
Les ID d'entrée seront comme ceci:
style_ids = [0, 5, 21, 37, (between 17 and 39 with 4 steps)]
char_ids = [0, 1, 2, 3, 6, 6, 6, 6]
et, le nombre de colonnes de résultats est 4. Vérifiez également les exemples de fichiers ( ./jsons/sample*.json ).
Après avoir préparé le fichier JSON, exécutez comme ceci:
python main.py --generate --gan_dir ./result/{trained} --ids ./jsons/sample01.json
Les polices générées sont enregistrées dans ./result/{trained}/generated/{YYYY-MM-DD_HHmmss}.png /yyyyy-mm-dd_hhmmss }.png. Vous pouvez définir le nom du fichier de sortie avec --gen_name .
L'image générée est comme ceci: 
Si vous voulez des polices de marche aléatoires, utilisez --generate_walk . Un fichier JSON est inutile.
python main.py --generate_walk --gan_dir ./result/{YYYY-MM-DD_HHmmss} --char_img_n 256
256 polices de styles seront générées et elles sont transformées progressivement.
Il existe de nombreuses options. Vérifiez le tableau suivant.
| Pour | Option | Description | Défaut |
|---|---|---|---|
| Préparez-vous, entraînez-vous | --img_width | Largeur des images. | 64 |
| Préparez-vous, entraînez-vous | --img_height | hauteur des images. | 64 |
| Préparez-vous, entraînez-vous | --img_dim | dimension des images. | 3 |
| Préparez-vous, entraînez-vous | --chars_type | Vous pouvez choisir le type de caractères, "Caps", "Hiragana" ou "Caps, Hiragana" | "Caps" |
| Entraîner, générer | --gpu_ids | ID GPU que vous utilisez. ce type est une chaîne (ex. "0, 1") | (Définir automatiquement) |
| Entraîner, générer | --batch_size | Taille du lot pour Gan | 256 |
| Former | --arch | Architecture des modèles GAN. Choisissez "DCGAN" ou "Resnet" | "DCGAN" |
| Former | --style_ids_n | # des identifiants de style | 256 |
| Former | --style_z_size | taille de style_z | 100 |
| Former | --gan_epoch_n | # d'itérations époques | 10000 |
| Former | --critic_n | # des itérations des critiques | 5 |
| Former | --sample_imgs_interval | Intervalle de sauvegarde d'échantillons d'images | 10 |
| Former | --sample_col_n | # des colonnes de l'échantillon d'image | 26 |
| Former | --keep_ckpt_interval | intervalle de maintien des décharges de Tensorflow | 250 |
| Former | --run_tensorboard | Exécutez Tensorboard ou non | Vrai |
| Former | --tensorboard_port | Port pour la page Tensorboard | 6006 |