轻量级网络:ESPNet系列

  • 前言
  • ESPNetV1
  • ESPNetV2

前言

虽然这个主要是语义分割的轻量级网络模型,但是模块的设计还是很有参考意义的。

ESPNetV1

论文:https://arxiv.org/abs/1803.06815v2
代码:https://github.com/sacmehta/ESPNet

创新点

这篇文章主要创新点也就是ESP模块的设计,将标准的卷积分解为2个部分

  • point-wise convolutions 逐点卷积
  • spatial pyramid of dilated convolutions 空间金字塔型膨胀卷积

主要的模块设计的策略为 reduce-split-transform-merge,如下图所示轻量级网络:ESPNet系列_第1张图片
对于一个的标准卷积核,ESP模块将其分解为以下三步:

  • Step-1: Reduce(Point-wise convolutions):d个1x1xM的卷积核,将M维的输入feature map降至d维;
  • Step-2: Split & Transform(Spatial pyramid of dilated convolutions):使用K个不同膨胀率的卷积核对上一步输出的feature map并行进行卷积,将会得到K个相同大小的feature map;
  • Step-3*: HFF(Hierarchical feature fusion):分层特征融合,即将上一步得到的个相同大小的feature map按照一定规则进行拼接,得到最终的输出feature。

因为使用了大感受野的膨胀卷积,导致了gridding artifacts现象,如下图所示。本文提出了使用HFF方法来解决该问题,具体做法就是从最小的膨胀卷积核输出的那张feature map开始,逐级叠加。这样的做法并没有引入任何新的参数,同时计算量上也没有增加太多,但却有效地改善了网格效应。

与其他CNN模块的关系

轻量级网络:ESPNet系列_第2张图片

  • MobileNet Module

    • 如图所示,MobileNet模块 = Depth-wise Conv + Point-wise Conv;
    • 与ESP模块相比,参数量少,内存占用大,感受野小;
    • 对ESP模块而言,当K=N时,与MobileNet模块很相似,只是两步的顺序颠倒一下;
    • 与MobileNet模块相比,ESP模块的优势主要是感受野大。
  • ShuffleNet Module

    • 基于reduce-transform-expand策略设计;
    • ResNet中bottleneck模块的改进:
      • 1x1 conv => 1x1 grouped conv;
      • 3x3 conv => 3x3 depth-wise conv;
    • 与ESP模块相比,虽然ShuffleNet模块的参数量少,但会占用更大的内存同时无法扩大感受野 。
  • Inception Module

    • 基于split-reduce-transform-merge策略设计;
    • 每个支路上的往往具有特定的通道数、大小等;
    • ESP模块在参数量、内存占用、感受野三个方面都优于
      Inception Module;
  • ResNext Module

    • 是ResNet中bottleneck模块的并行版本;
    • 基于split-reduce-transform-expand-merge策略设计;
    • ESP模块借鉴了其分支求和的思想;
    • 但ESP模块在参数量、内存占用、感受野三个方面都优于ResNext Module。
  • ASP Module

    • 基于split-transform-merge策略设计;
    • 通过在不同的分支上使用不同大小的膨胀卷积来捕捉不同大小的感受野;
    • 由于其感受野较大,在分割任务上表现出色;
    • 缺点是内存占用较大,且参数量较多。

整体网络结构

轻量级网络:ESPNet系列_第3张图片
文中给出了4种网络结构,其中前3种网络的输出mask为输入尺寸的1/8。为了适配不同的应用场景,引入了超参数,其实就是ESP模块的重复堆叠个数。因为在网络前两个stage(0,1),feature map较大,占用内存和计算开销较多,所以没有堆叠,主要都是在后面几级堆ESP模块。

四种网络结构(从简到繁)简单解释如下:

  • ESPNet-A:基本网络。学习不同级别的特征,最后通过1x1 conv得到mask;
  • ESPNet-B:在A的基础上添加了跨步连接,改善了信息流;
  • ESPNet-C:在B的基础上继续添加跨步连接,这次连接的是下采样后的输入图像;
  • ESPNet:最终形态。在ESPNet-C的基础上,添加了一个轻量级的解码器,从而得到与输入图像相同分辨率的mask。

ESPNetV2

论文:https://arxiv.org/pdf/1811.11431.pdf
代码:https://github.com/sacmehta/ESPNetv2

基于ESPNetV1的改进

轻量级网络:ESPNet系列_第4张图片
为了计算更高效:

  • 将原来ESPNet的point-wise convolutions 替换为group point-wise convolutions;
  • 将原来ESPNet的dilated convolutions 替换为depth-wise dilated convolution;
  • HFF加在depth-wise dilated separable convolutions 和 point-wise (or 1 × 1) 卷积之间,去除gridding artifacts ;
  • 使用©中一个 group point-wise convolution 替换(b)K 个point-wise convolutions ;

轻量级网络:ESPNet系列_第5张图片
为了网络表示更加有效:

  • 将©中depth-wise dilated convolutions 加入下采样操作;
  • 加入平均池化(average pooling ),将输入图片信息加入EESP中;
  • 使用级联(concatenation) 取代对应元素加法操作(element-wise addition operation );

网络结构

最后的分类网络结构如下:
轻量级网络:ESPNet系列_第6张图片

你可能感兴趣的:(笔记)