ENet:一种实时语义分割的深度神经网络体系结构(解读)(原论文)


分割任务深度神经网络缺点

  • 计算量大,具有需要大量浮点运算
  • 运行时间长,具有阻碍其可用性的运行时间较长的缺点

网络体系结构

图中,downsampling是下采样;dilated是空洞卷积;asymmetric是非对称卷积;upsampling是上采样。

文中没有在任何投影中使用偏置,以减少内核调用和整体内存操作的数量,因为cuDNN使用单独的内核进行卷积和添加偏置。 这种选择对准确性没有任何影响。在解码器中,max pooling被替换为max unpooling,并且padding被空间卷积替换而没有偏差。我们没有在最后一个上采样模块使用池化索引,因为初始块在输入帧的3个通道上操作,而最终输出具有C个特征映射(对象类的数量)。 出于性能原因,文中仅将完全卷积作为网络的最后一个模块,但依然占用解码器处理时间的相当大一部分。

从网络结构中可以看出:

初始阶段包含单个块,如下图所示。ENet初始块中,MaxPooling使用非重叠的2×2窗口执行,并且卷积具有13个滤波器,在连接之后总计最多16个特征映射。原图3通道,池化后3通道+卷积13个卷积核=16个特征映射

阶段1由5个bottleneck块组成,而阶段2和阶段3具有相同的结构,除了阶段3在开始时不对输入进行下采样(省略了第0个bottleneck)。 这3个阶段是编码器。 阶段4和5属于解码器。

网络结构中的 bottleneck快 如下图所示,其中:

  • 非下采样阶段,使用一个1×1的卷积核进行维度降低;此外,在下采样阶段中,第一个1×1投影被替换为具有步幅2的2×2卷积,我们将激活零填充,以匹配特征映射的数量;
  • 主卷积conv是具有3×3滤波器的正则卷积,空洞卷积或完全卷积(也称为反卷积),或者是分解为两个不对称滤波器的5×5(1×5和5×1)卷积;
  • 使用一个1×1的卷积核进行维度扩充;
  • 在所有卷积之间放置正则化器使用Spatial Dropout (在bottleneck2.0之前p = 0.01,之后p = 0.1)PReLU激活;
  • 如果该快用于下采样,则将最大池化层 MaxPooling 添加到主分支;
  • 将两个分支进行元素级相加进行合并。


为啥这样设计网络,作者都考虑了什么?

特征图选择

在语义分割期间下采样图像有两个主要缺点:

  • 降低特征图分辨率意味着丢失空间信息,如精确的边缘形状。已经在FCN中通过添加编码器产生的特征图来解决,并且在SegNet 中通过保存在最大池化层中选择的元素的索引,并使用它们在解码器中产生稀疏的上采样映射来解决。
  • 全像素分割要求输出具有与输入相同的分辨率。这意味着强大的下采样将需要同样强大的上采样,这会增加模型大小和计算成本。

ENet遵循SegNet方法,因为它允许减少内存需求。尽管如此,我们发现强大的下采样会损害准确性,并试图尽可能地限制它。
然而,下采样有一个很大的优势。在下采样图像上运行的滤波器具有更大的感受野,这允许它们收集更多上下文信息。当试图区分诸如道路场景中的骑手和行人之类的类时,这尤其重要。网络了解人们的外表是不够的,它们出现的背景同样重要。最后,我们发现为此目的最好使用空洞卷积

下采样

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

解码器

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

非线性运算

最近的一篇论文报道在卷积之前使用ReLU和批量标准化层是有益的。我们尝试将这些想法应用于ENet,但这对准确性产生了不利影响。相反,我们发现删除网络初始层中的大多数ReLU可以改善结果。这是一个非常令人惊讶的发现,所以我们决定调查它的原因。
我们用PReLU替换了网络中的所有ReLU,每个特征映射使用一个附加参数,目的是学习非线性的负斜率。我们期望优选传递函数的层中,PReLU权重将具有接近1的值,并且相反地,如果ReLU是优选的,则值约为0。该实验的结果可以在图中看到。


论文分析了ReLU没有起作用的原因是网络架构深度,在类似ResNet的模型上有上百层,而ENet层数很少,较少的层需要快速过滤信息,故最终使用PReLUs。值得注意的是,解码器权重变得更加活跃并且学习到更接近真实值的特征。这证实了我们的直觉,即解码器仅用于微调上采样输出

信息保留,维度改变

在原始ResNet架构中发现了一个问题。 下采样时,卷积分支的第一个1×1投影在两个维度上以2的步幅执行,这有效地丢弃了75%的输入。 将滤波器大小增加到2×2可以考虑全部输入,从而改善信息流和精度。 当然,它使这些层的计算成本更加昂贵,但是在ENet中这些层的数量很少,开销是不明显的。

分解滤波器

卷积权重具有相当大的冗余度,每个n×n卷积可以分解为两个较小的卷积:一个带有n×1滤波器,另一个滤波器为1×n滤波器,这些卷积被称为非对称卷积

在提出的网络中使用了n = 5的非对称卷积,因此这两个操作的成本类似于单个3×3卷积。这允许增加块学习的各种功能并增加感受野。通过分解大大减少了参数的数量,减少了冗余。Dilated convolutions可以有效的提高感受野。有效的使用Dilated convolutions提高了4%的IoU,使用Dilated convolutions是交叉使用,而非连续使用。

空洞卷积

