【论文阅读笔记】ENet: A Deep Neural Network Architecture for Real-Time Semantic Segmentation

ENet: A Deep Neural Network Architecture for Real-Time Semantic Segmentation

本文介绍了目前最快的图像分割网络ENet,使用大量的trick

摘要

 在边缘设备中,实时计算能力很重要,针对该任务的深度神经网络的缺点是需要大量的浮点计算,并且运行时间长,阻碍了其可用性

  • 本文提出ENet高效神经网络的新型深度神经网络结构,专门针对要求低延迟操作的任务而创建。
  • ENet的速度提高了18倍,所需要的Flop减少了75倍,参数减少了79倍,并且提供了与现有模型相似或者更高的精度。

引言

  • 原来的对图像进行空间分类和精细分割架构:SegNet或者完全卷积网络 这些都是基于VGG16,但是这些架构是为了多类分类而设计的超大型模型,那么这些模型就有大量的参数和长推理时间的网络。
  • ENET 快速推理和高精度而优化的新神经网络架构

网络结构

ENet中bottleneck module

在这里插入图片描述

左边的是辅助 右边的是主要

五个stage

初始化模块

在这里插入图片描述

左边使用十三个卷积核进行卷积操作,右边是MaxPooling,最后得到三个通道,将两边的结果concat一起,做通道合并,这样可以减少存储空间

stage 1

属于encoder阶段,包括五个BottleNeck,第一个BottleNeck对输入做了下采样,后面有四个重复的bottleneck

stage 2-3

属于encoder阶段,stage2的bottle2.0做了下采样,后面加上空洞卷积或者分解卷积,stage3没有下采样,其他都是一样的

stage 4-5

属于decoder阶段。比较简单 一个上采样配置两个普通的bottleneck

  • 模型架构在任何投影上都没有使用bias,这样可以减少内核调用和存储操作
  • 每个卷积操作中使用Batch Norm
  • encoder阶段是使用padding配合max pooling做下采样
  • decoder时使用max unpooling配合空洞卷积完成上采样

介绍encoder

  • 下采样的bottleNeck

    • 降采样 图像大小变为128 x 128
    • 然后是卷积操作 conv是普通的卷积操作 asymmetric表示分解卷积,Dilated是空洞卷积
    • 每一个bottleneck都会先降低维度 经过卷积操作之后 升维
    • 每个卷积层之后都跟上batch norm 和PReLU操作
  • 辅助线包括最大池化和padding操作 最大池化负责提取上下文信息

    扫描二维码关注公众号,回复: 16369459 查看本文章
    • padding负责填充通道,然后达到后续的残差融合,融合之后进行PReLU操作
  • 非下采样的bottleNeck

    • 主线包括三个卷积层
    • 首先是1x1 降维度
    • 然后是三种卷积
    • 最后是生维度
    • batch norm PReLU

各种trick

  • 为了较少内核调用和存储操作,作者的网络架构没有使用bias,只有weights。

  • Feature map resolution

    • 对图像进行下采样会丢失特征信息
    • 使用空洞卷积,扩大感受野,可以收集更多的信息
  • Early downsampling

    • 处理尺寸比较大的图像会耗费大量的计算资源
    • ENet的初始化模型会大大减少输入的大小,因为视觉信息在空间上是高度冗余的,可以压缩成为更有效地表示方式
  • Decoder size

    • 作者的Encoder和Decoder不是镜像对称的,网络的大部分实现Encoder,较少部分实现Decoder。Encoder主要进行信息处理和过滤,而Encoder上采样编码器的输出,并进行细节微调。
  • Nonlinear operations

    • 一般在卷积层之前做ReLU和Batch Norm效果会好点,但是在ENet上使用ReLU却降低了精度。
    • ENet的层数很少,所以使用PReLU
  • Information-preserving dimensionality changes

    • 在初始化阶段,作者使用3 * 3 CNN 和maxpolling做并行操作 然后针对特征图进行contact操作,作者发现加速十倍时间
  • 分解卷积

    • 将n × n 的卷积核拆为n × 1和1 × n (Inception V3提出的)。可以有效的减少参数量,并提高模型感受野。
  • 空洞卷积

  • SpatialDropout

    • 普通的dropout 会随机将这部分元素置为0,而SpatialDropout会随机将这部分区域的所有元素置为0

普通的dropout
在这里插入图片描述

Spatial Dropout:普通的dropout会随机独立地将部分元素置零,而SpatialDropout1D会随机地对某个特定的纬度全部置零

在这里插入图片描述

在这里插入图片描述

关于空洞卷积

  • 卷积核大小为3 x 3 步长stride = 1 r = 2, r称之为膨胀因子。当r=1,表示卷积核各元素之间没有空隙,也就是相邻两个元素之间位置相差1,就是正常的卷积
  • 这里的r = 2表示卷积核各个元素之间有一个空隙,相邻两个元素之间位置相差1

在这里插入图片描述

为什么使用空洞卷积

扩大感受野,感受野指的是特征图的一个像素对应原图多少尺寸的像素

在这里插入图片描述

  • 使用空洞卷积一个关键原因就是可以增大感受野,这样在检测、分割任务中就能对大尺寸物体表现出较好的效果。
  • 空洞卷积的缺陷主要体现在存在网格效应

猜你喜欢

转载自blog.csdn.net/qq_44653420/article/details/132515540