トレーニング/生成GANのコード、つまりフォント設計用。
生成されたフォント、それらはさまざまなスタイルを持ち、キャラクターとして読みやすいです。 
スタイル入力スペースのランダムウォーク。徐々に変換されたフォントを見ることができます。


























Autherは、次の環境のみで実行中のコードをチェックしました。
最新の環境で実行したい場合は、必要に応じていくつかのファイルを修正してください。
まず、このリポジトリをクローンします。このリポジトリにはサブモジュール(font2img)が含まれているため、再--recursive
git clone --recursive https://github.com/uchidalab/fontdesign_gan
cd fontdesign_gan
GPUとDockerを使用する場合、環境をセットアップするのは簡単です。要件ライブラリはdockerfileに記載されています。
GPU Driver/Nvidia Dockerをインストールし、次のコマンドを実行します。
docker build -t fontdesign_gan .
docker run --runtime=nvidia -it --rm -p 6006:6006 --volume `pwd`:/workdir -w /workdir/ fontdesign_gan
GPUで:GPUドライバー/CUDA/CUDNNをインストールし、次のコマンドを実行します。
pip install -r requirements_gpu.txt
CPUで:次のコマンドを実行します。
pip install -r requirements_cpu.txt
フォントファイル(.ttf)を画像ファイル(.png)に変換し、hdf5ファイル(.h5)に詰めます
ディレクトリ(例: ./ttfs )を作成し、フォントファイルをコピーします。宛先パス(ex。./ ./src/myfonts.h5 myfonts.h5)を設定して実行します。
python main.py --ttf2png --png2h5 --font_ttfs ./ttfs --font_h5 ./src/myfonts.h5
--ttf2png変換のオプションであり、画像ファイルは./src/pngs/{YYYY-MM-DD_HHmmss}に保存されます。 --font_pngsオプションを使用すると、自分でパスを設定できます。
--png2h5は梱包のオプションです。パックされたファイルは、 --font_h5オプションで設定したパスに保存されます。
パックされたファイルのパスを設定して実行します。
python main.py --train --font_h5 ./src/myfonts.h5
結果は./result/{YYYY-MM-DD_HHmmss}に保存されます。 --gan_dirで目的地を設定できます。
logディレクトリでは、同じファイルを保存しました:フラグのログ、最新/維持Tensorflowのダンプ(.ckpt*)、Tensorboardのログ。
sampleディレクトリでは、一時的に生成されたフォントが保存されます。
トレーニング中、テンソルボードも実行されています。コマンドラインに表示されるアクセスURL。
訓練されたGanの出力ディレクトリとJSONファイルのパスを設定します。
JSONファイルは、スタイル/キャラクターIDを作成する必要があります。スタイルIDは、ランダムマトリックスに対応します。文字IDは文字に対応します。
IDは順番にロードされており、いくつかのオペランドを使用できます。たとえば、JSONファイルがフォローしている場合:
{
"style_ids": [
"0", "5", "21", "37", "17..39:4"
],
"char_ids": [
"0-3", "6*4"
],
"col_n": 4
}
入力IDは次のようになります:
style_ids = [0, 5, 21, 37, (between 17 and 39 with 4 steps)]
char_ids = [0, 1, 2, 3, 6, 6, 6, 6]
また、結果列の#は4です。サンプルファイル( ./jsons/sample*.json )も確認してください。
JSONファイルを準備した後、次のように実行します。
python main.py --generate --gan_dir ./result/{trained} --ids ./jsons/sample01.json
生成されたフォントは./result/{trained}/generated/{YYYY-MM-DD_HHmmss}.png {treand}/generated/ {yyyymm-dd_hhmmss} .pngに保存されます。 --gen_nameを使用してファイル名を出力することができます。
生成された画像は次のようなものです。 
ランダムなウォーキングフォントが必要な場合は、 --generate_walkを使用してください。 JSONファイルは必要ありません。
python main.py --generate_walk --gan_dir ./result/{YYYY-MM-DD_HHmmss} --char_img_n 256
256スタイルのフォントが生成され、徐々に変換されます。
多くのオプションがあります。次の表を確認してください。
| のために | オプション | 説明 | デフォルト |
|---|---|---|---|
| 準備してください、トレーニング | --img_width | 画像の幅。 | 64 |
| 準備してください、トレーニング | --img_height | 画像の高さ。 | 64 |
| 準備してください、トレーニング | --img_dim | 画像の寸法。 | 3 |
| 準備してください、トレーニング | --chars_type | 文字タイプ、「Caps」、「Hiragana」、または「Caps、Hiragana」を選択できます | 「キャップ」 |
| 列車、生成 | --gpu_ids | 使用するGPU ID。このタイプは文字列です(ex。 "0、1") | (自動的に設定) |
| 列車、生成 | --batch_size | Ganのバッチサイズ | 256 |
| 電車 | --arch | Ganモデルのアーキテクチャ。 「dcgan」または「resnet」を選択してください | 「dcgan」 |
| 電車 | --style_ids_n | スタイルIDの# | 256 |
| 電車 | --style_z_size | style_zのサイズ | 100 |
| 電車 | --gan_epoch_n | エポックの反復の# | 10000 |
| 電車 | --critic_n | 批評家の反復 | 5 |
| 電車 | --sample_imgs_interval | サンプル画像を保存する間隔 | 10 |
| 電車 | --sample_col_n | サンプル画像の列の# | 26 |
| 電車 | --keep_ckpt_interval | Tensorflowのダンプを維持する間隔 | 250 |
| 電車 | --run_tensorboard | テンソルボードを実行するかどうか | 真実 |
| 電車 | --tensorboard_port | テンソルボードページ用のポート | 6006 |