深度学习
  • 前言
  • 第一章:经典网络
    • ImageNet Classification with Deep Convolutional Neural Network
    • Very Deep Convolutional Networks for Large-Scale Image Recognition
    • Going Deeper with Convolutions
    • Deep Residual Learning for Image Recognition
    • PolyNet: A Pursuit of Structural Diversity in Very Deep Networks
    • Squeeze-and-Excitation Networks
    • Densely Connected Convolutional Networks
    • SQUEEZENET: ALEXNET-LEVEL ACCURACY WITH 50X FEWER PARAMETERS AND <0.5MB MODEL SIZE
    • MobileNet v1 and MobileNet v2
    • Xception: Deep Learning with Depthwise Separable Convolutions
    • Aggregated Residual Transformations for Deep Neural Networks
    • ShuffleNet v1 and ShuffleNet v2
    • CondenseNet: An Efficient DenseNet using Learned Group Convolution
    • Neural Architecture Search with Reinforecement Learning
    • Learning Transferable Architectures for Scalable Image Recognition
    • Progressive Neural Architecture Search
    • Regularized Evolution for Image Classifier Architecture Search
    • 实例解析:12306验证码破解
  • 第二章:自然语言处理
    • Recurrent Neural Network based Language Model
    • Learning Phrase Representations using RNN Encoder-Decoder for Statistical Machine Translation
    • Neural Machine Translation by Jointly Learning to Align and Translate
    • Hierarchical Attention Networks for Document Classification
    • Connectionist Temporal Classification : Labelling Unsegmented Sequence Data with Recurrent Neural Ne
    • About Long Short Term Memory
    • Attention Is All you Need
    • BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding
  • 第三章:语音识别
    • Speech Recognition with Deep Recurrent Neural Network
  • 第四章:物体检测
    • Rich feature hierarchies for accurate object detection and semantic segmentation
    • Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition
    • Fast R-CNN
    • Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks
    • R-FCN: Object Detection via Region-based Fully Convolutuional Networks
    • Mask R-CNN
    • You Only Look Once: Unified, Real-Time Object Detection
    • SSD: Single Shot MultiBox Detector
    • YOLO9000: Better, Faster, Stronger
    • Focal Loss for Dense Object Detection
    • YOLOv3: An Incremental Improvement
    • Learning to Segment Every Thing
    • SNIPER: Efficient Multi-Scale Training
  • 第五章:光学字符识别
    • 场景文字检测
      • DeepText: A Unified Framework for Text Proposal Generation and Text Detection in Natural Images
      • Detecting Text in Natural Image with Connectionist Text Proposal Network
      • Scene Text Detection via Holistic, Multi-Channel Prediction
      • Arbitrary-Oriented Scene Text Detection via Rotation Proposals
      • PixelLink: Detecting Scene Text via Instance Segmentation
    • 文字识别
      • Spatial Transform Networks
      • Robust Scene Text Recognition with Automatic Rectification
      • Bidirectional Scene Text Recognition with a Single Decoder
      • multi-task learning for text recognition with joint CTC-attention
    • 端到端文字检测与识别
      • Reading Text in the Wild with Convolutional Neural Networks
      • Deep TextSpotter: An End-to-End Trainable Scene Text Localization and Recognition Framework
    • 实例解析:字符验证码破解
    • 二维信息识别
      • 基于Seq2Seq的公式识别引擎
      • Show and Tell: A Neural Image Caption Generator
      • Show, Attend and Tell: Neural Image Caption Generation with Visual Attention
  • 第六章:语义分割
    • U-Net: Convolutional Networks for Biomedical Image Segmentation
  • 第七章:人脸识别
    • 人脸检测
      • DenseBox: Unifying Landmark Localization with End to End Object Detection
      • UnitBox: An Advanced Object Detection Network
  • 第八章:网络优化
    • Batch Normalization
    • Layer Normalization
    • Weight Normalization
    • Instance Normalization
    • Group Normalization
    • Switchable Normalization
  • 第九章:生成对抗网络
    • Generative Adversarial Nets
  • 其它应用
    • Holistically-Nested Edge Detection
    • Image Style Transfer Using Convolutional Nerual Networks
    • Background Matting: The World is Your Green Screen
  • Tags
  • References
由 GitBook 提供支持
在本页
  • 前言
  • 1. SENet详解
  • 1.1. SE Block
  • 1.2. Squeeze
  • 1.3. Excitation
  • 1.4. SE-Inception 和 SE-ResNet
  • 2. SENet的复杂性分析
  • 3. 总结

