arxiv | bibtex
私たちは、アーティストがどのように機能するかについての理解に触発された細かい詳細を示す、充填された領域を再現するより良い仕事をする画像の開始のための新しいアプローチを開発します。エッジジェネレーターで構成される2段階の敵対モデルEdgeConnectを提案します。エッジジェネレーターは、画像の欠落領域(規則的および不規則な両方)のエッジを幻覚し、画像完了ネットワークは、幻覚エッジをアプリオリとして使用して欠落している領域を埋めます。システムの詳細な説明は、私たちの論文に記載されています。

git clone https://github.com/knazeri/edge-connect.git
cd edge-connectpip install -r requirements.txtPlaces2、Celeba、Paris Street-Viewデータセットを使用しています。完全なデータセットでモデルをトレーニングするには、公式Webサイトからデータセットをダウンロードしてください。
ダウンロードした後、 scripts/flist.pyを実行して、トレーニング、テスト、および検証セットファイルリストを生成します。たとえば、Places2データセットの実行でトレーニングセットファイルリストを生成するには:
mkdir datasets
python ./scripts/flist.py --path path_to_places2_train_set --output ./datasets/places_train.flist私たちのモデルは、Liu et alが提供する不規則なマスクデータセットでトレーニングされています。
または、人間の手によって描かれた5,000万ストロークの組み合わせであるKarim Iskakovによるクイックドロー不規則なマスクデータセットをダウンロードすることもできます。
上記のように、 scripts/flist.pyを使用して、トレーニング、テスト、および検証セットマスクファイルリストを生成してください。
次のリンクを使用して事前に訓練されたモデルをダウンロードし、 ./checkpoints CheckPointsディレクトリの下にそれらをコピーします。
場所2 |セレバ|パリストリートビュー
または、次のスクリプトを実行して、事前に訓練されたモデルを自動的にダウンロードすることもできます。
bash ./scripts/download_model.shモデルをトレーニングするには、 config.yamlファイルの例と同様のconfigファイルを作成し、チェックポイントディレクトリの下にコピーします。モデル構成の詳細については、構成ガイドをお読みください。
Edgeconnectは、3つの段階でトレーニングされています。1)エッジモデルのトレーニング、2)インペイントモデルのトレーニング、3)共同モデルのトレーニング。モデルをトレーニングするには:
python train.py --model [stage] --checkpoints [path to checkpoints]たとえば./checkpoints/places2 checkpoints/places2ディレクトリの下のplaces2データセットでエッジモデルをトレーニングするには:
python train.py --model 1 --checkpoints ./checkpoints/places2モデルの収束は、データセットからデータセットまで異なります。たとえば、Places2データセットは2つのエポックのいずれかに収束しますが、Celebaのような小さなデータセットは収束するためにほぼ40のエポックを必要とします。構成ファイルでMAX_ITERS値を変更することにより、トレーニングの数を設定できます。
モデルをテストするには、 config.yamlファイルの例と同様のconfigファイルを作成し、チェックポイントディレクトリの下にコピーします。モデル構成の詳細については、構成ガイドをお読みください。
3つの段階すべてでモデルをテストできます。1)エッジモデル、2)インペイントモデル、3)ジョイントモデル。いずれの場合も、入力画像(マスク付きの画像)とグレースケールマスクファイルを提供する必要があります。マスクファイルが入力画像のマスク領域全体を覆うことを確認してください。モデルをテストするには:
python test.py
--model [stage]
--checkpoints [path to checkpoints]
--input [path to input directory or file]
--mask [path to masks directory or mask file]
--output [path to the output directory] ./examplesディレクトリの下にいくつかのテスト例を提供します。事前に訓練されたモデルをダウンロードして実行してください。
python test.py
--checkpoints ./checkpoints/places2
--input ./examples/places2/images
--mask ./examples/places2/masks
--output ./checkpoints/resultsこのスクリプトは./examples/places2/images places2/maskディレクトリに対応するマスクを使用して./examples/places2/mask /places2/imagesにすべての画像を塗りつぶし、結果を./checkpoints/resultsディレクトリに保存します。デフォルトでは、 test.pyスクリプトはステージ3( --model=3 )で実行されます。
モデルを評価するには、最初に検証セットに対してテストモードでモデルを実行し、結果をディスクに保存する必要があります。 PSNR、SSIM、および平均絶対誤差を使用してモデルを評価するために、ユーティリティ./scripts/metrics.pyを提供します。
python ./scripts/metrics.py --data-path [path to validation set] --output-path [path to model output] FréchetInception距離(FIDスコア)run ./scripts/fid_score.py測定するには。 PytorchのInceptionモデルからの前提条件の重みを使用するFIDのPytorch実装をここから利用しています。
python ./scripts/fid_score.py --path [path to validation, path to model output] --gpu [GPU id to use]デフォルトでは、Canny Edge Detectorを使用して、入力画像からエッジ情報を抽出します。外部エッジ検出(たとえば、総合的にネストされたエッジ検出)でモデルをトレーニングする場合は、上記のようにscripts/flist.pyを使用して、トレーニング/テストセット全体のエッジマップを前処理として生成し、対応するファイルリストを生成する必要があります。ファイル名とディレクトリ構造がトレーニング/テストセットに一致することを確認してください。構成ファイルでEDGE=2指定することにより、外部エッジ検出に切り替えることができます。
モデル構成は、チェックポイントディレクトリの下にあるconfig.yamlファイルに保存されます。次のテーブルは、構成ファイルで利用可能なすべてのオプションのドキュメントを提供します。
| オプション | 説明 |
|---|---|
| モード | 1:列車、2:テスト、3:評価 |
| モデル | 1:エッジモデル、2:インペイントモデル、3:エッジインペイントモデル、4:ジョイントモデル |
| マスク | 1:ランダムブロック、2:半分、3:外部、4:外部 +ランダムブロック、5:外部 +ランダムブロック +ハーフ |
| 角 | 1:キャニー、2:外部 |
| nms | 0:非マックス抑制なし、1:外部エッジ上の非マックス抑制 |
| シード | 乱数ジェネレーターシード |
| GPU | GPU IDのリスト、コンマ分離リストなど[0,1] |
| デバッグ | 0:デバッグなし、1:デバッグモード |
| 冗長 | 0:言語なし、1:出力出力コンソールの詳細統計 |
| オプション | 説明 |
|---|---|
| Train_flist | トレーニングセットファイルリストを含むテキストファイル |
| val_flist | 検証セットファイルリストを含むテキストファイル |
| test_flist | テストセットファイルリストを含むテキストファイル |
| train_edge_flist | トレーニングセット外部エッジファイルリストを含むテキストファイル(Edge = 2のみ) |
| val_edge_flist | 検証を含むテキストファイル外部エッジファイルリストを設定します(Edge = 2のみ) |
| test_edge_flist | テストを含むテキストファイル外部エッジファイルリスト(Edge = 2のみ) |
| train_mask_flist | トレーニングセットマスクファイルリストを含むテキストファイル(マスク= 3、4、5のみ) |
| val_mask_flist | 検証セットマスクファイルリストを含むテキストファイル(マスク= 3、4、5のみ) |
| test_mask_flist | テストセットマスクファイルリストを含むテキストファイル(マスク= 3、4、5のみ) |
| オプション | デフォルト | 説明 |
|---|---|---|
| LR | 0.0001 | 学習率 |
| D2G_LR | 0.1 | 判別器/発電機学習率の比率 |
| ベータ1 | 0.0 | Adam Optimizer Beta1 |
| ベータ2 | 0.9 | Adam Optimizer Beta2 |
| batch_size | 8 | 入力バッチサイズ |
| input_size | 256 | トレーニング用の画像サイズを入力します。 (元のサイズの場合) |
| シグマ | 2 | キャニーエッジ検出器で使用されるガウスフィルターの標準偏差 (0:ランダム、-1:エッジなし) |
| max_iters | 2e6 | モデルをトレーニングするための最大反復数 |
| edge_threshold | 0.5 | エッジ検出しきい値(0-1) |
| l1_loss_weight | 1 | L1損失体重 |
| fm_loss_weight | 10 | 機能マッチング損失の重量 |
| style_loss_weight | 1 | スタイルの損失体重 |
| content_loss_weight | 1 | 知覚損失体重 |
| inpaint_adv_loss_weight | 0.01 | 敵対的な損失体重 |
| gan_loss | nsgan | NSGAN :不飽和ガン、 LSGAN :最小二乗ガン、ヒンジ:ヒンジ損失ガン |
| gan_pool_size | 0 | 偽の画像プールサイズ |
| save_interval | 1000 | モデルを保存する前に待つための反復数(0:決して) |
| eval_interval | 0 | モデルを評価する前に何回待つ必要がありますか(0:決して) |
| log_interval | 10 | トレーニングの損失を記録する前に待つために何回のイテレーションがありますか(0:決して) |
| sample_interval | 1000 | サンプルを保存する前に待つ必要があるイテレーション数(0:決して) |
| sample_size | 12 | 各サムリング間隔でサンプリングする画像の数 |
Creative Commons Attribution-NonCommercial 4.0 Internationalの下でライセンスされています。
それ以外の場合を除き、このコンテンツはCC BY-NCライセンスの下で公開されています。つまり、商業目的で資料を使用せず、適切なクレジットを提供し、ライセンスへのリンクを提供しない限り、コピー、リミックス、変換、およびコンテンツに基づいて構築できます。
このコードを調査に使用する場合は、論文を引用してくださいEdgeConnect:生成イメージ敵対的なエッジ学習またはedgeConnect:EdgeConnect:Edge Prowinctionを使用した構造ガイド画像の入力:
@inproceedings{nazeri2019edgeconnect,
title={EdgeConnect: Generative Image Inpainting with Adversarial Edge Learning},
author={Nazeri, Kamyar and Ng, Eric and Joseph, Tony and Qureshi, Faisal and Ebrahimi, Mehran},
journal={arXiv preprint},
year={2019},
}
@InProceedings{Nazeri_2019_ICCV,
title = {EdgeConnect: Structure Guided Image Inpainting using Edge Prediction},
author = {Nazeri, Kamyar and Ng, Eric and Joseph, Tony and Qureshi, Faisal and Ebrahimi, Mehran},
booktitle = {The IEEE International Conference on Computer Vision (ICCV) Workshops},
month = {Oct},
year = {2019}
}