今天是复活节,你有感受到春天和新生的气息了吗?

今天向大家介绍的工作来自图像修补(inpainting)领域,修复老照片,特别的是它不仅要让记忆有色彩,还要有立体感。一张黑白老照片,既焕发生机又跃然纸上,是不是很神奇?

该项目已开源,三天内冲上Github趋势榜第二名,获得693颗星!我们一起来看看吧!

以下内容转载自机器之心。

如何让一张老照片看起来有 3D 效果?

来自弗吉尼亚理工大学、台湾清华大学和 Facebook 的研究者提出了一种将单个 RGB-D 输入图像转换为 3D 照片的方法,利用多层表示合成新视图,且新视图包含原始视图中遮挡区域的 hallucinated 颜色和深度结构。

具体而言,研究人员使用具有显式像素连通性的分层深度图像(Layered Depth Image,LDI)作为基础表示,并提出了一种基于学习(learning-based)的修复模型,该模型以空间语境感知的方式,为遮挡区域迭代地合成局部新的颜色和深度信息。在使用标准图形引擎的情况下,该方法可以高效地渲染生成 3D 照片。

研究者在多种具有挑战性的日常场景中验证了此方法的有效性,与当前 SOTA 方法相比,该方法生成结果的伪影更少。

与 SOTA 方法对比的效果图

老照片也能有 3D 效果!

除了论文以外,该研究还提供了大量示例、代码,还有可以试用的 Colab 环境,感兴趣的读者可以试试效果。

这么优秀的 3D 效果是怎么实现的?

该研究提出的方法以 RGB-D 图像作为输入,并生成分层深度图像(LDI),并修复输入图像中被遮挡区域的颜色和深度。

该按照以下步骤执行:

  • 图像预处理:首先初始化 LDI,LDI 使用单个层,且完全 4-connected。在预处理过程中,检测主要的深度不连续区域,并将它们分为简单的连接深度边缘(connected depth edge)。这构成了主算法的基础,该算法的核心部分式迭代地选择深度边缘进行修复;

  • 语境和合成区域:断开边缘上的 LDI 像素,只修复边缘的背景像素。具体做法是从边缘的「已知」侧提取局部语境区域,在「未知」侧生成合成区域;

  • 语境感知的颜色和深度修复:合成区域是新像素的连续 2D 区域,研究者使用基于学习的方法从给定语境中为其生成颜色和深度值;

  • 形成 3D 纹理网格:修复完成后,将合成像素合并到 LDI 像素。

  • 该方法按照以上流程迭代进行,直到所有深度边缘都得到处理。

接下来,我们来看每一个步骤的具体做法。

图像预处理

下图 2 展示了图像预处理的过程。首先对颜色和深度输入进行预处理 (a-b),然后使用双边中值滤波器锐化输入深度图 (c-d),接下来使用视差阈值检测不连续区域 (e),清除错误的阈值响应并将不连续区域组合成为连接深度图 (f)。这些连接深度图正是修复过程的基础。

图像预处理

语境和合成区域

该研究提出的修复算法每次都在之前计算好的一个深度边缘上执行。给定一个深度边缘(下图 3a),修复算法的目的是在相邻的遮挡区域中合成新的颜色和深度信息。

首先将不连续区域中的 LDI 像素断开(图 3b)。断开的像素(即失去邻居的像素)被称为轮廓像素(silhouette pixel)。图 3b 中显示了前景轮廓(绿色)和背景轮廓(红色),我们只需要修复背景轮廓。

接下来生成合成区域(即新像素的连续区域,图 3c 中的红色像素),提取语境区域(图 3c 中的蓝色像素)。最后,将合成像素并入 LDI 像素中。

图 3:LDI 修复算法的概念图示。(a) 初始 LDI 是全连接的,图中灰色区域是深度边缘(不连续区域)。(b) 首先将深度边缘上的 LDI 像素连接断开,形成前景轮廓(绿色)和背景轮廓(红色)。(c) 对于背景轮廓,提取语境区域(蓝色),生成合成区域(红色)。(d) 将合成像素并入 LDI 中。

具体示例参见下图 4:

图 4:语境/合成区域。图 2(f) 中三个连接深度边缘示例(黑色)的语境区域(蓝色)和合成区域(红色)。

此外,由于检测到的深度边缘可能无法与遮挡区域的边界很好地对齐,因此研究者将合成区域扩大了 5 个像素,这有助于减少修补区域中的伪影。

图 5:处理不完美的深度边缘。

语境感知的颜色和深度修复

如何合成颜色和深度值?一种最直接的方法是分别修复彩色图像和深度图。但随之产生的问题是,已修复的深度图可能无法与已修复的颜色非常合适地匹配。为了解决此问题,研究者设计了类似于 [43, 67] 的颜色和深度修复网络,同时将修复任务分解为三个子网络:边缘修复网络、颜色修复网络和深度修复网络(下图 6)。

图 6:语境感知的颜色和深度修复。

