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(ϕ),它使以下均方误差目标最小化:

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

给定一组训练集图片和它们的特征向量{xi,ϕ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×55\times55×5。每一层后面我们都加入非线性的leaky ReLU,斜率为0.2,即当x≥0x\ge0x≥0时,r(x)=xr(x)=xr(x)=x,当x<0x<0x<0时,r(x)=0.2xr(x)=0.2xr(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。

定量评价 作为性能的定量度量,我们使用了平均归一化重建误差,即∣∣xi−f(Φ(xi))∣∣2/N||x_i-f(\Phi(x_i))||_2/N∣∣xi​−f(Φ(xi​))∣∣2​/N,其中xix_ixi​为测试集中的一个例子,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的情况下,自动编码器的重建误差变得更低。

Inverting Visual Representations with Convolutional Networks相关推荐

  1. 【Paper】CNN-LSTM:Long-term Recurrent Convolutional Networks for Visual Recognition and Description

    论文期刊:CVPR 2015 (oral) 论文被引:3673 (04/24/20) 论文原文:点击此处 该论文是 CNN-LSTM 的开山鼻祖,主要用于生成图像描述.初稿发布于2014年,拿到了 C ...

  2. Paper8:Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition

    Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition 还未读

  3. [SPP-NET]Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition

    基于空间金字塔池化的卷积神经网络物体检测 原文地址:http://blog.csdn.net/hjimce/article/details/50187655 作者:hjimce 一.相关理论 本篇博文 ...

  4. 目标检测--Spatial pyramid pooling in deep convolutional networks for visual recognition(PAMI, 2015)

    Spatial pyramid pooling in deep convolutional networks for visual recognition 作者: Kaiming He, Xiangy ...

  5. 《Long-term Recurrent Convolutional Networks for Visual Recognition and Description》论文翻译

    <Long-term Recurrent Convolutional Networks for Visual Recognition and Description>论文翻译 原文链接: ...

  6. 论文笔记 Very Deep Convolutional Networks for Large-Scale Visual Recognition - ICLR 2014

    VGG Very Deep Convolutional Networks for Large-Scale Visual Recognition Karen Simonyan and Andrew Zi ...

  7. FCN全连接卷积网络(3)--Fully Convolutional Networks for Semantic Segmentation阅读(摘要部分)

    1.摘要 1.1逐句理解一下: Convolutional networks are powerful visual models that yield hierarchies of features ...

  8. Fully Convolutional Networks for Semantic Segmentation (FCN)论文翻译和理解

    论文题目:Fully Convolutional Networks for Semantic Segmentation 论文来源:Fully Convolutional Networks for Se ...

  9. VGGNet论文翻译-Very Deep Convolutional Networks for Large-Scale Image Recognition

    Very Deep Convolutional Networks for Large-Scale Image Recognition Karen Simonyan[‡] & Andrew Zi ...

  10. Deformable Convolutional Networks论文翻译——中文版

    文章作者:Tyan 博客:noahsnail.com  |  CSDN  |  简书 声明:作者翻译论文仅为学习,如有侵权请联系作者删除博文,谢谢! 翻译论文汇总:https://github.com ...

最新文章

  1. 用应用封装来提高移动安全,这合适吗?
  2. Swift 高级运算符
  3. android ProgressBar 使用方法
  4. 蓝桥杯练习题十六进制转十进制
  5. java string转long报错_java.lang.Integer cannot be cast to java.lang.Long解决办法
  6. UVa11137 Ingenuous Cubrency
  7. 计算机网络实训室建设设备,计算机网络技术综合实训室建设方案.doc
  8. MTK之UART串口收发数据
  9. 为大家提供几个开发职位
  10. android pokemon go,安卓Pokemon GO懒人版
  11. 异步消息的性能与激情之Netty开发思路
  12. 创建ASP.NET MVC5 应用程序
  13. linux系统notebook,RedNotebook——Linux环境桌面日记本
  14. Mujoco-一阶单摆建模与控制
  15. 【博主推荐】HTML浪漫表白求爱(附源码)
  16. java StringBuilder用法
  17. Python爬虫爬取微信朋友圈
  18. 给嵌入式ARM+Linux的初学者
  19. 乘法口诀测试小软件,60000道乘法口诀练习题模板(4至9以内各10000题)
  20. 【Wikipedia爬虫工具包的使用】请求超时、代理错误、SSLError

热门文章

  1. 基于51单片机的银行排队叫号机设计
  2. 学生成绩预测模型_学生成绩分析预测
  3. 为什么快捷指令无法将媒体转换为文本_刘星文:快捷指令这个神器,让你的 iPhone 好用到飞起...
  4. 【专栏必读】王道考研408数据结构万字笔记、题目题型总结、注意事项、目录导航和思维导图
  5. ensp官方停止下载
  6. 几种凹凸贴图(Bump Mapping)的学习记录
  7. 本周大新闻|传Cambria采用升级版XR2芯片,TGS增设VR虚拟展厅
  8. java实现微信公众号群发文本消息
  9. Unity Wwise 自己使用
  10. JS设计模式与开发实践