文章目录

  • 论文链接
  • 概述
  • 方法
  • 实验
  • 结果

论文链接

github地址:https://github.com/knazeri/edge-connect
论文地址:https://arxiv.org/pdf/1901.00212v3.pdf

概述

文章提出了一种两阶段对抗性模型EdgeConnect,包括边缘生成器和图像完成网络。边缘生成器使图像的缺失区域(规则和不规则)的边缘产生幻觉,并且图像补全网络使用幻觉边缘作为先验填充缺失区域。并在公共可用的数据集CelebA、Places2和巴黎街景上对模型进行了端到端的评估。

端到端:端到端指的是输入是原始数据,输出是最后的结果。以前输入端不是直接的原始数据,而是在原始数据中提取的特征。


将图像修复分为两个阶段:边缘生成和图像完成。边缘生成仅关注缺失区域中的假想边缘。图像完成网络使用假想边缘并估计缺失区域的RGB像素强度。两个阶段都遵循对抗框架。


该图像中,左边是输入的受损图像,缺失区域用白色表示;中间使用Canny边缘检测算法计算以黑色绘制的边缘,蓝色显示的边缘由边缘生成器网络产生(对于缺失区域);右边是所提出方法的图像修复结果。

边缘生成器在缺失区域的边缘产生幻觉。方法以“线条优先,色彩其次”。边缘恢复比图像完成更容易。提出的模型实质上解耦了修复区域的高频和低频信息的恢复。


在这个过程中包括“图像到边缘”和“边缘到图像”的两个关键点。

图像到边缘:

Canny边缘检测器是一种用于构建边缘图的早期方案,本文使用Canny边缘检测器计算的边缘地图进行训练。。

边缘到图像:

Scribbler是一种基于学习的模型,其中使用线草图作为输入生成图像,其中生成结果的颜色分布由输入草图中颜色的使用来引导。conditional GAN框架,称为pix2pix,用于图像到图像的转换问题。该方案可以使用可用的边缘信息作为先验。CycleGAN扩展了该框架,并找到了返回原始数据分布的反向映射。


模型架构:

整个模型如下图所示,由两个阶段组成:边缘生成器和图像补全器。两个阶段都是对抗模型,每个阶段都由一个生成器/鉴别器对组成。其中,G1和D1分别是边缘生成器的生成器和鉴别器,G2和D2分别是图像补全器的生成器和鉴别器。

生成器由编码器组成,编码器下采样两次,然后是八个residual block(残差块),解码器将图像上采样回原始大小。在剩余层中使用具有dilation rate为2的空洞卷积代替常规卷积,从而在最后一个residual block处产生205的感受野。

对于鉴别器,使用70×70 PatchGAN架构,该架构确定大小为70×70的重叠图像块是否真实。并且在网络的所有层中使用实例规范化。


补充:什么是PatchGAN?
对于PatchGAN的理解可以查看另外一篇博客:
对于PatchGAN的理解


方法

一阶段的边缘生成器

下面公式中出现的相关名词,都与架构图中相对应。

公式表示

I g t \mathbf{I}_{g t} Igt​ : ground truth images,即原图像

C g t \mathbf{C}_{g t} Cgt​ : 边缘图

I g r a y \mathbf{I}_{g ray} Igray​ : 灰度图像

M \mathbf{M} M :掩码

给灰度图添加掩码: I ~ g r a y = I g r a y ⊙ ( 1 − M ) \tilde{\mathbf{I}}_{g r a y}=\mathbf{I}_{g r a y} \odot(\mathbf{1}-\mathbf{M}) I~gray​=Igray​⊙(1−M) :

给边缘图添加掩码: C ~ g t = C g t ⊙ ( 1 − M ) \tilde{\mathbf{C}}_{g t}=\mathbf{C}_{g t} \odot(\mathbf{1}-\mathbf{M}) C~gt​=Cgt​⊙(1−M)

边缘生成器产生的预测边缘图: C pred  = G 1 ( I ~ g r a y , C ~ g t , M ) \mathbf{C}_{\text {pred }}=G_{1}\left(\tilde{\mathbf{I}}_{g r a y}, \tilde{\mathbf{C}}_{g t}, \mathbf{M}\right) Cpred ​=G1​(I~gray​,C~gt​,M)

