SPADE(GauGAN)コード実行方法

前に書いてある

現在の Label to Image のゴールキーパーである SPADE は非常に学ぶ価値があり、数日前に彼のモデルを再現したので、操作方法を共有します。

Pix2PixHD と SPADE が入力として RGB を使用しない理由

このブログを参照してくださいhttps://blog.csdn.net/iiiiiiimp/article/details/123459193
実際、これは、シングルチャネル セマンティック マップ ラベルに対してワンホット エンコーディングを実行し、それをジェネレーターに与えることです。
ここに画像の説明を挿入

スペードの動かし方

ここでは例として 512 * 512 のサイズの写真を撮り、ラベルはデフォルトのシングルチャンネル 8 ビット サイズに設定されています。
(1) RGB ラベル画像を入力として使いたい
SPADE では Pix2PixHD のようにパラメータを使って RGB をネットワークに直接送信することはできません--label_nc 0が、--label_ncパラメータ--contain_dontcare_labelを 255 に設定して追加して実行してみました。https://github.com/NVlabs/SPADE/issues/137を参照してください。

python train.py --name 名字 --dataset_mode custom --load_size 512 --crop_size 512 --display_winsize 512 --label_nc 255 --contain_dontcare_label --label_dir 路径/train_label --image_dir 路径/train_img  --no_instance

(2) ラベルのみが入力として使用されます

python train.py --name 名字 --dataset_mode custom --load_size 512 --crop_size 512 --display_winsize 512 --label_nc 类别数 --label_dir 路径/train_label --image_dir 路径/train_img  --no_instance

(3) ラベルとインスタンスが入力として使用されるので、
次のように--no_instance変更する--instance_dirだけです。

python train.py --name 名字 --dataset_mode custom --load_size 512 --crop_size 512 --display_winsize 512 --label_nc 类别数 --label_dir 路径/train_label --image_dir 路径/train_img  --instance_dir 路径/train_inst

(4) 入力画像の幅と高さが等しくない場合
たとえば、ここの画像は 720 * 576 です。
まず 720/576 = 1.25 を計算し、この 1.25 を --aspect_ratioパラメータとして使用します。

python train.py --name 名字 --dataset_mode custom --preprocess_mode none --load_size 720  --crop_size 720 --display_winsize 720  --aspect_ratio 1.25  --label_nc 类别数 --label_dir 路径/train_label --image_dir 路径/train_img --instance_dir 路径/train_inst

考えられる問題

トレーニング効果は良好だが、テスト効果が次のような非常に曖昧な場合は、test.py の model.eval() をコメントアウトするだけです。https://github.com/NVlabs/SPADE/issues/96を参照してください。

(2022/04/28 詳細) 合成スタイルを制御する方法

トレーニング中にハイパーパラメータが使用される場合--use_vae--use_vae各実行によって生成される画像はテスト中に異なるスタイルになりますが、論文の最初のページのようにスタイルを制御するにはどうすればよいでしょうか?
test.py を実行する前に、pix2pix_dataset.py に __getitem__ 関数を追加します。

image = Image.open(image_path)

に変更されました

image = Image.open( self.image_paths[0])

このうち、self.image_paths[0]の0は、テストセットピクチャの0番目のピクチャを使用してエンコードすることを意味し、テストセットピクチャの1番目のピクチャを使用してエンコードしたい場合は、1に変更するだけです。

(2022/07/30 更新) --contain_dontcare_label パラメーター

--contain_dontcare_label気にしないカテゴリを含めるかどうかを示します。citycapes で気にしないカテゴリは最初のカテゴリ、つまりラベルがなく、デフォルト値は 0 です。
ただし、SPADE のドントケア カテゴリのデフォルトは 255 です。
ここに画像の説明を挿入
ただし、SPADE の公式コードでは citycapes データセットが設定されていない--contain_dontcare_labelため、unlabel タイプもタイプとして扱われます。
ここに画像の説明を挿入
しかし、OASIS の街並みデータセットでは、-1 は気にしないカテゴリとして扱われます。
ここに画像の説明を挿入

後ろに書いてある

これは私がまとめたGAN 関連の論文の分析です。この記事がSPADEの学習に役立つことを願っています。

おすすめ

転載: blog.csdn.net/iiiiiiimp/article/details/124027477