这有帮助吗?

  1. 第一章:经典网络

Squeeze-and-Excitation Networks

上一页PolyNet: A Pursuit of Structural Diversity in Very Deep Networks下一页Densely Connected Convolutional Networks

最后更新于4年前

这有帮助吗?

前言

SENet的提出动机非常简单,传统的方法是将网络的Feature Map等权重的传到下一层,SENet的核心思想在于建模通道之间的相互依赖关系,通过网络的全局损失函数自适应的重新矫正通道之间的特征相应强度。

SENet由一些列SE block组成,一个SE block的过程分为Squeeze(压缩)和Excitation(激发)两个步骤。其中Squeeze通过在Feature Map层上执行Global Average Pooling得到当前Feature Map的全局压缩特征向量,Excitation通过两层全连接得到Feature Map中每个通道的权值,并将加权后的Feature Map作为下一层网络的输入。从上面的分析中我们可以看出SE block只依赖与当前的一组Feature Map,因此可以非常容易的嵌入到几乎现在所有的卷积网络中。论文中给出了在当时state-of-the-art的和插入SE block后的实验结果,效果提升显著。

SENet虽然引入了更多的操作,但是其带来的性能下降尚在可以接受的范围之内,从GFLOPs,参数数量以及运行时间的实验结果上来看,SENet的损失并不是非常显著。

1. SENet详解

1.1. SE Block

一个SE Block的结构如图1所示

图1:SENet网络结构

网络的左半部分是一个传统的卷积变换,忽略掉这一部分并不会影响我们的SENet的理解。我们直接看一下后半部分,其中UUU是一个W×H×CW\times H\times CW×H×C的Feature Map,(W,H)(W,H)(W,H)是图像的尺寸,CCC是图像的通道数。

经过Fsq(⋅)F_{sq}(\cdot)Fsq​(⋅)(Squeeze操作)后,图像变成了一个1×1×C1\times1\times C1×1×C的特征向量,特征向量的值由UUU确定。经过Fex(⋅,W)F_{ex}(\cdot,\mathbf{W})Fex​(⋅,W)后,特征向量的维度没有变,但是向量值变成了新的值。这些值会通过和UUU的Fscale(⋅,⋅)F_{scale}(\cdot,\cdot)Fscale​(⋅,⋅)得到加权后的X~\tilde{X}X~。X~\tilde{X}X~和UUU的维度是相同的。

1.2. Squeeze

Squeeze部分的作用是获得Feature Map U\mathbf{U}U的每个通道的全局信息嵌入(特征向量)。在SE block中,这一步通过VGG中引入的Global Average Pooling(GAP)实现的。也就是通过求每个通道c,c∈{1,C}c, c\in\{1,C\}c,c∈{1,C}的Feature Map的平均值:

zc=Fsq(uc)=1W×H∑i=1W∑j=1Huc(i,j)z_c = \mathbf{F}_{sq}(\mathbf{u}_c) = \frac{1}{W\times H} \sum_{i=1}^W\sum_{j=1}^H u_c(i,j)zc​=Fsq​(uc​)=W×H1​i=1∑W​j=1∑H​uc​(i,j)

1.3. Excitation

  1. 要足够灵活,这样能保证学习到的权值比较具有价值;

  2. 要足够简单,这样不至于添加SE blocks之后网络的训练速度大幅降低;

  3. 通道之间的关系是non-exclusive的,也就是说学习到的特征能过激励重要的特征,抑制不重要的特征。

以上就是SE blocks算法的全部内容,SE blocks可以从两个角度理解:

  1. SE blocks学习了每个Feature Map的动态先验;

  2. SE blocks可以看做在Feature Map方向的Attention,因为注意力机制的本质也是学习一组权值。

1.4. SE-Inception 和 SE-ResNet

SE blocks的特性使其能够非常容易的和目前主流的卷及结构结合,例如论文中给出的Inception结构和残差网络结构,如图2。结合方式也非常简单,只需要在Inception blocks或者Residual blocks之后直接接上SE blocks即可。

2. SENet的复杂性分析

论文中主要对比了ResNet-50以及在其中的每一层之后添加了SE blocks之后的在运行性能的各方面的指标:

从计算性能的方向分析:ResNet-50需要约3.86GFLOPS,而SE-ResNet-50仅仅多了0.01个GFLOPS。

从预测速度上来看,运行一个ResNet-50的时间是190ms,SE-ResNet-50的运行时间约209ms,多了10%。

