arxiv | Bibtex
我們開發了一種新的圖像介紹方法,該方法在復制填充區域的重現方面做得更好,這些區域表現出了我們對藝術家如何工作的理解的啟發的精細細節:首先,顏色,彩色。我們提出了一個兩階段的對抗模型edgeconnect,該模型由邊緣生成器組成,然後是圖像完成網絡。邊緣發電機幻覺會幻覺圖像的缺失區域(常規和不規則),圖像完成網絡使用幻覺的邊緣作為先驗的填充缺失區域。該系統的詳細說明可以在我們的論文中找到。

git clone https://github.com/knazeri/edge-connect.git
cd edge-connectpip install -r requirements.txt我們使用Ploce2,Celeba和Paris街景視圖數據集。要在完整數據集中培訓模型,請從官方網站下載數據集。
下載後,運行scripts/flist.py以生成火車,測試和驗證設置文件列表。例如,在Place2數據集運行上生成訓練集文件列表:
mkdir datasets
python ./scripts/flist.py --path path_to_places2_train_set --output ./datasets/places_train.flist我們的模型經過Liu等人提供的不規則蒙版數據集的培訓。您可以從其網站下載公開可用的不規則蒙版數據集。
另外,您可以下載Karim Iskakov的快速繪製不規則的蒙版數據集,該數據集是由人手繪製的5000萬筆筆觸的組合。
請使用scripts/flist.py來生成火車,測試和驗證設置蒙版文件列表,如上所述。
使用以下鏈接下載預訓練的模型,並在./checkpoints目錄下複製它們。
place2 | Celeba |巴黎街景觀
另外,您可以運行以下腳本以自動下載預訓練的模型:
bash ./scripts/download_model.sh要訓練模型,請創建一個類似於示例配置文件的config.yaml文件,然後在您的檢查點目錄中復制它。閱讀配置指南以獲取有關模型配置的更多信息。
EdgeConnect分為三個階段進行訓練:1)訓練邊緣模型,2)訓練塗料模型和3)訓練聯合模型。訓練模型:
python train.py --model [stage] --checkpoints [path to checkpoints]例如,在./checkpoints/places2目錄下訓練ploce2數據集上的邊緣模型:
python train.py --model 1 --checkpoints ./checkpoints/places2模型的收斂性因數據集而異。例如,place2數據集在兩個時期之一中收斂,而像Celeba這樣的較小數據集則需要將近40個時代進行收斂。您可以通過更改配置文件中的MAX_ITERS值來設置訓練迭代次數。
要測試模型,請創建一個類似於示例配置文件的config.yaml文件,然後在您的檢查點目錄中復制它。閱讀配置指南以獲取有關模型配置的更多信息。
您可以在所有三個階段測試模型: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/mask Directory中的./ examples2/images中的所有圖像在./examples/places2/images中註冊所有圖像,並將結果保存在./checkpoints/results目錄中。默認情況下, test.py腳本在階段3( --model=3 )上運行。
要評估模型,您需要首先在測試模式下針對驗證集運行模型,並將結果保存在磁盤上。我們提供一個實用程序./scripts/metrics.py以使用PSNR,SSIM和平均絕對誤差來評估模型:
python ./scripts/metrics.py --data-path [path to validation set] --output-path [path to model output]測量Fréchet成立距離(FID得分)運行./scripts/fid_score.py 。我們利用此處的FID的Pytorch實現,該實現使用了Pytorch Inception模型的預處理權重。
python ./scripts/fid_score.py --path [path to validation, path to model output] --gpu [GPU id to use]默認情況下,我們使用Canny Edge檢測器從輸入圖像中提取邊緣信息。如果您想使用外部邊緣檢測訓練模型(例如,整體上嵌入邊緣檢測),則需要使用scripts/flist.py為整個培訓/測試集生成整個培訓/測試集的邊緣地圖,如上所述。請確保文件名和目錄結構與您的培訓/測試集匹配。您可以通過在配置文件中指定EDGE=2來切換到外部邊緣檢測。
模型配置存儲在您的檢查點目錄下的config.yaml文件中。以下表提供了配置文件中所有可用選項的文檔:
| 選項 | 描述 |
|---|---|
| 模式 | 1:火車,2:測試,3:評估 |
| 模型 | 1:邊緣型號,2:塗漆模型,3:邊緣投入模型,4:聯合模型 |
| 面具 | 1:隨機塊,2:一半,3:外部,4:外部 +隨機塊,5:外部 +隨機塊 +一半 |
| 邊緣 | 1:Canny,2:外部 |
| NMS | 0:沒有非最大抑制,1:外部邊緣上的非最大抑制 |
| 種子 | 隨機數發電機種子 |
| GPU | GPU ID列表,逗號分隔列表,例如[0,1] |
| 偵錯 | 0:沒有調試,1:調試模式 |
| 冗長 | 0:無詳細信息,1:輸出控制台中的輸出詳細統計信息 |
| 選項 | 描述 |
|---|---|
| train_flist | 包含培訓集文件列表的文本文件 |
| val_flist | 包含驗證集文件列表的文本文件 |
| test_flist | 包含測試集文件列表的文本文件 |
| train_edge_flist | 包含訓練集的文本文件外部邊緣文件列表(僅帶有邊緣= 2) |
| val_edge_flist | 包含驗證的文本文件設置外部邊緣文件列表(僅帶有邊緣= 2) |
| test_edge_flist | 文本文件包含測試集的外部邊緣文件列表(僅帶有邊緣= 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 | 歧視者/發電機學習率比 |
| beta1 | 0.0 | 亞當優化器beta1 |
| beta2 | 0.9 | Adam Optimizer Beta2 |
| batch_size | 8 | 輸入批處理大小 |
| input_size | 256 | 輸入圖像大小用於培訓。 (原始尺寸為0) |
| 西格瑪 | 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 :非飽和gan, LSGAN :最小二乘gan,鉸鏈:鉸鏈損失gan |
| gan_pool_size | 0 | 假圖像池尺寸 |
| save_interval | 1000 | 在保存模型之前要等多少迭代(0:從不) |
| eval_interval | 0 | 在評估模型之前等待多少迭代(0:從不) |
| log_interval | 10 | 在記錄培訓損失之前等待多少迭代(0:從不) |
| sample_interval | 1000 | 保存樣品之前要等多少迭代(0:從不) |
| sample_size | 12 | 在每個samling間隔上採樣的圖像數量 |
根據創意共享歸因於非商業4.0國際許可。
除非另有說明,否則此內容是根據CC BY-NC許可發布的,這意味著您可以在內容上複製,混音,轉換和構建,只要您不將材料用於商業目的並提供適當的信用並提供了鏈接。
如果您使用此代碼進行研究,請引用我們的論文edgeconnect:使用對抗邊緣學習或edgeconnect插入的生成圖像:使用邊緣預測的結構指導圖像插圖:
@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}
}