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

论文地址:https://arxiv.org/pdf/1606.02147.pdf
代码地址:https://github.com/davidtvs/PyTorch-ENet

1. 网络结构

ENet: A Deep Neural Network Architecture for Real-Time Semantic Segmentation_第1张图片
ENet: A Deep Neural Network Architecture for Real-Time Semantic Segmentation_第2张图片

ENet: A Deep Neural Network Architecture for Real-Time Semantic Segmentation_第3张图片
  • 网络使用了正则化, 在bottleneck2.0之前dropout(p=0.01),之后p=0.1.


    ENet: A Deep Neural Network Architecture for Real-Time Semantic Segmentation_第4张图片
  • ENet模型大致分为5个Stage:
      initial:初始化模块,通道合并可以显著减少存储空间,如下图:
    ENet: A Deep Neural Network Architecture for Real-Time Semantic Segmentation_第5张图片

      Stage 1:encoder阶段。包括5个bottleneck,第一个bottleneck做下采样,后面4个重复的bottleneck
      Stage 2-3:encoder阶段。stage2的bottleneck2.0做了下采样,后面有时加空洞卷积,或分解卷积。stage3没有下采样,其他都一样。
      Stage 4~5:属于decoder阶段。比较简单,一个上采样配置两个普通的bottleneck
      模型架构在任何投影上都没有使用bias,这样可以减少内核调用和存储操作。在每个卷积操作中使用Batch Norm。encoder阶段是使用padding配合max pooling做下采样。在decoder时使用max unpooling配合空洞卷积完成上采样

Design choices

Feature map resolution

  • 下采样的缺点
      降低特征图分辨率意味着丢失精确的空间信息边缘形状
      全像素分割要求输出具有与输入相同的分辨率。 这意味着强大的下采样将需要同样强大的上采样,这增加了模型尺寸和计算成本
  • 针对问题1,有两个解决方案:
      FCN的解决办法是将encoder阶段的feature map塞给decoder,增加空间信息。
      SegNet的解决办法是将encoder阶段做downsampling的indices保留到decoder阶段做upsampling使用。
  • 优点
      下采样的好处在于可以获取更大的感受野,获取更多的上下文信息,便于分类

Early downsampling

  ENet前两个块大大减少了输入大小,并且仅使用一小组特征映射。 其背后的想法是,视觉信息在空间上是高度冗余的,因此可以压缩成更有效的表示。 此外,我们的直觉是初始网络层不应直接有助于分类。 相反,它们应该作为良好的特征提取器,并且仅对网络的后续部分进行预处理。 这种见解在我们的实验中运作良好; 将要素图的数量从16增加到32并不能提高Cityscapes数据集的准确性。

Decoder Size

  该结构有一个大的编码网络和一个小的解码网络,编码器操作较小分辨率的数据并提供信息处理和过滤。 解码器的作用是对编码器的输出进行上采样,仅对细节进行微调。

Nonlinear operations

  初始层权重表现出较大的方差,并略微偏向正值,而在编码器的后期部分,它们稳定为重复模式。 主分支中的所有层的行为几乎与常规ReLU一样,而瓶颈模块内的权重为负,即函数反转并按比例缩小负值。我们假设由于其有限的深度,特性在我们的架构中不能很好地工作。 学习这种有损函数的原因可能是原始ResNets是可以深达数百层的网络,而我们的网络只使用几层,它需要快速过滤掉信息。在ENet上使用ReLU却降低了精度,故最终使用PRelu

Information-preserving dimensionality changes

  在Initial Block,将Pooling操作和卷积操作并行,再concat到一起,这将inference阶段时间加速了10倍。同时在做下采样时,原来ResNet的卷积层分支会使用1×1/str=2的卷积,这会丢失大量的输入数据。ENet改为2×2的卷积核,有效的改善了信息的流动和准确率.

Factorizing filters

  因为卷积权重具有相当大的冗余度,所以将n×n的卷积核拆为n×1和1×n(Inception V3提出的)。可以有效的减少参数量,并提高模型感受野。

Dilated convolutions

  Dilated convolutions可以有效的提高感受野。有效的使用Dilated convolutions提高了4%的IoU,使用Dilated convolutions是交叉使用,而非连续使用。

Regularization

  因为数据集本身不大,很快会过拟合。使用L2效果不佳,使用stochastic depth还可以,但Spatial Dropout,效果相对好一点。

Results

Performance Analysis

ENet: A Deep Neural Network Architecture for Real-Time Semantic Segmentation_第6张图片

ENet: A Deep Neural Network Architecture for Real-Time Semantic Segmentation_第7张图片

ENet: A Deep Neural Network Architecture for Real-Time Semantic Segmentation_第8张图片

ENet: A Deep Neural Network Architecture for Real-Time Semantic Segmentation_第9张图片

ENet: A Deep Neural Network Architecture for Real-Time Semantic Segmentation_第10张图片

  
  
  
  
  

你可能感兴趣的:(ENet: A Deep Neural Network Architecture for Real-Time Semantic Segmentation)