判别器 D 1 D_1 D1​ 使用原始图像的边缘图 C g t \mathbf{C}_{gt} Cgt​和生成器预测出的边缘图 C p r e d \mathbf{C}_{pred} Cpred​作为判别器的输入,预测边缘贴图是否真实。

损失函数:一阶段边缘GAN网络的训练目标包括对抗损失和特征匹配损失

整体损失 :
min ⁡ G 1 max ⁡ D 1 L G 1 = min ⁡ G 1 ( λ a d v , 1 max ⁡ D 1 ( L a d v , 1 ) + λ F M L F M ) \min _{G_{1}} \max _{D_{1}} \mathcal{L}_{G_{1}}=\min _{G_{1}}\left(\lambda_{a d v, 1} \max _{D_{1}}\left(\mathcal{L}_{a d v, 1}\right)+\lambda_{F M} \mathcal{L}_{F M}\right) G1​min​D1​max​LG1​​=G1​min​(λadv,1​D1​max​(Ladv,1​)+λFM​LFM​)
其中, λ a d v , 1 \lambda_{a d v, 1} λadv,1​ 和 λ F M \lambda_{F M} λFM​ 是正则化参数。只有 L a d v , 1 \mathcal{L}_{a d v, 1} Ladv,1​ 在 D 1 D_1 D1​ 上最大化了,因为 D 1 D_1 D1​ 用来检索 L F M \mathcal{L}_{F M} LFM​ 的激活图。

  1. 对抗损失为:

L a d v , 1 = E ( C g t , I gray  ) [ log ⁡ D 1 ( C g t , I g r a y ) ] + E I gray  log ⁡ [ 1 − D 1 ( C pred  , I g r a y ) ] \begin{aligned} \mathcal{L}_{a d v, 1}=\mathbb{E}_{\left(\mathbf{C}_{g t}, \mathbf{I}_{\text {gray }}\right)}\left[\log D_{1}\left(\mathbf{C}_{g t}, \mathbf{I}_{g r a y}\right)\right]\ +\mathbb{E}_{\mathbf{I}_{\text {gray }}} \log \left[1-D_{1}\left(\mathbf{C}_{\text {pred }}, \mathbf{I}_{g r a y}\right)\right] \end{aligned} Ladv,1​=E(Cgt​,Igray ​)​[logD1​(Cgt​,Igray​)] +EIgray ​​log[1−D1​(Cpred ​,Igray​)]​

  1. 特征匹配损失(类似于感知损失):

L F M = E [ ∑ i = 1 L 1 N i ∥ D 1 ( i ) ( C g t ) − D 1 ( i ) ( C p r e d ) ∥ 1 ] \mathcal{L}_{F M}=\mathbb{E}\left[\sum_{i=1}^{L} \frac{1}{N_{i}}\left\|D_{1}^{(i)}\left(\mathbf{C}_{g t}\right)-D_{1}^{(i)}\left(\mathbf{C}_{p r e d}\right)\right\|_{1}\right] LFM​=E[i=1∑L​Ni​1​∥ ∥​D1(i)​(Cgt​)−D1(i)​(Cpred​)∥ ∥​1​]

其中 L L L 是判别器的最后一层卷积层, N i N_i Ni​ 是第 $i $ 层激活层中的元素数量, D 1 ( i ) D_1^ {(i)} D1(i)​是判别器第 $i $ 层中的激活。
参数设定: λ a d v , 1 = 1 ,     λ F M = 10 \lambda_{a d v, 1}=1 \text,~~~~\lambda_{F M}=10 λadv,1​=1,    λFM​=10



二阶段的图像补全器

公式表示

I ~ g t \tilde{\mathbf{I}}_{g t} I~gt​ : 添加了掩码的彩色图

C comp  \mathbf{C}_{\text {comp }} Ccomp ​ :输入二阶段补全器的生成器的边缘图,未mask掉的区域的边缘信息从原图中取,而mask掉的信息只能从一阶段的生成的输出取。

