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}
}