美文网首页
机器能把图上的洞补全——图像补全(image inpaintin

机器能把图上的洞补全——图像补全(image inpaintin

作者: MomentaAI | 来源:发表于2018-10-27 19:29 被阅读0次

该文为Momenta Paper Reading 第一季第六期回顾,始发于2017年4月3日。

分享视频回放链接:Momenta Paper Reading 第一季

PPT及论文等资料请见文末,添加小助手微信获取

计算机图形学(Computer Graphics) 和计算机视觉(Computer Vision) 是计算机科学中两个重要的研究方向。图形学研究的问题可以概括为如何生成和处理图像,而视觉研究的问题可以概括为如何感知和理解图像。虽然二者研究的问题相差很大,但是由于研究对象往往都是图像,所以二者的关系也很紧密。

传统的图形学和视觉的研究方法,主要还是基于数学和物理的方法。然而随着近几年深度学习在视觉领域取得的卓越的效果,视觉领域研究的前沿已经基本被深度学习占领。在这样的形势之下,越来越多的图形学研究者也开始将目光投向深度学习。在图形学和视觉交叉的领域,一系列问题的研究正在围绕深度学习火热展开,特别是在图像编辑(image editing)和图像生成(image generation)方面,已经初见成效。今天我们讨论的问题,图像补全(image inpainting),正是介于图像编辑和图像生成之间的一个问题。

图像补全最初是一个传统图形学的问题。问题本身很直观:在一幅图像上挖一个洞,如何利用其它的信息将这个洞补全,并且让人眼无法辨别出补全的部分。这个问题对我们人类似乎很容易,比如下面这个洞,大家很容易脑补出洞里应该有窗户和门,背景是墙,如果还有一些绘画天赋的话,大概就能想象着把它补出来。但是这个任务对于计算机却显得格外困难,首先这个问题没有唯一确定的解,其次如何利用其它的信息?如何判断补全结果是否足够真实?

我们今天将按照时间顺序,讲3篇图像补全的工作。让我们来看看研究者们,是如何一步一步尝试解决这个问题的。也希望大家从对这一个问题的研究的发展脉络,能够分析总结出一些规律性的思考,来指导我们自己的研究。

Region Filling and Object Removal by Exemplar-Based Image Inpainting

这篇文章是2004年的工作,核心思想就是利用图像本身的冗余性(redundancy),用图像已知部分的信息来补全未知部分。

算法的流程大致如下:

1. 对待补全区域边界的像素依次计算补全的优先度(priority),这个优先度主要考虑2个因素。一个是周围像素可信度高的位置要优先补,另一个是位于图像梯度变化剧烈的位置要优先补。综合二者得到所有优先度之后,挑选优先度最高的像素来补

2. 对于上一步找到的待补全像素,考虑它周围的一个小patch(比如3*3)。在图像已知部分搜索所有的patch,找到最相似的patch

3. 用找到的best match来补全未知部分,并更新相关数值

以下是一个补全的结果示例:

但是我们也不难发现这个方法存在的问题:如果图像已知部分找不到相似的patch,那算法将无法进行;这个方法只适用于补全背景以低频信息和重复性纹理为主的图像;搜索相似的patch计算复杂度非常高,算法运行效率低。

Scene Completion Using Millions of Photographs

这篇文章是2007年的工作,试图利用data-driven的方法解决之前方法存在的2个问题:对于图像已知部分找不到相似patch的问题,这篇文章提出利用互联网上存在的大量图片来提供素材;对于一块块逐步补全效率低的问题,这篇文章提出直接从其它图像抠出完整一块来填补空洞。

不过,利用互联网图片也同时带来了新的问题:互联网上图片纷繁复杂,如何快速找到我们需要的图片素材;如何解决语义正确的问题,我们不希望从公路上抠掉了一辆汽车,结果从别的图片粘过来一头大象;如何解决不同图片光照等条件不同带来的视觉差异。

算法的大致流程如下:

1. 从Flickr上下载两百万图片构建数据库,以”landscape””city””park”等关键词搜索户外场景的图片

2. 对于一张待补全图像,从数据库中挑选200个场景最相似的图片,这里使用gist scene descriptor和图像下采样到4*4作为匹配的特征向量

3. 将补全区域边界外80个pixel的区域作为context。对于每一张匹配的图像,搜索所有的平移空间和3个尺度的scale空间,根据context部分的匹配误差,选择最佳的补全位置;之后利用graph-cut算法求解最佳的融合边界

4. 利用标准的泊松融合处理融合边界

5. 将前几步的匹配cost和graph-cut的cost加起来,返回cost最小的20的结果供用户挑选

以下是一些补全的结果

Context Encoders: Feature Learning by Inpainting

这篇文章发表在去年的CVPR上,核心思想是利用卷积神经网络来学习图像中的high-level feature,利用这些这些feature来指导图像缺失部分的生成。

文章提出的网络结构如下,包括3个部分:Encoder, Channel-wise fully-connected layer, Decoder。

Encoder的结构直接借鉴了AlexNet前5层的卷积层结构,具体结构如下。输入的crop尺寸是227Í227,卷积之后得到的feature map结构是256层6 Í 6。所有的weight都随机初始化。

Channel-wise fully-connected layer是对普通fc层的一种改进。之所以加入fc层是为了使feature map每一层的信息可以在内部交流。但传统的fc层参数太多,因此作者提出可以在fc中去掉feature map层间的信息交流,从而减少参数规模。在fc之后会接一个stride为1的卷积层,来实现层间的信息交流。

Decoder的目的是将压缩的feature map一步步放大,恢复到原始图片的尺寸。文章提出采用5个up-convolutional层,每层后接一个RELU。上采样的结构如下。

接下来,我们再看一下Loss的设计。作者提出了2个Loss:Reconstruction Loss和Adversarial Loss。

Reconstruction Loss如下,其实就是直接计算生成部分和原始图像的pixel-wise error

Adversarial Loss如下,这个Loss的设计显然借鉴了GAN的Loss。不过一个主要的区别是,这里只固定Generator,试图通过极大化Loss来训练更强的Discriminator。

最终的Loss为如下的组合,Reconstruction Loss是为了提高补全部分和周围context的相关性;而Adversarial Loss则是为了提高补全部分的真实性。通过保持二者的平衡,可以得到如下尽可能好的补全效果。

除了图像补全之外,作者为了证明它们的feature representation的能力很强,又进行了一系列实验,将它们的Context Encoder作为一个pre-training的环节,在classification、detection和segmentation等任务上测试效果。虽然和在ImageNet上用label训练的结果还有一定差距,但和之前的Autoencoder作为pre-training的结果相比,还是有一些提高。

让我们来回顾一下这3篇工作的发展

第一篇工作,研究者只能使用本张图像的数据,而且使用的feature也是非常low-level的像素级别的;

第二篇工作,得益于数据处理能力的飞跃,研究者可以利用data-driven的方法,但使用的feature仍然是low-level的(一些拍脑袋想出的feature);

第三篇工作,得益于神经网络对图像中high-level feature的提取能力,研究者可以将大数据和high-level feature组合起来,使得这个十分困难的问题得到了很好的解决。

以深度学习为代表的机器学习,正在逐渐席卷整个图形学研究领域。研究者们逐渐发现,当传统的基于物理的模型发展遇到瓶颈的时候,机器学习的方法也许能够帮助我们解释这些复杂的数理模型。毕竟只有理解了图像的深层结构,才能更好地指导图像的生成和处理。

*分享嘉宾职务为时任职务。

相关文章

网友评论

      本文标题:机器能把图上的洞补全——图像补全(image inpaintin

      本文链接:https://www.haomeiwen.com/subject/rhadtqtx.html