Github: https://github.com/NVIDIA/pix2pixHD
pix2pixHD
[プロジェクト] [Youtube] [ペーパー]
高解像度(例:2048×1024)のフォトリアリスティックなイメージ – イメージ変換のための私たちの方法のPytorch実装。 セマンティックラベルマップをフォトリアリスティックイメージに変換したり、フェイスラベルマップからポートレイトを合成するために使用できます。
条件付きGANによる高解像度画像合成と意味操作
Ting-Chun Wang 1 、 Ming-Yu Liu 1 、 Jun-Yan Zhu 2 、Andrew Tao 1 、 Jan Kautz 1 、 Bryan Catanzaro 1
1 NVIDIA Corporation、 2 UC Berkeley
arxiv、2017年。
2k / 1k解像度でのイメージ – イメージ変換
- 私たちのラベルからストリートビューの結果
– インタラクティブな編集結果
– ストリートビューの追加結果
- レーベルとインタラクティブな編集結果
- 私たちの編集インターフェース
前提条件
- LinuxまたはmacOS
- Python 2または3
- NVIDIA GPU(12Gまたは24Gメモリ)+ CUDA cuDNN
入門
インストール
- PyTorchと依存関係をhttp://pytorch.orgからインストールする
- Pythonライブラリをインストールします。
pip install dominate
- このレポをクローン:
git clone https://github.com/NVIDIA/pix2pixHD
cd pix2pixHD
テスト
- いくつかの例のCityscapesテスト画像は、
datasets
フォルダに含まれています。 - 事前に訓練されたCityscapesモデルをこちらからダウンロードしてください(Googleドライブリンク)
./checkpoints/label2city_1024p/
- モデルをテストします(
bash ./scripts/test_1024p.sh
)。
#!./scripts/test_1024p.sh
python test.py --name label2city_1024p --netG local --ngf 32 --resize_or_crop none
テスト結果はhtmlファイルに保存されます: ./results/label2city_1024p/test_latest/index.html
/ ./results/label2city_1024p/test_latest/index.html
/ ./results/label2city_1024p/test_latest/index.html
/ ./results/label2city_1024p/test_latest/index.html
。
さらにスクリプトの例はscripts
ディレクトリにあります。
データセット
- Cityscapesデータセットを使用します。 完全なデータセットでモデルをトレーニングするには、 公式サイトからダウンロードしてください(登録が必要です)。 ダウンロード後、サンプルイメージと同じ方法で
datasets
フォルダの下に置いてください。
トレーニング
- モデルを1024 x 512の解像度で
bash ./scripts/train_512p.sh
(bash ./scripts/train_512p.sh
):
#!./scripts/train_512p.sh
python train.py --name label2city_512p
- トレーニング結果を表示するには、中間結果を
./checkpoints/label2city_512p/web/index.html
で./checkpoints/label2city_512p/web/index.html
して./checkpoints/label2city_512p/web/index.html
。 テンソルフローがインストールされている場合、トレーニングスクリプトに--tf_log
を追加することで、./checkpoints/label2city_512p/logs
ボードのログが./checkpoints/label2city_512p/logs
されます。
マルチGPUトレーニング
- 複数のGPUを使用してモデルを
bash ./scripts/train_512p_multigpu.sh
(bash ./scripts/train_512p_multigpu.sh
):
#!./scripts/train_512p_multigpu.sh
python train.py --name label2city_512p --batchSize 8 --gpu_ids 0,1,2,3,4,5,6,7
注:これはテストされておらず、単一のGPUのみを使用してモデルを訓練しました。 ご自身の裁量でご利用ください。
フル解像度でのトレーニング
- フル解像度(2048 x 1024)で画像をトレーニングするには、24Gメモリを搭載したGPUが必要です(
bash ./scripts/train_1024p_24G.sh
)。 12GメモリのGPUしか利用できない場合は、トレーニング中に画像をトリミングする12Gスクリプト(bash ./scripts/train_1024p_12G.sh
)を使用してください。 このスクリプトを使用した場合のパフォーマンスは保証されません。
独自のデータセットを使用したトレーニング
- 自分のデータセットで訓練したい場合は、ピクセル値がオブジェクトラベル(つまり、0,1、…、N-1、Nはラベルの数)に対応する1チャンネルのラベルマップを生成してください。 これは、ラベルマップからワンホットベクトルを生成する必要があるためです。 トレーニングとテストの両方で
--label_nc N
も指定してください。 - あなたの入力がラベルマップでない場合は、RGBカラーを入力として直接使用する
--label_nc 0
を指定してください。 フォルダは、train_A
、train_B
代わりにtrain_label
、train_img
という名前にする必要があります。ここで目標はAからBへのイメージの翻訳です。 - インスタンスマップを持たない場合や、それらを使用したくない場合は、–
--no_instance
を指定して--no_instance
。 - 前処理のデフォルト設定は
scale_width
で、アスペクト比を維持しながらすべてのトレーニング画像の幅をopt.loadSize
(1024)にopt.loadSize
ます。 別の設定が必要な場合は、–--resize_or_crop
オプションを使用して設定を変更してください。 たとえば、scale_width_and_crop
はイメージのサイズを最初に変更してイメージの幅をopt.loadSize
変更した後、サイズをランダムにトリミングします(opt.fineSize, opt.fineSize)
。crop
はサイズ変更のステップをスキップし、ランダムなトリミングのみを実行します。 前処理を行わない場合は、none
を指定してください。画像が32で割り切れるかどうかを確認する以外は何もしません。
その他のトレーニング/テストの詳細
- フラグ:すべてのトレーニングフラグについては
options/train_options.py
とoptions/base_options.py
を参照してください。options/test_options.py
とoptions/base_options.py
をoptions/base_options.py
してすべてのテストフラグを確認してください。 - インスタンスマップ:ラベルマップとインスタンスマップの両方を入力として取り込みます。 インスタンスマップを使用しない場合は、
--no_instance
フラグを指定してください。
引用
これがあなたの研究に有益だと分かったら、以下を使用してください。
@article{wang2017highres,
title={High-Resolution Image Synthesis and Semantic Manipulation with Conditional GANs},
author={Ting-Chun Wang and Ming-Yu Liu and Jun-Yan Zhu and Andrew Tao and Jan Kautz and Bryan Catanzaro},
journal={arXiv preprint arXiv:1711.11585},
year={2017}
}
謝辞
このコードはPytorch-CycleGAN-and-pix2pixから大いに借りています。