Inverting Visual Representations with Convolutional Networks

Inverting Visual Representations with Convolutional Networks

Mahendran和Vedaldi[19]使用梯度下降法Invert可微图像表示 Φ \Phi Φ。给定一个特征向量 Φ 0 \Phi_0 Φ0,他们尝试寻找能最小化损失函数的图片 x ∗ x^* x。损失函数为 Φ 0 \Phi_0 Φ0 Φ ( x ) \Phi(x) Φ(x)的欧氏距离的平方加上一个正则化项来强制自然的图像优先(enforcing a natural image prior)。这种方法与我们的方法有本质的不同,它优化了特征向量之间的差异,而不是图像重建误差(image reconstruction error)。此外,它包括一个hand-designed先验自然图像,而在我们方法中,网络隐式学习这样的先验。从技术上讲,它涉及到测试时的优化,这需要计算特征表示的梯度,速度相对缓慢(作者报告在GPU上每幅图像6秒)。相比之下,我们的方法仅在训练inversion网络时耗时较多。从一个给定的特征向量重建只需要一次通过网络的前向传递,在GPU上每幅图像大约需要5毫秒。

2. Method

用随机变量 ( x , ϕ ) (\mathbf x,\phi) (x,ϕ)表示一张自然图片和它对应的特征向量,用 p ( x , ϕ ) = p ( x ) p ( ϕ ∣ x ) p(\mathbf x,\phi)=p(\mathbf x)p(\phi|\mathbf x) p(x,ϕ)=p(x)p(ϕx)表示他们的联合概率分布。这里 p ( x ) p(\mathbf x) p(x)为自然图片的分布, p ( ϕ ∣ x ) p(\phi|\mathbf x) p(ϕx)为给定图片,特征向量的分布。作为特例, ϕ \phi ϕ可以是关于x的确定函数。理想情况下,我们希望找到 p ( ϕ ∣ x ) p(\phi|\mathbf x) p(ϕx),但直接应用贝叶斯定理是不可行的。因此,在本文中,我们采用点估计 f ( ϕ ) f(\phi) f(ϕ),它使以下均方误差目标最小化:

在这里插入图片描述

损失的最小值是条件期望:

在这里插入图片描述

给定一组训练集图片和它们的特征向量 { x i , ϕ i } \{\mathbf x_i,\phi_i\} {xi,ϕi},我们学习up-convolutional网络 f ( ϕ , w ) f(\phi,\mathbf w) f(ϕ,w)的权重w来最小化loss (1)的蒙特卡洛估计:
在这里插入图片描述

这意味着,简单地训练网络,根据图像的特征向量预测图像,就可以估计出预期的预图像pre-image。

2.1. Feature representations to invert

AlexNet. 我们invert AlexNet网络。它由5个卷积层和3个全连接层组成,每个层后面有ReLUs,其中一些层后面有local contrast normalization或maxpooling。具体结构见补充材料。

在下文中,当我们说“层的输出”时,我们指的是该层最后一个处理步骤的输出。例如,第一卷积层CONV1的输出将是ReLU、pooling和normalization之后的结果,并且第一全连接层FC6的输出是ReLU之后的结果。FC8表示softmax之前的最后一层。

2.2. Network architectures and training

up-convolutional,也称为“deconvolutional”,是上采样和卷积的组合[6]。我们通过将特征图中的每个值替换为一个2x2块,原值在左上角,其他项都等于零,特征图的上采样因子为2。我们的一个up-convolutional网络的结构如表1所示。其他网络的体系结构见补充资料。

在这里插入图片描述

AlexNet. 为了从AlexNet的每一层进行重建,我们训练了一个单独的网络。我们使用了两种基本架构:一种用于从卷积层重构,另一种用于从全连接层重构。从全连接层重建的网络包含三个全连接层和5个up-convolutional层,如表1所示。从卷积层重建的网络由三个卷积层和几个up-convolutional层组成(确切的数目取决于要重建的层)。所有的up-convolutional层的卷积核的空间大小为 5 × 5 5\times5 5×5。每一层后面我们都加入非线性的leaky ReLU,斜率为0.2,即当 x ≥ 0 x\ge0 x0时, r ( x ) = x r(x)=x r(x)=x,当 x < 0 x<0 x<0时, r ( x ) = 0.2 x r(x)=0.2x r(x)=0.2x