给定颜色、深度、提取以及连接的深度边缘作为输入,随机选择其中一个边作为子问题。首先使用边缘修复网络修复合成区域中(红色区域)的深度边缘,然后将修复后的深度边缘与语境颜色连接在一起,并应用颜色修复网络生成用以修复的颜色。类似地,将修复后的深度边缘与语境深度连接起来,并应用深度修复网络生成修复深度。

多层修复

在深度复杂(deep-complex)的场景中,仅应用一次该研究提出的修复模型肯定不够,因为修复深度边缘所导致的不连续区域使得我们依然可以看见空白(hole)。所以研究者多次使用修复模型,直到不再生成修复深度边缘为止。

下图 8 展示了多次应用修复模型的效果。其中,应用一次修复模型填补了缺失的层。但是从图 8b 的观察视角中,我们依然可以看到一些空白区域。而应用两次修复模型可以彻底消除这些伪影。

图 8:多层修复

转换为 3D 纹理网格

研究者将所有的修复深度和颜色值集成返回原始 LDI 中,从而创建了 3D 纹理网格。在渲染过程中使用网格表示能够快速渲染新的视图,而且无需对每个视图执行推理步骤。因此,在边缘设备上使用标准图形引擎即可轻松地对该研究方法生成的 3D 表示进行渲染。

实验结果

该研究进行了大量实验,对新方法的效果做了视觉对比、量化对比,同时还做了控制变量实验。

视觉对比

首先,我们来看新方法与当前最优的视角合成在视觉效果上的对比结果:

图 9:新方法与基于 MPI 的方法的视觉对比结果

从图中可以看到,该研究提出的新方法能够修复原始图像中被遮挡的区域,且结构和颜色都很合理。

量化对比

研究者对比了不同方法在 RealEstate10K 数据集上的量化对比结果,如下表 1 所示:

该研究提出的新方法在 SSIM 和 PSNR 两项指标上的性能均具备很强的竞争力。此外,新方法的合成视角表现出了更优秀的感知质量,这一点从 LPIPS 分数上可以看出。

控制变量测试

研究者从测试数据序列中采样了 130 个踪片,并在全图和未遮挡区域上评估修复颜色,测试结果见下表 2。可以看出,该研究提出的边缘引导的修复技术给各项评估指标数值带来了微小的提升。

此外,为测试颜色修复模型的效果,研究者进行了类似的实验。下表 3 展示了不同方法在全图和遮挡区域上的性能结果:

从上表中可以看出新方法的感知质量更好,下图中的示例也说明了这一点。

图 11:颜色修复带来了更好的视觉质量。

在不同深度图上的效果如何?

研究者在不同方法生成的深度图上进行实验,结果表明新方法可以很好地处理不同来源的深度图。

图 12:该研究提出的方法可以处理不同来源的深度图。新视角图像左上角为深度估计。

Github 介绍

环境安装

  • Linux (已在 Ubuntu 18.04.4 LTS 上测试)

  • Anaconda

  • Python 3.7 (已在 3.7.4 上测试)

  • PyTorch 1.4.0 (已在 1.4.0 测试执行)

  • 运行以下命令

conda create -n 3DP python=3.7 anaconda
conda activate 3DP
pip install -r requirements.txt
conda install pytorch==1.4.0 torchvision==0.5.0 cudatoolkit==10.1.243 -c pytorch
  • 下载模型权重

chmod +x download.sh
./download.sh

执行

  • 将 .jpg 文件 (e.g., test.jpg) 放入 image 文件夹中.

    • 如 image/moon.jpg

  • 运行:

python main.py --config argument.yml
    • 通常情况下处理时间为 2-3 分钟,具体取决于可用的计算资源。

  • 将结果存储再以下目录中:

    • MiDas 估算的对应深度 tu

      • 如 depth/moon.npy

    • 3D 网格

      • 如 mesh/moon.ply

    • 具有放大效果的渲染视频

      • 如 video/moon_zoom-in.mp4

    • 具有摆动效果的渲染 shi'p

      • 如 video/moon_swing.mp4

    • 渲染视频并进行 circle motion

      • 如 video/moon_circle.mp4

如果你对此项目感兴趣,可浏览项目地址便于参考更多详细信息。

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

  • 项目地址:https://github.com/vt-vl-lab/3d-photo-inpainting

  • 网站地址:https://shihmengli.github.io/3D-Photo-Inpainting/

  • Colab 地址:https://colab.research.google.com/drive/1706ToQrkIZshRSJSHvZ1RuCiM__YX3Bz

END

备注:修复

图像增强与质量评价交流群

图像增强、修复、去雾、去雨、图像修补、图像恢复等技术,

若已为CV君其他账号好友请直接私信。

我爱计算机视觉

微信号:aicvml

QQ群:805388940

微博知乎:@我爱计算机视觉

投稿:amos@52cv.net

网站:www.52cv.net

在看,让更多人看到  

