当图像缺失部分太多的时候,结合多阶段方法和边缘先验信息,这个 GAN 实现了高还原度的图像修复,玩法还不止于此。

在过去几年中,深度学习技术在图像修复方面取得了显着进步。然而,许多这些技术无法重建合理的结构,因为它们通常过度平滑和/或模糊。比如:

或者合成结果很好,视觉效果真实,但和原始照片却不一样。比如:

两张修复照片看起来都很正常,但原人不是长这样。深度生成模型只把生成范围限定在了「眼睛」上,而没有定位到更精细的纹理。对比一下庐山真面目:

再看看这个例子,空白区域越多,图像补全的时候就越任性(最右侧是原始图像):

以上示例皆选自论文《Image Inpainting for Irregular Holes Using Partial Convolutions》,读者可参见《心中无码:这是一个能自动脑补漫画空缺部分的 AI 项目》一文。

在用媒介还原真实世界的历史上,人们有一个共识,即边缘才是物体最具辨识度的信息。所以,在彩色照相技术出现之前,我们是通过素描、速写、黑白照片等来记录世界,并认为其足够真实和还原。

除非你是立体主义、超现实主义、印象主义、浮世绘主义、国风主义...

不知道是不是也抱着这样的想法,加拿大安大略理工大学理学院的研究者开发了一种结合边缘信息先验的图像修复方法,其可以更好地再现显示精细细节的填充区域。

生成效果如下所示,补全模型会先生成中间所示的完整边缘信息,然后结合失真信息一起生成最终的修复图像。

更好玩的是,该模型还可以帮你做精准编辑。想削掉那个山峰吗?不用再做图层和重新上色,简单画几条边缘就行了。

两位小姐姐都很美,但更喜欢黄色的皮肤,怎么办?

具体来说,作者们提出了一个二阶段生成对抗网络 EdgeConnect,它包括一个边缘生成器,然后是一个图像补全网络。边缘生成器在图像的缺失区域(规则和不规则)生成预测边缘,然后图像补全网络使用预测边缘作为先验填充缺失区域。研究者通过公开可用的数据集 CelebA、Places2 和 Paris StreetView 对模型进行端到端评估,并表明它在数量和质量上优于当前最先进的技术。

论文:EdgeConnect: Generative Image Inpainting with Adversarial Edge Learning

  • 论文地址:https://arxiv.org/pdf/1901.00212.pdf

  • 项目地址:https://github.com/knazeri/edge-connect#citation

研究者已经在 GitHub 中基于 Places2、CelebA 和 Paris-StreetView 数据集给出了全部预训练模型。

下图中展示了他们的方法和其它已有模型的对比。相比之下,EdgeConnect 修复的边缘信息精确得多,基本不会无中生有,和真实图像最接近。

图 3:和已有方法的定性结果对比。(a)原始图像;(b)添加白色掩码的图像;(c)Yu et al.;(d)Iizuka et al.;(e)本文的方法(端到端);(f)本文的方法(Canny σ = 2)

下图是方法概览。不完整的灰度图像和边缘图以及掩模是第一阶段 G1 的输入,用于预测完整边缘图。将预测的边缘图和不完整的彩色图像传递给第二阶段 G2 以执行修复任务。

其中,下图中间的蓝色显示的边缘是由边缘生成器网络所预测而补全的(对于缺失的区域)。

图 1:(左)输入缺失区域的图像。缺失的区域用白色表示。(中)计算边缘。使用 Canny 边缘检测器计算以黑色绘制的边缘(对于可用区域);而蓝色显示的边缘是由边缘生成器网络所预测而补全的(对于缺失的区域)。(右)图像修复的结果。

再看看更多的图像拼接、移除和编辑的例子吧:

图 10:使用(a)的左侧和(b)的右侧生成(c)的边缘图,最后生成(d)的拼接图。

图 11:使用 EdgeConnect 进行目标移除和图像编辑的示例。(左)原始图像。(中)使用可选边缘信息移除不想要的目标来引导图像修复。(右)最终生成图像。

定量分析

现在将注意力转向这项工作的关键假设:边缘信息有助于图像修复。表 3 显示了有和没有边缘信息的修复结果。当边缘信息被整合到修复模型中时,EdgeConnect 在每个度量上都获得了更好的分数,即使图像的大部分缺失也是如此。

表 3:有边缘信息(完整模型)和无边缘信息(仅包含 G2 阶段)的修复结果的对比。

研究者使用了参数σ来控制图像补全网络可用的边缘信息量。

对于较大的σ值,可用的边缘太少,不能保证生成的图像质量。另一方面,当σ太小时,生成太多边缘,这对于所生成图像的质量也会产生不利影响。也就是说,存在合适的最佳σ值,或者说我们只需要适当的边缘信息量。图 6 展示了修复图像的质量随 σ的变化。

图 6:PSNR 和 FID 随 σ的变化。

图 7 展示了σ的不同值如何影响具体的修复任务。注意,在边缘数据稀疏的区域中,修复区域的质量降低。例如,在σ= 5 的修复图像中,左侧人脸的左眼重建得比右眼更锐利。但是并不是说每张图像需要的最优σ值都是一样的。

图 7:Canny σ对图像修复结果的影响。

实际上,EdgeConnect 可以看成是两个模型,包含了第一阶段的边缘预测就可以用于图像修复,不包含则可以用于图像编辑,只要描绘出合适的边缘就能在第二阶段生成合适的图像。实际上,在最上方展示的人脸案例中,EdgeConnect 可能也很难还原真实的边缘信息,他们也给出了一些失败案例。

