英伟达教你用深度学习做图像修复,确定不试一下?

本文为雷锋字幕组编译的技术博客,原标题 Image Inpainting for Irregular Holes Using Partial Convolutions,作者 NeuroHive 。 翻译 | 段小杰 尘央 整理 | 吴璇

为了克服先前方法的局限性,英伟达公司的研究利用部分卷积去解决图像着色问题。部分卷积层由一个掩模更新运算再加一个被掩模和再标准化的卷积运算构成。

深度学习是人工智能中发展最快的领域之一,被广泛的应用在很多领域,尤其是实时目标检测、图像识别和视频分类。深度学习通常采用卷积神经网络、深度信念网络、循环神经网络等方式实现。

图像修补就是深度学习的一个应用。它通过建立一个图像修补模型,自动填充图像不规则的空隙内容,这些填补是基于图像语义上的预测,使其与原有图像可以完美融合,而不必借助任何后期操作。图像修补可以应用在很多场合,例如擦除图像不需要的内容并填补图像合理的内容。

图像修补中使用了许多不同的方法,但是没有一种方法使用深度学习方法,并且这些方法有一些限制。其中一种方式叫做块匹配(patchmatch),是在自身图像中找到与之最匹配的块来填补图像。尽管这种方式能够产生比较光滑的结果,但是受到可用图像块数量的限制以及此种方式不能很好地理解图片的视觉语义。许多方法的另一个局限是聚焦矩形孔洞,这些孔洞常被看做图像的中心,这些限制导致了矩形空隙的过拟合,最终限制了这些模型的应用。

它是怎样工作的

为了克服先前方法的局限性,英伟达公司的研究利用部分卷积去解决图像着色问题。部分卷积层由一个掩模更新运算再加一个被掩模和再标准化的卷积运算构成。最主要的延伸是掩模自更新步骤,它去掉了所有掩模,这样部分卷积就可以再非掩模值上运算。以下是本文的主要创新点:

1. 用带有自动掩模更新的部分卷积运算来进行图像修补,达到目前以来的最好效果。

2. 用部分卷积和掩模自动更新代替卷积运算可以得到目前最具艺术性的图像修补结果。

3. 证明了部分卷积在建立图像修补模型时,对不规则孔洞填充的有效性。

部分卷积层

该模型运用多次部分卷积运算和掩模更新步骤来进行图像修补。部分卷积运算和掩模更新函数共同构成了部分卷积层。

W 作为卷积滤波器的权值,b 作为卷积滤波器相关的偏置,x 是现有卷积窗口的特征值(像素值),M 是对应的二进制掩模。不同层的部分卷积运算被表示为:

⊙表示元素点乘。可以看到,输出值只取决于非掩模输入。缩放因子 1/sum(M) 应用合适的缩放系数去自适应不同的有效输入。在每个部分卷积运算之后,掩模被更新了。去掩模规则很简单,如果卷积运算可以使输出至少反应一个有效输入值,去掩模就是将那个位置的掩模去掉。这种运算表示为:

并且可以很容易地在任何深度学习框架中作为前进的一部分实现。

网络体系结构

通过扩展现有的标准 PyTorch 来实现部分卷积层。通过定义大小为 C×H×W 的二进制掩码来简单实现与其一样大小的相关图像或功能,然后使用一个固定的卷积来实现掩码更新,大小相同的内核作为部分卷积操作,权重相同的设置为 1 和不同则设置为 0。无论孔的大小,512×512 图像的整个网络推断在单一 NVIDIA V100 GPU 中需要花费 0.23 秒。

所使用的架构是类似于 UNet 的架构,将所有的卷积层替换为部分的卷积层,并在解码阶段使用最近的邻居向上采样。

图 1:在图像修复中使用的架构,所有的卷积层都被部分的卷积层取代

ReLU 被用于编码阶段,角度为 0.2 的 LeakyReLU 则被用于所有解码层之间。编码器包括 8 个步幅为 2 的部分卷积层。内核大小为 7、5、5、3、3、3、3 和 3。通道大小为 64、128、256、512、512、512、512 和 512。最后部分卷积层的输入将包含原始输入图像、孔和原始掩码的连接。

损失函数

