实时分割网络-ENet
实时分割网络-ENet
- 一 经典分割算法 & 实时分割算法
- 二 实时分割算法常用思想
- 三 比较参数
- 四 ENet摘要
- 五 ENet引言
- 六 ENet相关工作
- 七 ENet算法架构
- 八 ENet相关细节
Enet: A deep neural network architecture for real-time semantic segmentation
华沙大学&普渡大学
CVPR 2016
一 经典分割算法 & 实时分割算法
实时分割算法的必要性:目前在深度学习领域,算法设计可分为两个派别,一个是学院派,研究强大、复杂的模型网络和实验方法,为了追求更高的性能。另一个是工程派,旨在将算法更稳定、高效的落地在硬件平台上,效率是其追求的目标。复杂的模型固然具有更好的性能,但是高频的存储空间,计算资源消耗是使其难以有效的应用在各硬件平台上的重要因素。
经典分类代表算法:FCN、U-Net、DeepLab系列、RefineNet等
经典网络不考虑分割效率,只关注分割的准确度,因此,对于一些实时的分割任务来说,以上网络的可用性并不高,由于网络的参数较大,对硬件的要求也很高,且会消耗大量的时间
实时分割代表算法:ENet、LinkNet、BiSeNet、DFA等
随着分割任务存在的问题被逐个击破,一些网络开始关注分割模型的效率,力求将其嵌入式设备或实时分割任务中,这些网络在保证分割准确性不会低的前提下,尽可能的减少参数,压缩模型。因此,实时网络对硬件设备的要求不高且省时。
二 实时分割算法常用思想
- 替换主干网络
- ResNet101或ResNet50 替换成 ResNet34或ResNet18
- 减少通道数 避免出现2048或1024等过多的通道数
- 减少卷积层
- 将卷积层替换为组卷积或其他能减少计算量的卷积操作
- 增加前期数据处理
- 减少复杂融合方式
- 避免使用全连接
三 比较参数
- ms:毫秒数
- fps:画面每秒传输帧数,通俗来讲就是指动画或视频的画面数
- FLOPs:每秒执行的浮点运算次数
- Parameters:模型参数
- Model size:模型大小
FLOPs:s小写,是floating point operations的缩写(s代表复数),意指浮点运算数,可以理解为计算量。用来衡量算法或模型的复杂度
FLOPS:s大写,是floating point operations per second的缩写,意指每秒服点运算次数,可以理解为计算速度,是一个衡量硬件性能的指标
GFLOPs :1GFLOPs = 10的9次方FLOPs(10亿次)
四 ENet摘要
- 背景介绍:实时执行像素级语义分割的能力在移动应用程序中至关重要,最近的DCNN网络的缺点在于需要大量浮点运算,运行时间长,阻碍了语义分割的可用性
- 算法组成:提出了ENet,专门针对需要低延迟操作的任务
- 文章亮点:ENet与现存模型相比,速度提升了18倍,FLOPs减少了75倍,参数减少了79倍,并能保证不错的准确度
- 模型评估:在CamVid、Cityscapes和SUM RGBD数据集均取得了不错的成绩
五 ENet引言
- 可穿戴增强现实、家用自动化设备、自动驾驶这些应用都对能够在移动设备上实时运作的低能耗语义分割产生了大量需求
- 像SegNet喝FCN,这些网络虽然能够实现端到端的稠密像素分割,但是他们都是基于庞大的网络结构VGG16设计的,无法在大多数电池供电的移动设备上运作(要求达到10fps以上)
- 本文提出了一个专为快速、高准确率推理设计了神经网络结构,本文工作中,选择不应用任何后处理步骤。

六 ENet相关工作
- 语义分割对于理解图像内容和查找目标物体非常重要,这项技术在诸如辅助驾驶、现实增强等应用领域是最重要的
- 目前主流的神经网络结构都是两部分组成:编码器、解码器,但是这些方法由于网络结构复杂、参数众多、推理过程比较慢
- 其他现存结构使用更简单的分类器,然后用CRF做为后处理,如SegNet论文中提到的,这些方法需要繁重的后处理,且经常对那些在一贞中占据更少像素点个数的类别分类失败,尽管这可以通过结合CNN来实现精度的提升,但是这样会导致速度下降,另外,值得注意的是,RNN是可以作为后处理结合进任何一种方法的,包括本文提出的方法。
七 ENet算法架构
初始化模块为(a):并行执行步长为2的卷积和最大池化,完成对输入图片下采样,可有效减少参数量和计算量
bottleneck模块(b):以残差架构为主,可衍生出五种形态,每个卷积层后均可接BN和PReLu

normal:无maxpooling和padding,conv为3X3
downsampling:有maxpooling和padding,第一个1X1卷积替换为步长为2的2X2卷积
dilated:为3X3卷积设置空洞率
asymmetric:将3X3卷积替换为1X5和5X1的非对称卷积
upsampling:将maxpooling替换为unpool

八 ENet相关细节
对图像的下采样有两个缺点:
- 降低特征图分辨率会丢失细节信息,比如边界信息
- 语义分割的输出与输入有着相同的分辨率,strong downsampling对应着strong upsampling (原文用词),这增加了模型的大小和计算量
下采样的好处在于可以获取更大的感受野,获取更多的上下文信息,便于分类。针对问题一,有两个解决方法: - FCN的解决办法是将编码阶段的特征图与对应解码阶段相融合
- SegNet的解决办法是将编码阶段的maxpooling indices保留到解码器阶段做上采样使用,ENet采用的是SegNet的方法,可以减少内存需要,同时为了增加更好的上下文信息,使用了dilated扩大感受域
早期处理高分辨率的输入会耗费大量计算资源,ENet的初始化模型会大大减少输入的大小,这是考虑到视觉信息在空间上是高度冗余的,可以压缩成更有效的表示方法。
相比于SegNet中encoder和decoder的镜像对称,ENet的encoder和decoder并不对称,而是由一个较大的encoder和一个较小的decode组成,原因是作者认为解码器的作用主要是还原尺寸,对模型结果只起到微调作用,不必耗费大量参数
一般在卷积层之后做ReLU和BN会提升效果,但是在ENet上使用Relu却降低了精度,论文分析了ReLu没有起到作用的原因是因为网络架构深度,在类似ResNet的模型上有上百层,而ENet层数很少,较少的层需要快速过滤信息,故最终使用PReLus
Initial Block中,将Pooling操作和卷积操作并行,再concat到一起,这将推理阶段时间加 速了10倍。同时在做下采样时,ENet使用2×2的卷积核,有效的改善了信息的流动和准确率
将n×n的卷积核拆为n×1和1×n,可以有效的减少参数量
空洞卷积可以有效的提高感受野。有效的使用空洞卷积提高了4%的IoU。空洞卷积是交叉使用, 而非连续使用
因为数据集本身不大,很快会过拟合,使用L2效果不佳,最后选择Spatial Dropout,效果相 对好一点
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
