SPADEの操作方法
前に書いてある
現在の 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の学習に役立つことを願っています。