损失函数的目标是每个像素精度和构成的重建,即预测的孔值如何平滑地过渡到周围的环境中。给出输入图像的孔射程和掩码 M,网络预测的 Iout 以及基于真实图像的 Igt,于是将像素损失定义为:

感知损失(感知损失函数测量图像之间的高层次感知和语义差异。他们利用一个预先训练好的图像分类的损耗网络,这意味着这些感知损失函数本身就是深度卷积神经网络)被定义为:

感知损失计算出 Iout 和 Icompand 之间的距离 L1。为了执行自相关,在每个特征图谱中引入了类型损失项。

全部损失是上述损失的总合:

结果

利用部分卷积层与一个自动掩模更新机制,实现了最先进的图像绘制结果。该模型可以很好地处理任何形状、大小位置或距离图像边界的孔。此外,如图 2 所示,随着孔尺寸的增加,性能不会发生灾难性的恶化。

图 2:第一行:输入;下面一行:对应绘制结果

图 3:基于结果的典型卷积层和基于结果的部分卷积层之间的比较

部分卷积方法的更多结果:

原文发布于微信公众号 - AI研习社(okweiwu)

原文发表时间:2018-05-27

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏SeanCheney的专栏

《Scikit-Learn与TensorFlow机器学习实用指南》 第4章 训练模型

在之前的描述中,我们通常把机器学习模型和训练算法当作黑箱来处理。如果你动手练习过前几章的一些示例,就能惊奇地发现优化回归系统、改进数字图像的分类器、甚至可以零基...

912
来自专栏人工智能

吴恩达深度学习课程笔记之卷积神经网络基本操作详解

卷积层 CNN中卷积层的作用: CNN中的卷积层,在很多网络结构中会用conv来表示,也就是convolution的缩写。 卷积层在CNN中扮演着很重要的角色—...

3757
来自专栏梦里茶室

Object Detection · RCNN论文解读

转载请注明作者:梦里茶 Object Detection,顾名思义就是从图像中检测出目标对象,具体而言是找到对象的位置,常见的数据集是PASCAL VOC系列...

3387
来自专栏专知

【干货】KNN简明教程

【导读】本文是Devin Soni撰写的博文,主要介绍k-近邻算法(KNN)的工作原理和常见应用。KNN可以说是机器学习算法中最普遍、最简单的分类方法了,其拥有...

3025
来自专栏利炳根的专栏

学习笔记CB009:人工神经网络模型、手写数字识别、多层卷积网络、词向量、word2vec

由n个输入特征得出与输入特征几乎相同的n个结果,训练隐藏层得到意想不到信息。信息检索领域,模型训练合理排序模型,输入特征,文档质量、文档点击历史、文档前链数目、...

38215
来自专栏人工智能LeadAI

CNN中,1X1卷积核到底有什么作用呢?

Question 从NIN 到Googlenet mrsa net 都是用了这个,为什么呢? 发现很多网络使用了1X1卷积核,这能起到什么作用呢?另外我一直觉得...

4407
来自专栏磐创AI技术团队的专栏

新手入门机器学习十大算法

【磐创AI导读】:对于想要了解机器学习的新手,本文为大家总结了数据科学家最经常使用的十大机器学习算法来帮助大家快速入门。如果喜欢我们的文章,欢迎点赞、评论、转发...

751
来自专栏计算机视觉

通过推测语义布局,层级形式文本到图像的合成《Inferring Semantic Layout for Hierarchical Text-to-image Synthesis》一、从文本来推断语义布

perceptual loss 图1. 给定一个文本描述,构成一个语义结构,(box+mask),由前面的两个大条件,合成图片。与Reed的思路很像,但解决...

5538
来自专栏深度学习计算机视觉

计算机视觉中的物体检测方法

本文适合刚入门物体检测的人群学习,不涉及公式推理。 目录 *摘要 *相关物体检测数据集介绍 *现有的主流物体检测算法 *物体检测的难点与挑战 *相关术语介绍 *...

2804
来自专栏企鹅号快讯

机器学习之白话adaboost元算法

阅读本文大约需要5分钟 作为(曾)被认为两大最好的监督分类算法之一的adaboost元算法(另一个为前几节介绍过的SVM算法),该算法以其简单的思想解决复杂的分...

1946

扫码关注云+社区