最近刚开始学习图像修复,这是本人在阅读论文时整理的大纲和笔记,如果有看到不对的地方希望能在评论区中指出,我也会及时改正。我还在努力学习中,请大家理解!
Abstract
上下文编码器(context encoders):
- 一种神经网络——它可以根据周围环境生成任意区域的图像
- 工作方式:既需要理解整个图像,也需要对缺失的部分提出合理的假设
- 训练过程中用到的两种损失函数:
后者可以提供更加清晰的输出,因为它可以处理多模态的输出
- a standard pixel-wise reconstruction loss
- an adversarial loss
- 在学习特征的时候不仅需要捕捉外观,也需要捕捉视觉结构的语义(the semantics of visual structures)。
- 证明了其有效性和有用性:
- 预训练:可用于分类、检测、分割任务的预处理
- 语义修补
- 非参数方法的初始化
1.Introduction
- 问题:Although the center part of the image is missing, most of us can easily imagine its content from the surrounding pixels, without having ever seen that exact scene.
- 原因:This ability comes from the fact that natural images, despite their diversity, are highly structured.
- humans: understand the structure and make visual predictions.
- context encoders:
- encoder: capture the context of an image into a compact latent feature representation.(捕捉特征)
- decoder: use that representation to produce the missing image content.(利用捕捉到的特征预测缺失的部分)
autoencoder | context encoder | denoising autoencoders | |
---|---|---|---|
缺点 | this feature representation is likely to just compresses the image content without learning a semantically meaningful representation | ------ | this corruption process is typically very localized and low-level, and does not require much semantic information to undo |
工作方式 | take an input image and try to reconstruct it after it passes through a low-dimensional “bottleneck” layer, with the aim of obtaining a compact feature representation of the scene. | both understand the content of an image, as well as produce a plausible hypothesis for the missing parts. | address this issue by corrupting the input image and requiring the network to undo the damage. |
2.Related work
2.1 Unsupervised learning
深度学习的相关发展历程:
- autoencoder
- denoising autoencoders : reconstruct the image from local corruptions, to make encoding robust to such corruptions
- context encoder : the corruption applied to the model’s input is spatially much larger, requiring more semantic information to undo.
2.2 Weakly-supervised and self-supervised learning
source of supervision
- use the temporal information contained in videos
- track patches in frames of video containing task-relevant attributes and use the coherence of tracked patches to guide the training
本论文采用空间上下文作为监督信号。
2.3 Image generation
上下文编码器可以应用于任何未标记的图像数据库,并学会基于周围的上下文生成图像
2.4 Inpainting and hole-filling
因为缺失内容太大,不能用经典的图像补全和纹理合成来修复
- computer graphics, filling in large holes is typically done via scene completion, involving a cut-paste formulation using nearest neighbors from a dataset of millions of images.
(填充任意区域存在困难) - context encoder: We show that our method is often able to inpaint semantically meaningful content in a parametric fashion, as well as provide a better feature for nearest neighbor-based inpainting methods.
3. Context encoders for image generation
3.1 Encoder-decoder pipeline
总体架构是一个简单的编码器-解码器管道。
编码器获取一个缺失区域的输入图像,并产生该图像的潜在特征表示。
解码器采用此特征表示并生成缺失的图像内容。
通过通道上的全连接层连接编码器和解码器,解码器中的每个单元可以推理整个图像内容。
Encoder
编码器源自AlexNet架构:给定一个大小为227×227的输入图像,我们使用前5个卷积层和池化层(pool5)来计算一个抽象的6 × 6 × 256维特征表示。
与AlexNet相比,我们的模型没有经过ImageNet分类训练;相反,该网络被训练为“从头开始”使用随机初始化权重进行上下文预测。
然而,如果编码器架构只局限于卷积层,就没有办法将信息从特征映射的一个角落直接传播到另一个角落。这是因为卷积层将所有的特征映射连接在一起,但从不直接连接特定特征映射中的所有位置。
在目前的体系结构中,这种信息传播是由完全连接层或内部积层处理的,其中所有激活都直接相互连接。在我们的体系结构中,码器和解码器的潜在特征维数都是6 × 6 × 256 = 9216。
然而,完全连接编码器和解码器将导致参数数量的爆炸,在目前的gpu上进行有效训练将是困难的。为了缓解这个问题,使用通道全连接层将编码器功能连接到解码器
Channel-wise fully-connected layer
与全连通层不同的是,channel-wise fully-connected layer没有参数连接不同的特征映射,只传播特征映射内的信息。因此,与全连接层中的m2n4个参数(忽略偏差项)相比,这个通道全连接层中的参数数量为mn4。
Decoder
在通道级全连接层之后是一系列的5个上卷积层(up-convolutional layers),这些层带有学习滤波器,每个层都有一个ReLU激活函数。上卷积是一种简单的卷积,它能产生更高分辨率的图像。它可以理解为上采样后的卷积,或分数步长卷积。一系列的上卷积和非线性,包含了编码器产生的特征的非线性加权上采样,直到我们大致达到原始目标大小。
3.2 Loss function
- The reconstruction(L2) loss is responsible for capturing the overall structure of the missing region and coherence with regards to its context, but tends to average together the multiple modes in predictions.
- The adversarial loss, tries to make prediction look real, and has the effect of picking a particular mode from the distribution.
Reconstruction Loss
对L1和L2损失进行了实验,发现两者之间没有显著差异。虽然这种简单的损失促使解码器产生预测对象的粗略轮廓,但它常常无法捕获任何高频细节。这源于一个事实,即L2(或L1)损失通常更喜欢一个模糊的解决方案,而不是高度精确的纹理。
Adversarial Loss
对抗损失是基于生成对抗网络(GAN)。为了学习数据分布的生成模型G, GAN提出联合学习对抗判别模型D,为生成模型提供损失梯度。G和D是参数函数,其中G: Z→X将样本从噪声分布Z映射到数据分布X。学习过程是一个二人博弈,其中对抗性判别器D同时接受G的预测和真实样本,并试图区分它们,而G则试图通过产生尽可能“真实”的样本来迷惑D。
将该框架通过上下文编码器的建模生成器来用于上下文预测。为了为此任务定制GANs,可以对给定的上下文信息设置条件。然而,条件GANs不容易训练上下文预测任务,因为对抗判别器D很容易利用生成区域和原始上下文中的感知不连续,轻松地将预测样本与真实样本进行分类。因此,使用了另一种表述:只根据上下文条件作用生成器(而不是鉴别器)。我们还发现,当发生器不以噪声矢量为条件时,结果有所改善。
3.3 Region masks
Central region
最简单的形状是图像中心的正方形缺失。虽然这在修补中工作得很好,但是网络学习了锁定在中央掩模边界上的低层次图像特征。这些低层次的图像特征往往不能很好地泛化到没有掩模的图像,因此学习到的特征不是很普遍。
Random block
为了防止网络锁住在掩膜区域的固定边界上,我们对掩膜过程进行随机化。我们没有在固定的位置选择一个大的蒙版,而是删除了一些可能重叠的小蒙版,覆盖了图像的1/4的部分。然而,随机块掩蔽仍然有清晰的边界,卷积特征依然可以锁定。
Random region
为了完全消除这些边界,我们尝试从PASCAL VOC 2012数据集的随机掩码中获得的图像中删除任意形状。
通过变形这些形状,并粘贴在其他图像的任意位置,再次覆盖图像的1/4。注意,我们完全随机化了区域掩模过程,不期望或不希望源分割掩模与图像之间有任何相关性。我们只是使用这些区域来阻止网络学习与被删除的掩码相对应的底层特征。
4. Implementation details
- 实验环境:Caffe and Torch
- 优化器:随机梯度下降求解器ADAM
- 在掩模输入图像中缺失的区域用恒定的均值填充
- 超参数设置
Pool-free encoders
尝试用相同内核大小和步幅的卷积替换所有池化层。网络的整体步幅保持不变,但它的结果是更好的填充。没有理由将池用于基于重构的网络。
在分类中,池化提供了空间不变性,这可能不利于基于重建的训练。为了与之前的工作保持一致,仍然使用原始的AlexNet架构(带有池化层)来处理所有的特性学习结果。
5. Evaluation
- semantic quality :present visualizations demonstrating the ability of the context encoder to fill in semantic details of images with missing regions.
- transferability to other image understanding
tasks :using context encoders as a pre-training step for image classification, object detection, and semantic segmentation.
5.1 Semantic Inpainting
没有调整对抗性损耗,也没有在编码器中添加噪声。并且使用上下文编码器的学习率(10倍)高于对抗性鉴别器。
为了进一步强调预测与上下文的一致性,我们预测了一个与上下文重叠的略大的补丁(7px)。在训练过程中,我们对这个重叠区域的重建损失使用了更高的权重(10×)。
5.2. Feature Learning
为了与之前的工作保持一致,编码器使用AlexNet架构。但是没有设法使对抗损失与AlexNet收敛,所以我们只使用重建损失。对于中心区域掩码,网络以恒定的学习率10−3进行训练。然而,对于随机区域破坏,我们发现学习率为10-4时表现更好。仅对通道全连接层应用了0.5的下降率,因为它比其他层有更多的参数,可能容易过拟合。
5.2.1 Classification pre-training
随机初始化的性能比imagenet训练的模型低25%左右;但是,它不使用任何标签。上下文编码器与并发的自监督特征学习方法具有竞争力,并且显著优于自动编码器。
5.2.2 Detection pre-training
用上下文编码器替换ImageNet预先训练的网络:将预先训练的编码器权重上传到pool5层,并重新初始化全连接层。
上下文编码器的预训练与现有的方法相比具有竞争力,可以在基线上实现显著的提高。最近,Krähenbühl等人提出了一种数据依赖的方法来缩放预训练的模型权重。这显著改善了特征,分类率达到65.3%,检测率达到51.1%。然而,这种缩放并不能改善其他方法的结果。
5.2.3 Semantic Segmentation pre-training
将FCN方法中使用的分类预训练网络替换为上下文编码器,在这种情况下,我们的性能优于随机初始化的网络和简单的自动编码器。
6. Conclusion
我们的上下文编码器经过训练,以生成基于上下文的图像,提高了语义修复技术的水平,同时学习了与其他辅助监督训练的模型相比具有竞争力的特征表示。