1.5.2 ZFNet

news/2024/7/3 12:09:30

目录

  • 1.5.2 ZFNet
    • 5.7 反卷积(Deconvnet)
      • 5.7.1 上采样池化(UnPooling)
      • 5.7.2 反卷积过程
    • 5.8 ZFNet 架构设计
    • 5.9 ZFNet 的贡献

1.5.2 ZFNet

在前文中,我们对 AlexNet 的架构以及核心组件做了相关介绍,虽然 AlexNet 赢得了 ILSVRC2012 的冠军,相比传统技术取得辉煌的成就,然而技术绝不止步于此,AlexNet 为什么性能如此优越,它还能如何改进呢?带着这样的问题,在 ILSVRC2013 中,ZFNet1 利用反卷积可视化技术探讨上述问题,并对 AlexNet 网络加以改进,改进后的 ZFNet 性能已明显超越 AlexNet。

ZFNet 由 Matthew D. Zeiler 和他的博导 Rob Fergus 提出,网络命名来自于他们的名字首字母组合。ZFNet 实际上并不是这一届的冠军,而是由一个创业公司 Clarifai 获得,而 Zeiler 是该公司的 CEO,而我们通常讨论 ILSVRC2013 的获胜者,一般也指的是 ZFNet。

5.7 反卷积(Deconvnet)

在深度学习中提到的反卷积通常是指转置卷积(transposed convolution),卷积操作的一般步骤通常是将输入层的图像经过某个卷积核实现卷积操作,将其映射到输出空间中。而反卷积操作则是将输出空间的数据反向应用该卷积核,将其映射到输入像素空间中,这样在输入层的成像可以表明该卷积核从中提取了什么特征模式。

网络正向卷积的过程可以简化为:卷积、ReLU非线性激活、池化。则反卷积过程可以简化为反池化、ReLU非线性激活、反卷积。如下图所示,右侧自下而上是图像的正向卷积过程,左侧自上而下是反卷积过程。
【图 1】

5.7.1 上采样池化(UnPooling)

通常在卷积网络中的池化是指下采样(DownPooling)过程,而一般的池化网格为 2 × 2 2\times 2 2×2,如下图所示,最大池化是指在 2 × 2 2 \times 2 2×2 的单元格中挑选最大的数值,这个过程中,图像的高度和宽度均缩小一半,因此称为下采样,而上采样是将特征图在高度和宽度上放大一倍的操作,因此称之为上采样。然而从下采样到上采样,该过程是不可逆的,因此在执行下采样的期间需要记录单元格中最大局部值(max locations)的位置,以便用于上采样过程,其补充的新空间位置一般补 0。整个过程如下图所示:

【图 2】

在卷积过程中,我们使用 ReLU 激活函数保证所有的输出均为非负数,这个约束对于反卷积过程依然适用,这样映射到输入像素空间的图像值也均为非负,因此在反卷积过程中我们依然使用 ReLU 激活函数。

5.7.2 反卷积过程

如图 1 所示,在卷积过程中,我们使用的卷积核为 F F F,而在反卷积过程中,我们使用的卷积核为 F T F^T FT。这就是为什么此类的反卷积也被称为转置卷积。为了更好的理解转置过程,我们举例如下:

假设某特征图为 X = [ 1 2 3 4 5 6 7 8 9 ] X=\begin{bmatrix} 1 & 2 & 3\\ 4 & 5 & 6 \\ 7 & 8 & 9 \end{bmatrix} X=147258369,卷积核 F = [ 1 2 1 2 1 3 3 1 2 ] F=\begin{bmatrix} 1 & 2 & 1\\ 2 & 1 & 3 \\ 3 & 1 & 2 \end{bmatrix} F=123211132,则卷积后的特征图为 [ 86 ] \begin{bmatrix} 86 \end{bmatrix} [86],一个 3 × 3 3 \times 3 3×3 的特征图与 3 × 3 3 \times 3 3×3 的卷积核操作得到 1 × 1 1 \times 1 1×1 大小的特征图,而反卷积是将得到的 1 × 1 1 \times 1 1×1 的特征图利用该卷积核还原为原始 3 × 3 3 \times 3 3×3 的特征图。为此,我们首先需要将 1 × 1 1\times 1 1×1 的卷积核扩展为 5 × 5 5\times 5 5×5,这样在与 3 × 3 3\times 3 3×3 大小的卷积核卷积后得到的图像大小为 3 × 3 3 \times 3 3×3。操作过程如下:

[ 0 0 0 0 0 0 0 0 0 0 0 0 86 0 0 0 0 0 0 0 0 0 0 0 0 ] ∗ [ 2 1 3 3 1 2 1 2 1 ] = [ 1 2 3 4 5 6 7 8 9 ] × 86 \begin{bmatrix} 0 & 0 & 0 & 0 & 0\\ 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 86 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 \\0 & 0 & 0 & 0 & 0 \end{bmatrix} * \begin{bmatrix} 2 & 1 & 3\\ 3 & 1 & 2 \\ 1 & 2 & 1 \end{bmatrix} = \begin{bmatrix} 1 & 2 & 3\\ 4 & 5 & 6 \\ 7 & 8 & 9 \end{bmatrix}\times 86 00000000000086000000000000231112321=147258369×86

在上述过程中,我们可以看到此处的卷积核实际为原卷积核 F F F 的转置。

5.8 ZFNet 架构设计