研究者计划开发更好的边缘探测器。虽然有效地描绘边缘比数百条细节线更有用,但是边缘生成模型有时无法准确地描绘高度纹理化区域中的边缘,或者当图像的大部分缺失时,如图 9 所示。

图 9:无法生成相关边缘信息的修复结果的失败案例。

这项研究值得关注的地方在于,使用了多阶段的方法,选择了相关度足够高的、生成难度较低的先验信息,作为下一阶段的先验,简单而高效。

研究者表示,通过改善边缘生成系统,或许可以将该模型扩展到高分辨率修复应用。

转载于:https://www.cnblogs.com/leolion/articles/10425461.html

【转】为了修复打码女神脸,他们提出二阶段生成对抗网络EdgeConnect相关推荐

  1. 生成对抗网络入门详解及TensorFlow源码实现--深度学习笔记

    生成对抗网络入门详解及TensorFlow源码实现–深度学习笔记 一.生成对抗网络(GANs) 生成对抗网络是一种生成模型(Generative Model),其背后最基本的思想就是从训练库里获取很多 ...

  2. 生成对抗网络(GANs)的资料小结,另附:资源|17类对抗网络经典论文及开源代码(附源码)

    1.GANs的一些资料链接 ************************************************** *********************************** ...

  3. 手把手教你生成对抗网络 GAN,50 行代码玩转 GAN 模型!(附源码)

    来源:AI有道 本文约2820字,建议阅读12分钟. 本文为大家介绍了生成对抗网络(Generate Adversarial Network,GAN),以最直白的语言来讲解它,最后实现一个简单的 GA ...

  4. 基于生成对抗网络的有遮挡人脸修复方法

    摘要 [目的]实现有遮挡人脸图像修复,以提升人脸识别系统中有遮挡条件下人脸识别的准确率.[应用背景]在无感人脸识别场景中,人脸图像常因帽子.口罩等遮挡物影响,现有人脸识别算法出现准确率下降甚至无法识别 ...

  5. ECCV2022 | 生成对抗网络GAN论文汇总(图像转换-图像编辑-图像修复-少样本生成-3D等)...

    图像转换/图像可控编辑 视频生成 少样本生成 图像外修复/结合transformer GAN改进 新数据集 图像增强 3D 图像来源归属分析 一.图像转换/图像可控编辑 1.VecGAN: Image ...

  6. 使用PyTorch构建GAN生成对抗网络源码(详细步骤讲解+注释版)02 人脸识别 下

    文章目录 1 测试鉴别器 2 建立生成器 3 测试生成器 4 训练生成器 5 使用生成器 6 内存查看 上一节,我们已经建立好了模型所必需的鉴别器类与Dataset类. 使用PyTorch构建GAN生 ...

  7. 使用PyTorch构建GAN生成对抗网络源码(详细步骤讲解+注释版)02 人脸识别 上

    文章目录 1 数据集描述 2 GPU设置 3 设置Dataset类 4 设置辨别器类 5 辅助函数与辅助类 1 数据集描述 此项目使用的是著名的celebA(CelebFaces Attribute) ...

  8. 深度图像修复的回顾和改进:使用生成对抗网络基于Patch的图像修复

    点击上方"AI公园",关注公众号,选择加"星标"或"置顶" 作者:Chu-Tak Li 编译:ronghuaiyang 导读 相比于之前,在 ...

  9. 白话生成对抗网络 GAN,50 行代码玩转 GAN 模型!【附源码】

    红色石头的个人网站:redstonewill.com 今天,红色石头带大家一起来了解一下如今非常火热的深度学习模型:生成对抗网络(Generate Adversarial Network,GAN).G ...

最新文章

  1. 六年级计算机word处理,六年级上信息技术教案Word大变身用Word制作网页河大版
  2. 网站设计怎样让搜索引擎对其另眼相待?
  3. Windows纸牌×××式计分法
  4. 机器学习在高德用户反馈信息处理中的实践
  5. Python基础-小程序练习(跳出多层循环,购物车,多级菜单,用户登录)
  6. Python range() 函数用法
  7. OpenShift Security (9) - 用 RHACS 扫描 Log4j 安全漏洞,屏蔽不安全镜像部署
  8. android.bg,[Android]AMS-PSS
  9. python数组拼接concat_Python xarray.concat然后xarray.to_netcdf生成巨大的新文件大小
  10. Git,GitHub入门
  11. html php交互json 结果集,基于HTML模板和JSON数据的JavaScript交互(移动端)
  12. 无人车系统(三):用python写一个简单的无人车仿真环境
  13. 6LowPAN与CoAP协议
  14. matlab 类型强制转换,关于数据类型强制转换的分析和应用
  15. C - Fewest Flops
  16. 使用高德地图根据坐标点画出路线
  17. 基础实验——485传感器修改地址
  18. 编程进阶一:编译器的特殊功能使用及借助编译时完成数据的初始化
  19. piggy bank 完全背包
  20. java方法注释都英文_JDK源码中的英文注释翻译(Class)

热门文章

  1. linux入门系统那个好,初学Linux哪个发行版本好?这些更合适!
  2. GPS NEMA 0183协议
  3. 创建线程的方式_创建线程有几种不同的方式?
  4. python中split函数_python strip()函数和Split函数的用法总结
  5. Fetch发送网络请求
  6. 接口 vs 抽象类 的区别
  7. 程序员面试金典 - 面试题 08.11. 硬币(背包DP)
  8. LeetCode 611. 有效三角形的个数(双指针)
  9. LeetCode 1009. 十进制整数的反码(位运算)
  10. LeetCode 69. x 的平方根(二分查找)