I pred  \mathbf{I}_{\text {pred }} Ipred ​ :补全后的图片(最终效果)

给原彩色图添加掩码: I ~ g t = I g t ⊙ ( 1 − M ) \tilde{\mathbf{I}}_{g t}=\mathbf{I}_{g t} \odot(\mathbf{1}-\mathbf{M}) I~gt​=Igt​⊙(1−M)

输入补全网络的边缘图: C comp  = C g t ⊙ ( 1 − M ) + C pred  ⊙ M \mathbf{C}_{\text {comp }}=\mathbf{C}_{g t} \odot (\mathbf{1}-\mathbf{M})+\mathbf{C}_{\text {pred }} \odot \mathbf{M} Ccomp ​=Cgt​⊙(1−M)+Cpred ​⊙M

补充理解:在这个地方,没有直接采用一阶段中生成的 $\mathbf{C}_{\text {pred }} $ ,而是用原图像中没有掩码部分的边缘图跟预测出的掩码区域的边缘图缝合起来,作为补全网络的边缘引导信息。在一阶段中,经过生成器的原图像中没有掩码部分的边缘图可能变形了,肯定没有之前的准确了,因此没有掩码区域的边缘图直接采用原图像的,而只在一阶段的生成器中取被掩码覆盖掉的区域的边缘信息。

生成器输出的补全后的彩色图: I pred  = G 2 ( I ~ g t , C c o m p ) \mathbf{I}_{\text {pred }}=G_{2}\left(\tilde{\mathbf{I}}_{g t}, \mathbf{C}_{c o m p}\right) Ipred ​=G2​(I~gt​,Ccomp​)

损失函数:包括了 ℓ 1 \ell_{1} ℓ1​ 损失,对抗损失、感知损失和风格损失。

  1. ℓ 1 \ell_{1} ℓ1​ 损失( M A E MAE MAE:平均绝对误差)

ℓ 1 \ell_{1} ℓ1​ 损失由mask的大小标准化。

  1. 对抗损失

L a d v , 2 = E ( I g t , C c o m p ) [ log ⁡ D 2 ( I g t , C comp  ) ] + E C comp  log ⁡ [ 1 − D 2 ( I pred  , C comp  ) ] \begin{aligned} \mathcal{L}_{a d v, 2}=\mathbb{E}_{\left(\mathbf{I}_{g t}, \mathbf{C}_{c o m p}\right)}\left[\log D_{2}\left(\mathbf{I}_{g t}, \mathbf{C}_{\text {comp }}\right)\right]\ &+\mathbb{E}_{\mathbf{C}_{\text {comp }}} \log \left[1-D_{2}\left(\mathbf{I}_{\text {pred }}, \mathbf{C}_{\text {comp }}\right)\right] \end{aligned} Ladv,2​=E(Igt​,Ccomp​)​[logD2​(Igt​,Ccomp ​)] ​+ECcomp ​​log[1−D2​(Ipred ​,Ccomp ​)]​

  1. 感知损失

感知损失通过定义预先训练的网络激活图之间的距离度量来惩罚在感知上与标签不相似的结果。
L perc  = E [ ∑ i 1 N i ∥ ϕ i ( I g t ) − ϕ i ( I pred  ) ∥ 1 ] \mathcal{L}_{\text {perc }}=\mathbb{E}\left[\sum_{i} \frac{1}{N_{i}}\left\|\phi_{i}\left(\mathbf{I}_{g t}\right)-\phi_{i}\left(\mathbf{I}_{\text {pred }}\right)\right\|_{1}\right] Lperc ​=E[i∑​Ni​1​∥ϕi​(Igt​)−ϕi​(Ipred ​)∥1​]
其中, ϕ i \phi_{i} ϕi​ 是预处理网络第 i i i 层的激活图。 ϕ i \phi_{i} ϕi​ 对应于在ImageNet数据集上预先训练的VGG-19网络的relu1_1、relu2_1、relu 3_1、relug4_1和relu5 _1层的激活图。

  1. 这些激活图还用于计算风格损失,以测量激活图协方差之间的差异。给定尺寸为 C j × H j × W j C_{j} \times H_{j} \times W_{j} Cj​×Hj​×Wj​ 的特征图,样式损失计算公式为:

L style  = E j [ ∥ G j ϕ ( I ~ pred  ) − G j ϕ ( I ~ g t ) ∥ 1 ] \mathcal{L}_{\text {style }}=\mathbb{E}_{j}\left[\left\|G_{j}^{\phi}\left(\tilde{\mathbf{I}}_{\text {pred }}\right)-G_{j}^{\phi}\left(\tilde{\mathbf{I}}_{g t}\right)\right\|_{1}\right] Lstyle ​=Ej​[∥ ∥​Gjϕ​(I~pred ​)−Gjϕ​(I~gt​)∥ ∥​1​]

其中, G j ϕ G_{j}^{\phi} Gjϕ​ 是由激活图 ϕ i \phi_{i} ϕi​ 构造的 C j × C j C_{j} \times C_{j} Cj​×Cj​ Gram矩阵。风格损失可以可以有效地解决由转置卷积层引起的“棋盘”伪影。

二阶段的图像补全器的总损失函数为:
L G 2 = λ ℓ 1 L ℓ 1 + λ a d v , 2 L a d v , 2 + λ p L perc  + λ s L style  \mathcal{L}_{G_{2}}=\lambda_{\ell_{1}} \mathcal{L}_{\ell_{1}}+\lambda_{a d v, 2} \mathcal{L}_{a d v, 2}+\lambda_{p} \mathcal{L}_{\text {perc }}+\lambda_{s} \mathcal{L}_{\text {style }} LG2​​=λℓ1​​Lℓ1​​+λadv,2​Ladv,2​+λp​Lperc ​+λs​Lstyle ​
在文章中的参数设置为:

λ ℓ 1 = 1 , λ a d v , 2 = λ p = 0.1 , λ s = 250 \lambda_{\ell_{1}}=1,~~ \lambda_{a d v, 2}=\lambda_{p}= 0.1 ,~~ \lambda_{s}=250 λℓ1​​=1,  λadv,2​=λp​=0.1,  λs​=250



实验

训练 G 1 G_1 G1​ 时,使用Canny边缘检测器,边缘检测器的灵敏度由高斯平滑滤波器的标准偏差 σ σ σ 控制。本文中 σ = 2 σ = 2 σ=2 产生边缘的效果最好。

实验中使用了规则的和不规则的两种mask。

模型代码使用Pytorch搭建,输入图像的大小为256 * 256,batch-size为8,优化器使用Adam,其中 β 1 = 0 \beta_{1}=0 β1​=0 , β 2 = 0.9 \beta_{2}=0.9 β2​=0.9,生成器G1和G2分别使用学习率为 1 0 − 4 10^{-4} 10−4 的Canny边缘进行训练−直到损失稳定,接着将学习率降至 1 0 − 5 10^{−5} 10−5,继续训练 G 1 G_1 G1​ 和 G 2 G_2 G2​ ,直到收敛。最后,通过删除 D 1 D_1 D1​ 来微调网络,然后以 1 0 − 6 10^{-6} 10−6 的学习率端到端训练 G 1 G_1 G1​ 和 G 2 G_2 G2​ 直到收敛。



结果

整体的结果还是比较出色的,具体的结果可以去论文里面查看。

对于模型的具体结构后面再补充吧!
后边打算再跑跑代码,到时候在通过博客记录调试的过程。