老照片的复活,焕发生机与跃然纸上!这篇CVPR2020的论文彻底火了相关推荐

  1. 深度学习深陷可解释性泥淖,而这个研究领域正逐步焕发生机

    只讲技术,拒绝空谈!2018 AI开发者大会精彩议程曝光> 福利 11月2日前购票,立享7折优惠!更有学生专享福利!扫码报名↓↓↓

  2. 瓴羊QUICKBI工具强势入局,国产BI工具焕发生机

    最近瓴羊QUICKBI工具引起了国内bi界的关注,瓴羊QUICKBI工具已经连续四年成功入选了Gartner的魔力象限报告,成功得到了来自国际权威信息技术研究和分析公司Gartner的认可. 什么是魔 ...

  3. 新东方2021Q3净收入与盈利增长超预期 老牌教育巨头焕发生机?

    去年疫情爆发带热在线教育,随着疫情好转,教育行业在线下也复苏加速进度. 北京时间4月20日,新东方公布了2021财年Q3业绩报告,实现营收11.9亿美元,同比增长29%,净利润1.51亿美元,同比增长 ...

  4. 黑白色老照片一键上色在线工具,让老照片漂亮起来

    每个人家中多少都有一些老旧的黑白照,或是当初拍照时只有拍黑白,跟彩色照片比虽然别有一番风味,但有时候还是会想看如果是彩色不知道会变怎样?会不会更好看?而这款 线上工具就能帮你实现,只要把你的黑白照上传 ...

  5. CVPR 2020 论文大盘点-图像修复Inpainting篇

    转自:https://mp.weixin.qq.com/s?__biz=MzIwMTE1NjQxMQ==&mid=2247519592&idx=2&sn=3a0598c9f52 ...

  6. [GAN]老照片修复Bringing Old Photos Back to Life论文总结

    Title Title:Bringing Old Photos Back to Life Source:CVPR2020 论文官网 Code 1.Summary 文章提出并解决了两个问题. 问题一 泛 ...

  7. 科学家复活了死去的大脑,下一步呢?

    全文共5684字,预计学习时长11分钟 耶鲁大学的科学家们在针对猪器官的实验中发现,有朝一日人们对死亡的理解会被颠覆. 图片来源:pexels.com/@xespri 几年前,一位名叫Nenad Se ...

  8. 强烈推荐7个让人惊艳的宝藏实用网站,太好用了

    作为一个收集了上百个网站的工具控,今天小智给大家分享7个实用强大的网站,每一个都堪称精品,直接上干货! 1.CreativeMass CreativeMass是一个高质量的精选创意导航网站,里面聚合了 ...

  9. 强烈推荐8款高质量的网站,可以解决很多问题

    推荐8个非常实用的网站,可以解决很多问题,每一个都是精心挑选的,喜欢的话记得点个赞哦~ 1.USEUM USEUM是一个免费的艺术品下载网站,网站聚合了六所著名的博物馆,放了共计21578幅艺术作品的 ...

最新文章

  1. trackback (引用通告) 说明
  2. k8s给default serviceaccount绑定cluster-admin操作命令
  3. 【转】漫谈ANN(2):BP神经网络
  4. Nocatalog 下的RMAN 增量备份 shell脚本
  5. 轻松上云系列之二:其他云数据迁移至阿里云
  6. html 左边固定右边自动,七种实现左侧固定,右侧自适应两栏布局的方法
  7. hdu 3905(dp)
  8. 懒惰是人类进步的动力,勤奋是实现偷懒的途径
  9. 用 IPTABLES 构建 Linux 防火墙
  10. 通过 Powershell 来替换 ARM 模式下虚拟机的网络接口
  11. DirectX修复工具出现0xc000007b错误——分析与解决
  12. 社交网络分析算法(SNA)
  13. 虚拟机ubuntu的联网方法(NET)
  14. 计算快递费系统(java版)
  15. 5GC 网元AMF、SMF、UPF、PCF、UDM等介绍
  16. 小米6自动重启android,小米6充电重启怎么办?小米6充电自动重启解决方法介绍...
  17. 购买云服务器如何选择cpu与内存搭配
  18. 关于前端video标签视频无法拖动进度条快进问题(Django)
  19. Idea神气功能。找到之前编写的代码!查看历史编译文件
  20. 游戏服务器架构演进(完整版)

热门文章

  1. Skywalking-06:OAL基础
  2. Spring表达式语言使用
  3. Javascript基于对象基础
  4. 【基础】【后台】 微信小程序 - 腾讯云 - wafer2 - PHP - DEMO - 003 - 源码分析 - 02 - 路由
  5. ipv6 服务器虚拟机软件,ipv6虚拟主机是做什么的
  6. 高性能 php api 开发,ThinkPHP 3.2 性能优化,实现高性能API开发
  7. 电脑ping_Windows系统——ping打开教程
  8. php分页上一页下一页判断,一个分页函数:显示“上一页下一页”等
  9. python生成指定长度的列表_如何在python中创建固定大小列表?
  10. 华北科技学院计算机科学与技术分数线,2019年华北科技学院优势专业排名及分数线...