借助反卷积可视化技术,可以查看 AlexNet 卷积网络中存在的一些问题:

  • AlexNet 网络第一层卷积核混杂了大量的高频和低频信号,但是缺乏中频信息
  • AlexNet 第二卷积层跨度过大,产生了一些混叠失真等无意义特征

针对这两个缺陷,ZFNet 将 AlexNet 第一层的卷积核由 11 × 11 11\times 11 11×11 减小为 7 × 7 7 \times 7 7×7,强迫网络从更小的局部范围抽取特征,避免对中频信息的严重过滤,其次将 AlexNet 第一层的卷积步长由 4 降低为 2。

模块卷积层池化、正则
CONV1[7×7 ~ 2 | 3→96]MAXPOOL[3×3 ~ 2]→LRN
CONV2[5×5 ~ 2 | 96→256]MAXPOOL[3×3 ~ 2]→LRN
CONV3[3×3 ~ 1 | 256→384]→LRN
CONV4[3×3 ~ 1 | 384→384]→LRN
CONV5[3×3 ~ 1 | 384→256]MAXPOOL[3×3 ~ 2]→LRN
FC1[12544→4096]DROPOUT 50%
FC2[4096→4096]DROPOUT 50%
Softmax[4096→1000]

5.9 ZFNet 的贡献

通过上面的介绍,我们知道 ZFNet 仅仅是 AlexNet 的一个微型改版,该网络本身的架构在目前的 CNN 家族中几乎被湮没了。然而抛开本身的网络架构,其可视化理解 CNN 网络的思路以及实验结果却对 CNN 架构的发展起到了至关重要的作用:

  • 通过对各层卷积核的可视化,我们可以直观的看出 CNN 网络各层的特征提取情况,底层主要对物理轮廓、边缘、纹理、颜色等特征进行提取,而高层逐渐通过低层的特征组合为具有明显分类性质的抽象特征,这表明 CNN 网络的高层与特定的分类任务有关,而低层卷积架构则可以理解为通用特征提取器,这也是预训练+微调模式的重要理论依据。
  • 在对图像进行一些位移、缩放及旋转操作后,实验证明 CNN 特征提取器检测到的特征具有平移和缩放不变性,但是不具有旋转不变性。
  • 在对网络架构的全连接层和卷积层进行增删等可以发现,全连接层对结果的影响较小但是增加一些卷积层会有一定的性能提升,这将作为一个 CNN 深度架构时代的开端,由此引发一场深度架构大战。

  1. Visualizing and Understanding Convolutional Networks ↩︎


http://www.niftyadmin.cn/n/3657484.html

相关文章

装 Visual Studio 2005 的用户请赶快打补丁

今天早上微软发布了一个补丁,修复了Visual Studio 2005的一个安全漏洞 下面是我的安装信息 Microsoft Visual Studio 2005 Service Pack 1 安全更新 (KB937061) 安装日期: ‎2007/‎9/‎12 8:40 安装状态: 成功 更新类型: 重要 最近发现了一个安全问题,攻…

1.6 VGG GoogleNet

目录1.6 VGG & GoogleNet1.6.1 VGGNet1.6.2 GoogleNet1.6.2.1 Bottleneck Layer1.6.2.2 Inception 模块1.6.2.3 Inception-v1 网络架构1.6 VGG & GoogleNet 在前文中,我们提到,通过对 CNN 网络架构进行可视化研究,我们发现网络层次增…

生成 RSS2.0 文档可能犯错误的一些地方

手下有个人在创建一个RSS2.0文档时,对RSS2.0的一些项的规范不是很了解,把数据放错了地方,我下面就整理一些他犯错误的地方。避免其他人也犯这个错误。完整的RSS2.0规范可以看以下链接地址:http://tonyqus.cnblogs.com/archive/200…

2.1 目标检测简介

目录2.1 目标检测简介[^1]2.1.1 传统的目标检测方法2.1.2 深度学习时代的目标检测2.1 目标检测简介1 目标检测是另一项非常重要的计算机视觉任务,图像分类的目的是辨别图片中所包含的主体对象是什么,而目标检测的目标是检测图像中某对象的位置所在。简单…

从HTTP状态 301,302,200 来看页面跳转

301和302 Http状态有啥区别?301,302 都是HTTP状态的编码,都代表着某个URL发生了转移,不同之处在于: 301 redirect: 301 代表永久性转移(Permanently Moved), 302 redirect: 302 代表暂时性转移(Temporarily…

3.1 EGBIS

目录3.1 EGBIS3.1.1 算法基础概念3.1.2 EGBIS 算法3.1.3 算法应用参考资料3.1 EGBIS 在本章内容中,我们将介绍基于图的高效图像分割(Efficient Graph-Based Image Segmentation, EGBIS)算法,该算法是基于图的贪婪聚合算法&#x…

推荐阅读《Applications = Code + Markup》

最近在通过一边动手做一个智能客户端的WPF应用,一边在学习WPF技术。 WPF技术跟之前的Windows Form应用两者给我的感觉是:这两个技术是一个非常大的跨越。很多Windows Form的心得,想法,思想在WPF中都不再有用了。 我最近几年学习新…

2.2 Selective Search

目录2.2 Selective Search2.2.1 算法设计原则2.2.2 层次聚合2.2.3 多元化采样策略参考资料2.2 Selective Search 在目标检测任务中,我们不仅需要判断出图像中包含的对象类别,还需要检测出目标所在位置,理论上图片任何位置都可能存在任意尺度…