【图像修复】----论文阅读笔记《EdgeConnect: Generative Image Inpainting with Adversarial Edge Learning》相关推荐

  1. 图像修复论文阅读笔记-----Globally and Locally Consistent Image Completion

    概述 论文链接:https://dl.acm.org/doi/abs/10.1145/3072959.3073659 代码:https://github.com/otenim/GLCIC-PyTorc ...

  2. EdgeConnect: Generative lmage lnpainting with Adversarial Edge Learning 代码测试教程

    论文解析:https://zhuanlan.zhihu.com/p/57112475 代码:https://github.com/knazeri/edge-connect 环境: 服务器: ubunt ...

  3. Generative Image Inpainting with Adversarial Edge Learning— 环境搭建—详细教程 ——附源码| 【ICCV 2019】

    文章目录

  4. 论文阅读笔记《Adaptive Image-Based Visual Servoing Using Reinforcement Learning With Fuzzy State Coding》

    核心思想   该文提出一种利用模糊状态编码的强化学习(Q-learning)算法来实现自适应基于图像的视觉伺服控制.基于图像的视觉伺服过程中,图像雅可比矩阵中的距离参数ZZZ是未知的,需要对其进行估计 ...

  5. 论文阅读笔记 (CVPR 2019) Gait Recognition via Disentangled Representation Learning

    一.论文摘要   步态是个体的行走方式,是最重要的生物特征识别手段之一.现有的步态识别方法大多以轮廓或关节体模型为步态特征.这些方法在处理诸如服装.携带和视角等混杂变量时会导致识别性能下降.为了解决这 ...

  6. 论文阅读笔记《Attentive Weights Generation for Few Shot Learning via Information Maximization》

    小样本学习&元学习经典论文整理||持续更新 核心思想   本文提出一种基于权重生成的小样本学习算法(AWGIM),这种类型的方法之前在小样本目标检测算法中见到过,就是直接用一个生成器生成分类器 ...

  7. 论文阅读笔记2——Evading Defenses to Transferable Adversarial Examples by Translation-Invariant Attacks

    论文标题:Evading Defenses to Transferable Adversarial Examples by Translation-Invariant Attacks 论文链接:htt ...

  8. 论文阅读笔记(一)【Journal of Machine Learning Research】Natural Language Processing (Almost) from Scratch(未完)

    学习内容 题目: 自然语言从零开始 Natural Language Processing (Almost) from Scratch 2021年7月28日 1-5页 这将是一个长期的过程,因为本文长 ...

  9. 论文阅读笔记五十三:Libra R-CNN: Towards Balanced Learning for Object Detection(CVPR2019)

    论文原址:https://arxiv.org/pdf/1904.02701.pdf github:https://github.com/OceanPang/Libra_R-CNN 摘要 相比模型的结构 ...

最新文章

  1. LINUX DHCP搭建
  2. MyBatis(二)——多对一、一对多
  3. sql server使用杂记
  4. java 补丁差异_差异和补丁简介
  5. 2021年NBA附加赛第一轮预测
  6. java 的 provider_Java Provider.Service getProvider()用法及代码示例
  7. shell中日期操作
  8. Pygame实战:还在玩纸飞机?不—现在家里的小孩子都在玩儿飞机大冒险~
  9. 【渝粤教育】电大中专建设工程法规_1作业 题库
  10. 兔聊图片二维码logo个性制作
  11. java 微信分享朋友圈 链接显示图片_【微信开发】-- 微信分享功能(分享到朋友和朋友圈显示图片和简介)...
  12. Word电子扫描仪 word文档转换为图片Pdf,Word文档扫描成Pdf,word文档加密 word转图片 word转pdf
  13. 对抗训练-smart 论文阅读笔记
  14. Python实验报告一 python基础试题练习
  15. Realtek定频(非信令)指令说明
  16. 使用 arxiv-sanity paperwithcode 跟进最新研究领域的文章
  17. Adobe国际认证证书介绍
  18. C/C++嵌入BS架构的页面
  19. 面试面经|Java面试kafka面试题
  20. 回归算法 经典案例 波士顿房价预测

热门文章

  1. 正式改GWap 项目为GLive
  2. 闪亮滴眼液用AR“轰炸”医药零售潮时代,开启创意营销新指南
  3. 我是如何将一个老系统的kafka消费者服务的性能提升近百倍的
  4. 使用树莓派4B搭建简易的控制器硬件在环仿真平台
  5. 精品博客推荐:为数不多的维术,高质量文章尽在这里
  6. NodeList和Array数组的区别
  7. [易飞]没做采购变更单,采购单被指定结束了?
  8. 介绍一个学习编程的捷径
  9. 系统测试软件cinebench,CineBench r15
  10. 11. spring-容器: @Value, @PropertySource详解