S7-ENet 论文解读

ENet

ENet(efficient)更加高效的分割网络,基于ResNet网络生成的。

1+2、介绍

语义分割对于理解图像的内容和寻找目标对象具有重要意义。

(1)SegNet,编码器是普通的CNN,用于对输入进行分类;解码器用于对编码器的输出进行上采样(upsample)。

架构庞大,参数较多,导致推理速度较慢。

(2)FCN

(3)其他现有的体系结构使用更简单的分类器,然后将它们与条件随机场(CRF)级联作为后处理步骤。这些技术使用了繁琐的后处理步骤,并且常常不能对一个帧中占用较少像素的类进行标记。

(4)CNN+RNNs,准确率提高,但是推理速度降低。

注:RNN作为后处理步骤使用,可以与任何其他技术结合使用

3、网络结构

在这里插入图片描述在这里插入图片描述

上图(b)是上表中的bottleneck模块,包含三个卷积层:一个 1 x 1 1x1 1x1的降维卷积,一个主卷积层,一个 1 x 1 1x1 1x1扩张卷积。批处理化和PReLU放在中间。

如果bottleneck模块是编码器(向下采样),则向主分支添加最大池层。同时,第一个1×1投影被替换为一个 stride = 2 的2×2维卷积。我们将激活设置为零,以匹配feature map的数量。conv要么是3 x 3的常规,扩张或全卷积(也称为反褶积或略微向卷积)。有时我们换成不对称卷积即一系列5×1和1×5卷积。

对于正则化器,我们使用空间dropout,在bottleneck2.0之前p = 0.01,在bottleneck2.0之后p = 0.1。初始阶段包含单个块,如图(a)所示。阶段1由5个bottleneck块组成,而阶段2和3具有相同的结构,但阶段3没有在开始时对输入进行下采样(我们省略了第0个bottleneck,即3.0)。前面三个阶段是编码器。阶段4和阶段5属于解码器。

为了减少内核调用和整体内存操作的数量,我们没有在任何投影中使用偏置项,因为cuDNN使用独立的内核进行卷积和偏置相加。这个选择对准确性没有任何影响。在每一个卷积层和后续的非线性之间,我们使用批处理归一化。在解码器中,max pooling替换为max unpooling,填充(padding)替换为无偏差的空间卷积。我们没有在上一个upsampling模块中使用pooling索引,因为初始块操作在输入帧的3个通道上,而最终输出有C feature map (object classes的数量)。此外,出于性能的考虑,仅将一个全卷积作为网络的最后一个模块,仅这个模块就占用了解码器处理时间的很大一部分。

4、选择

分析影响实验结果的几个因素。

(1)特征映射分辨率

语义分割过程中的下采样图像存在两个主要缺陷。
首先,降低feature map的分辨率意味着像精确的边缘形状这样的空间信息的丢失。
其次,全像素分割要求输出具有与输入相同的分辨率。这意味着强向下采样将需要同样强的上采样,这将增加模型大小和计算成本。

第一个问题在FCN[12]中通过添加编码器生成的feature map来解决,在SegNet[10]中通过保存max pooling layer中选择元素的索引来解决,并使用它们在解码器中生成稀疏上采样映射。我们采用SegNet方法,因为它允许减少内存需求。尽管如此,我们仍然发现强下采样会损害准确性,并试图尽可能地限制它。然而,下采样有一个很大的优势。对下采样图像进行操作的过滤器具有更大的接受域,允许它们收集更多的上下文。当试图区分类(例如,道路场景中的骑手和行人)时,这一点尤其重要。网络仅仅了解人们的外表是不够的,他们所处的环境也同样重要。最后,我们发现为了达到这个目的,最好使用扩张卷积

(2)前期下采样(初始块)

实现良好性能和实时操作的一个关键直觉是认识到处理大输入帧非常昂贵。这听起来很明显,但是许多流行的体系结构不太关注网络早期阶段的优化,这些阶段通常是目前为止最昂贵的。

ENet的前两个块极大地减小了输入大小,并且只使用了一小部分feature map。其背后的思想是,视觉信息在空间上是高度冗余的,因此可以被压缩成更有效的表示形式。此外,我们的直觉是,最初的网络层不应该直接有助于分类。相反,它们应该为网络的后续部分提取并预处理输入。这一观点在我们的实验中很有效;将feature maps的数量从16张增加到32张并不能提高Cityscapes数据集的准确性。

(3)解码器大小