Training details. 我们用ImageNet作为训练集。在某些情况下,我们预测下采样图像,以加快计算。我们用Adam优化器, β 1 = 0.9 , β 2 = 0.999 \beta_1=0.9,\beta_2=0.999 β1=0.9,β2=0.999,mini-batch size为64,对于大多数网络,我们初始化学习率为0.001可以达到很好的效果。我们逐渐降低了学习率直到训练结束。训练的时间取决于网络,浅网络需要15个epoch,深网络需要60个epoch。

定量评价 作为性能的定量度量,我们使用了平均归一化重建误差,即 ∣ ∣ x i − f ( Φ ( x i ) ) ∣ ∣ 2 / N ||x_i-f(\Phi(x_i))||_2/N xif(Φ(xi))2/N,其中 x i x_i xi为测试集中的一个例子,f为inversion实现的函数,N是归一化系数,等于测试集中图像之间的平均欧氏距离。我们用于定量和定性评估的测试集是ImageNet验证集的子集。

4. Experiments: AlexNet

我们将我们的inversion方法应用到AlexNet的不同层,并进行了一些额外的实验,以更好地理解特征表示。更多结果见补充材料。

4.1. Reconstructions from different layers

在这里插入图片描述

图5显示了从AlexNet的各个层进行的重构。当使用卷积层的特征时,重建的图像看起来与输入非常相似,但是当我们用更高的层时会丢失细节。从CONV5到FC6,重建质量明显下降。然而,从更高的卷积层,甚至全连接层重建保留颜色和对象的近似位置非常好。从FC7和FC8重建的图像看起来仍然与输入图像相似,但是模糊。这意味着高级特征对颜色和姿势的不变性要比预期的小得多:原则上,全连接的层不需要保留有关输入图像中对象的颜色和位置的任何信息。
在这里插入图片描述

Figure 7: Average normalized reconstruction error depending on the network layer.

为了在计算误差之前进行定量评估,我们用双线插值对输入图像大小进行上样重建。图7所示的误差曲线支持了上面的结论。当从FC6重构时,误差大约是conv5的两倍.即使从FC8重构时,误差也相当低,因为网络能够正确获得图像中大对象的颜色和大致位置。对于较低的层,[19]的重建误差仍然比我们的方法高得多,即使在视觉上图像看起来更清晰。其原因是在重建过程中,颜色和小细节的精确放置与输入图像不完全匹配,导致了较大的整体误差。

4.2. Autoencoder training

我们的inversion网络可以被解释为AlexNet编码表示的解码器。与自动编码器的区别在于编码器部分保持固定,只有解码器得到优化。为了比较,我们还训练了与我们的重构网相同架构的自动编码器,即我们也允许训练对AlexNet部分的参数进行微调。这为我们可能期望从inversion网络(使用固定的AlexNet)获得的重建质量提供了一个上限。

如图7所示,当从更高的层数进行重建时,自动编码器训练产生的重建误差要低得多。另外,图6中的定性结果也显示,使用自动编码器的重建效果要好得多。即使从conv5特征出发,输入图像也几乎可以完美重建。当从完全连接的图层进行重建时,由于压缩的表示方式,自动编码器的结果也会变得模糊,但远不如使用固定的AlexNet权重。自动编码器的训练和使用固定AlexNet的训练之间的差距给出了由于AlexNet的训练目标而导致的图像信息损失量的估计,而AlexNet的训练目标不是基于重建质量。

在这里插入图片描述

对自动编码器的一个有趣的观察是,即使从conv1特征重建时,重建误差也相当高,最好的重建实际上是从conv4中获得的。我们的解释是,CONV1中的stride 4卷积和随之而来的最大池化会丢失很多图像信息。为了减少重建误差,对网络来说,稍微模糊图像而不是猜测细节是有益的。当从更深的层中重建时,更深的网络可以学习更好的先验,从而使图像略微清晰,重建误差略微降低。对于更深的层数,表示会变得过于压缩,误差再次增加。我们观察到(论文中没有显示),在第一层没有stride 4的情况下,自动编码器的重建误差变得更低。

表示会变得过于压缩,误差再次增加。我们观察到(论文中没有显示),在第一层没有stride 4的情况下,自动编码器的重建误差变得更低。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值