网络具有广泛的感知领域是非常重要的,因此它可以通过考虑更广泛的背景来执行分类。 我们想避免对特征图进行过度下采样,并决定使用空洞卷积来改进我们的模型。 他们取代了在最小分辨率下运行的阶段中几个bottleneck块内的主要卷积层

正则化

因为数据集本身不大,很快会过拟合。使用L2效果不佳,使用stochastic depth还可以,但琢磨了一下stochastic depth就是Spatial Dropout的特例,故最后将 Spatial Dropout 放置在卷积分支的末尾,就在加法之前,使得网络具有较好的效果。


实验结果

(1)速度快

(2)内存需求

(3)Cityscapes数据集

(4)CamVid数据集

(5)SUN RGB-D数据集

ENet: A Deep Neural Network Architecture for Real-Time Semantic Segmentation相关推荐

  1. 【那些年我们一起看过的论文】之《ENet: A Deep Neural Network Architecture for Real-Time Semantic Segmentation》

    /* 天下武功,唯快不破.要想在移动终端或者嵌入式系统上应用,小巧高速是很重要的.ENet在追求高效率的同时兼顾了精度,站在巨人的肩膀上,综合了很多特色的网络结构,并在输入端首先加以压缩达到加速的目的 ...

  2. 《ENet: A Deep Neural Network Architecture for Real-Time Semantic Segmentation》论文笔记

    1. 概述 导读:一般的分割网络需要大量的浮点运算以及较长的运算时间,这个妨碍了其在实时要求较高场合的使用,这篇文章提出了基于编解码器结构的实时分割网络ENT(Efficient Neural Net ...

  3. 文献记录(part33)-Hierarchical deep neural network for mental stress state detection using IoT ...

    学习笔记,仅供参考,有错必纠 仅记录实验 文章目录 Hierarchical deep neural network for mental stress state detection using I ...

  4. 5.深度学习练习:Deep Neural Network for Image Classification: Application

    本文节选自吴恩达老师<深度学习专项课程>编程作业,在此表示感谢. 课程链接:https://www.deeplearning.ai/deep-learning-specialization ...

  5. 论文阅读 [TPAMI-2022] ManifoldNet: A Deep Neural Network for Manifold-Valued Data With Applications

    论文阅读 [TPAMI-2022] ManifoldNet: A Deep Neural Network for Manifold-Valued Data With Applications 论文搜索 ...

  6. 《3D Point Cloud Registration for Localization using a Deep Neural Network Auto-Encoder》读书笔记

    3D Point Cloud Registration for Localization using a Deep Neural Network Auto-Encoder 题目:基于深度神经网络自编码 ...

  7. 2016 ECCV-Gated Siamese Convolutional Neural Network Architecture for Human Re-ID

    论文地址 第一篇论文笔记,希望大家能多提些意见来帮助我提高论文笔记模型的性能.相关方向的童鞋可以加qq:396543018一起交流~ Motivation 现在的Siamese CNN对每个照片仅在f ...

  8. 【论文翻译】HEMET: A Homomorphic-Encryption-Friendly Privacy-Preserving Mobile Neural Network Architecture

    [原文链接]HEMET: A Homomorphic-Encryption-Friendly Privacy-Preserving Mobile Neural Network Architecture ...

  9. 图像分割(七) —— Transformer and CNN Hybrid Deep Neural Network

    Transformer and CNN Hybrid Deep Neural Network for Semantic Segmentation of Very-High-Resolution Rem ...

最新文章

  1. 从今天开始,自己做SEO。
  2. 不要瞧不起技术,项目中有了技术管理会让项目经理很省心
  3. Android SystemTrace使用攻略
  4. nvidia docker容器不支持中文的解决办法_用docker搭建深度学习实验环境
  5. python3 获取当前路径_python3获取当前目录(转)
  6. mysql作业是什么意思_MySQL 作业七
  7. 神奇的for循环,让你的for循环执行100w + 1比100w次快200w倍
  8. JAVA性能优化权威指南 读书笔记(一)
  9. matplotlib绘制圆饼图
  10. 唐诗三百首的爬取以及出现最多字数的统计
  11. 网页设计常用色彩搭配表 - 配色表
  12. 一个实用分数类Fraction的Java实现
  13. 捷报频传!同程艺龙IPO在即,7月份微信小程序排名第二
  14. cocos creator 学习随笔 day03 节点和组件属性
  15. 新一代区块链手机“甲骨文”即将上市
  16. C++ 之基本结构语法
  17. MATLAB写UCB算法,科学网—【RL系列】Multi-Armed Bandit问题笔记——UCB策略实现 - 管金昱的博文...
  18. 移动硬盘坏了数据可以恢复吗?其实一招就可以!
  19. 辽宁科技大学计算机应用技术研究生,2020年辽宁科技大学计算机应用技术考研经验分享...
  20. 零基础的我刷力扣一周后,总结了点东西

热门文章

  1. 三维GIS空间模型综述
  2. Intel HD Graphics 610 615 620 630 32位 WIN7 显卡驱动安装记
  3. Spark GraphX图计算入门
  4. Z80 CPU中的主要指令
  5. 微信小程序搜索框组件之SearchBar
  6. IMD/IMT/IME/OMD/OMF等工艺了解
  7. python json格式转换_Python实现把json格式转换成文本或sql文件
  8. 保存的html打不开怎么办,win7系统收藏夹里储存的网页都打不开的解决方法
  9. php 计算当前网速,PHP实现限制网速下载
  10. 程序员的算法趣题pdf