从参数数量上来看,SE-ResNet-50比ResNet-50的2500万个参数多了约250万个,约占10%。而且作者发现ResNet-50的最后几层的SE blocks可以省掉,但是性能影响并不大,这样的网络参数仅多了4%。

3. 总结

SENet的思想非常简单,即通过Feature Map为自身学习一个特征权值,通过单位乘的方式得到一组加权后的新的特征权值。使用的网络结构则是先GAP再接两层全连接的方式得到的权值向量。方法虽然简单,但是非常实用,并在ImageNet-2017上取得了非常优异的比赛成绩。

第2节对复杂性的分析引发了我们队SE blocks的进一步联想:如何在计算量和性能之间进行权衡?

下面是我的几点思考:

  1. 在网络的深度和隐层节点的数目进行权衡,究竟是更深的网络效果更好还是更宽的网络效果更好;

  2. 每一层的SE blocks是否要一定相同,比如作者发现浅层更需要SE blocks,那么我们能否给浅层使用一个计算量更大但是性能更好的SE block,而深层的SE blocks更为简单高效,例如单层全连接等。

通过GAP得到的特征值是全局的(虽然比较粗糙)。另外,zcz_czc​也可以通过其它方法得到,要求只有一个,得到的特征向量具有全局性。

Excitation部分的作用是通过zcz_czc​学习CCC中每个通道的特征权值,要求有两点:

根据上面的要求,SE blocks使用了两层全连接构成的门机制(gate mechanism)。门控单元s\mathbf{s}s(即图1中1×1×C1\times1\times C1×1×C的特征向量)的计算法方式表示为:

s=Fex(z,W)=σ(g(z,W))=σ(g(W2δ(W1z)))\mathbf{s} = \mathbf{F}_{ex}(\mathbf{z}, \mathbf{W}) = \sigma(g(\mathbf{z}, \mathbf{W})) = \sigma(g(\mathbf{W}_2 \delta(\mathbf{W}_1 \mathbf{z})))s=Fex​(z,W)=σ(g(z,W))=σ(g(W2​δ(W1​z)))

其中δ\deltaδ表示ReLU激活函数,σ\sigmaσ表示sigmoid激活函数。W1∈RCr×C\mathbf{W}_1 \in \mathbb{R}^{\frac{C}{r}\times C}W1​∈RrC​×C, W2∈RC×Cr\mathbf{W}_2 \in \mathbb{R}^{C\times\frac{C}{r}}W2​∈RC×rC​分别是两个全连接层的权值矩阵。rrr则是中间层的隐层节点数,论文中指出这个值是16。

得到门控单元s\mathbf{s}s后,最后的输出X~\tilde{X}X~表示为s\mathbf{s}s和U\mathbf{U}U的向量积,即图1中的Fscale(⋅,⋅)\mathbf{F}_{scale}(\cdot,\cdot)Fscale​(⋅,⋅)操作:

x~c=Fscale(uc,sc)=sc⋅uc\tilde{x}_c = \mathbf{F}_{scale}(\mathbf{u}_c,s_c) = s_c \cdot \mathbf{u}_cx~c​=Fscale​(uc​,sc​)=sc​⋅uc​

其中x~c\tilde{x}_cx~c​是X~\tilde{X}X~的一个特征通道的一个Feature Map,scs_csc​是门控单元s\mathbf{s}s(是个向量)中的一个标量值。

图2:SE-Inception和SE-Resnet

SENet的本质是根据Feature Map的值学习每个Feature Map的权值。U\mathbf{U}U往往是一个由几万个节点值组成的三维矩阵,但是我们得到的s\mathbf{s}s 却只有CCC个值,这种H×WH\times WH×W程度的压缩是具有非常大的可操作性的。例如将U\mathbf{U}U展开成(W×H×C)×1(W\times H\times C)\times 1(W×H×C)×1的特征向量,然后再通过全连接得到s\mathbf{s}s,这也是目前主流的Feature Map到FC的连接方式(Flatten()操作)。而且这种方式得到的s\mathbf{s}s往往也是效果优于SE blocks的策略的。但是SENet没这么做,他的原因是SENet是可以添加到网络中的任意一层之后的,而全连接操作往往是整个网络结构的性能瓶颈,尤其是当网络的节点数非常大时。

先通过RoI Pooling得到更小的Feature Map(例如3×33\times 33×3),在展开作为全连接的输入;

Inception
残差网络
图1:SENet网络结构
图2:SE-Inception和SE-Resnet