SegNet是一个非常对称的架构,因为编码器是编码器的精确镜像。相反,我们的架构由一个大型编码器和一个小型解码器组成。这是由于编码器应该能够以类似于原始分类体系结构的方式工作的想法所激发的,即操作更小的分辨率数据,并提供信息处理和过滤。相反,解码器的作用是对编码器的输出进行上采样,只对细节进行微调

(4)非线性操作

最近的一篇论文https://arxiv.org/abs/1603.05027报告说,在卷积之前使用ReLU和批处理规范化层是有益的。作者试图将这些想法应用到ENet上,但这对准确性有不利影响。相反,发现移除网络初始层中的大部分relu可以改善结果。之后用PReLUs替换了网络中的所有ReLUs,该PReLUs为每个特征映射使用一个额外的参数,目的是学习非线性的负极性。在身份传递函数更可取的层中,PReLU权重的值将接近1,反之,如果ReLU更可取,则在0附近。
在这里插入图片描述
实验结果如图3所示。初始层的权重表现出很大的差异,并且稍微偏向于正值,而在编码器的后面部分,它们会适应一个重复的模式。主分支中的所有层的行为几乎完全像普通的relu,而瓶颈模块中的权重是负的,即函数反转并向下缩放负值。假设身份在我们的架构中没有很好地工作,因为它的深度有限。之所以学习这些有损函数,是因为原始的ResNets是数百层深的网络,而我们的网络只使用几个层,它需要快速过滤掉信息。值得注意的是,解码器的权值变得更积极,学习函数更接近身份。这证实了解码器只用于微调上采样输出。

(5)保存信息的维度变化

如前所述,有必要尽早对输入进行降采样,但是大规模的降维也会阻碍信息流。有人认为VGG架构使用的一种方法,即先执行池运算,再执行卷积运算,扩大维度,尽管成本相对较低,但会带来一个问题(降低计算效率,速度变慢)。另一方面,卷积后的池化,增加了特征映射的深度,在计算上是昂贵的。https://arxiv.org/abs/1512.00567提供了一个很好的方法来解决这个问题。选择与stride 2的卷积并行执行pooling运算,并将得到的feature maps 串联起来(就是图2a)。效率提高十倍。

此外,在原来的ResNet体系结构中发现了一个问题。下采样时,第一个1×1投影的卷积分支在这两个维度执行stride=2,这有效地丢弃75%的输入。在允许考虑完整的输入下,增加滤波器大小为2×2,从而提高了信息流动和准确性。当然,这些会导致计算昂贵,但是相比较来说,开销是不显明的。

(6)因子分解滤波器

卷积权重存在大量冗余,并且每个n x n卷积可以分解成一个n x 1滤波和一个1 x n滤波,称为非对称卷积。本文采用n = 5的非对称卷积,它的操作相当于一个3 x 3的卷积。这允许增加所学到的各种各样的功能块,增加接受域。

更重要的是,在瓶颈模块中使用的一系列操作(投影、卷积、投影)可以被视为将一个大卷积层分解为一系列更小和更简单的操作,即其低阶近似。这样的因子分解可以极大地减少参数的数量,从而减少冗余。此外,它可以让它们的功能更丰富,这要归功于在层之间插入的非线性操作。

(7)扩张卷积

如上所述,网络拥有一个广泛的接受域是非常重要的,因此它可以通过考虑更广泛的上下文来执行分类。我们希望避免对feature map 过度下采样,并决定使用扩展卷积来改进我们的模型。它们取代了在对最小分辨率进行操作的阶段内的几个瓶颈模块内的主要的卷积层。这些方法在没有额外成本的情况下,将城市景观的 IoU 提高了约4个百分点,大大提高了准确性。当我们将它们与其他瓶颈模块(常规模块和非对称模块)交叉使用时,而不是按顺序排列,我们获得了最佳的准确性。

(8)正则化

大多数像素分割数据集相对较小(约103张图像),因此神经网络等表达模型很快就开始过度拟合。在最初的实验中,使用L2减重,但收效甚微。然后,在https://arxiv.org/abs/1603.09382的启发下,尝试了随机深度,提高了精度。然而,很明显,删除整个分支(即将其输出设置为0)实际上是应用空间dropout的一种特殊情况,在这种情况下,不是选择一个随机子集,而是忽略所有通道,或者不忽略任何通道。我们在卷积分支的末端放置了空间dropout,就是在加法之前,结果证明它比随机深度要有效得多。

5、实验

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小吕同学吖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值