文章目录
实时性本质:牺牲精度换取效率
问题1:实时与经典分割算法区别
(1)为什么提出实时性?
目前在深度学习领域,算法设计可分为两个派别 一派为学院派,研究强大复杂的模型网络和实验方法,为了追求更高的性能;另一派为工程派,旨在将算法更稳定高效的落地在硬件平台上,效率是其追求的目标复杂的模型固然具有更好的性能,但是高额的存储空间计算资源消耗是使其难以有效的应用在各硬件平台上的重要原因。(学院派以论文为导向,工程派以生产为导向)
(2)经典分割与实时分割
经典分割代表算法 :FCN、U-Net、DeepLab系列、RefineNet等
经典网络不考虑分割效率,只关注分割的准确度。因此,对于一些实时的分割任务来说,以上网络的可用性并不高。由于网络参数较大,对硬件的要求也很高,且会耗费大量时间
实时分割代表算法:ENet、LinkNet、BiSeNet、DFA等
随着分割任务存在的问题被逐个击破,一些网络开始关注分割模型的效率,力求将其用于嵌入式设备或实时的分割任务中。这些网络在保证分割准确性不会过低的前提下,尽可能的减少参数,压缩模型。因此,实时网络对硬件设备的要求不高且省时
(3)实时分割核心思想
替换主网络、减少通道数、减少卷积层、将卷积层替换为组卷积层或其他能减少计算量的卷积操作、增加前期数据处理、减少复杂融合方式、避免使用全连接
(4)实时性网络评价参数
1.ms:毫秒数
2.fps:画面每秒传输帧数,通俗来讲就是指动画或视频的画面数
3.FLOPs:每秒执行的浮点数运算次数(1. FLOPS:全大写,是floating point ope rations per second的缩写,意指每秒浮点运算次数,可以理解为计算速度。是一个衡量硬件性能的指标2. FLOPs:s小写,是floating point operations的缩写(s表复数),意指浮点运算数,可以理解为计算量。用来衡量算法或模型的复杂度 3. GFLOPs:1GFLOPs = 109FLOPs(10亿次))
4.Parameters:模型参数
5.Model size:模型大小
模型1:ENet
摘要概述
Ø 背景介绍:实时执行像素级语义分割的能力在移动应用程序中至关重要。最近的DCNN网络的缺点在于需要大量浮点运算,运行时间长,阻碍了语义分割的可用性
Ø 算法组成:提出了ENet,专门针对需要低延迟操作的任务
Ø 文章亮点:ENet与现存模型相比,速度提升了18倍,FLOPs减少了75倍,参数减少了79倍,并能保证不错的准确度
Ø 模型评估:在CamVid、Cityscapes和SUN RGBD数据集中均得到了不错的成绩
引言概述
- 可穿戴增强现实、家用自动化设备、自动驾驶这些应用都对能够在移动设备上实时运作的低功耗语义分割(或视觉场景理解)产生了大量的需求
- 像SegNet和FCN,这些网络虽然能够实现端到端的稠密像素分割,但是它们都是基于庞大的网
络结构VGG16设计的,无法在大多数电池供电的移动设备上运作(要求达到10fps以上) - 本文中提出了一个专为快速、高准确率推理设计的神经网络结构,本文工作中,选择不应用任何后处理步骤
相关工作概述
- 语义分割对于理解图像内容和查找目标物体非常重要,这项技术在诸如辅助驾驶、现实增强等应用领域中是最重要的
- 目前主流的神经网络结构都由两部分组成:编码器和解码器。但是这些方法由于网络结构复杂、参数众多,推理过程比较慢
- 其他现存结构使用更简单的分类器,然后用CRF作为后处理。如SegNet论文中提到的,这些方法需要繁重的后处理,且经常对那些在一帧中占据更少像素点个数的类别分类失败。尽管这可以通过结合CNN来实现精度的提升,但是这样做会导致速度的下降。另外,值得注意的是,RNN是可以作为后处理结合进任何一种方法的,包括本文提出的方法
算法模型
初始化模块为(a):并行执行步长为2的卷积和最大池化,完成对输入图片的下采样,可有效减少参数和计算量
bottleneck模块为(b):以残差结构为主,可衍生出五种形态,每个卷积层后均接BN和PReLU
- normal:无maxpooling和padding,conv为3×3卷积
- down sampling:有max pooling和padding,第一个1×1卷积替换为步长为2的2×2卷积
- dilated:为3×3卷积设置空洞率
- asymmetric:将3×3卷积替换为1×5和5×1的非对称卷积
- upsampling:将maxpooling替换为unpool
模型细节
输入尺寸:512X512
结构基础:ResNet
在每个b中:
第一个1X1目的:减少channels
conv是可变卷积:可分离、标准、带孔
第二个1X1目的:增加channels(可省略)
padding作用:保证并行时尺寸统一
没有使用bias
模型2:LinkNet(未完)
摘要概述
Ø 背景介绍:用于场景理解的像素级语义分割不仅需要准确度,还要保证高效性,才能应用在实时应用程序中
Ø 现有算法:现有算法虽然比较准确,但参数和计算量都比较庞大,因此速度很慢
Ø 本文算法:本文提出了一种新的DCNN网络,该体系结构使其无需增加大量参数即可进行学习
Ø 模型评估:在CamVid和Cityscapes数据集中均得到了不错的成绩
引言&相关工作概述
- 分割任务需要对每个像素进行标记,因此,空间信息的保留就比较重要,用于场景理解的分割网络一般都是以编码器-解码器作为主要网络结构
- state-of-the-art的分割网络大多使用ImageNet上的分类模型作为编码器部分,使用最大池化操作保留的索引或者反卷积等方式作为解码器部分
- 本文主要贡献是直接将编码器与解码器对应部分连接起来从而提高准确率,一定程度上减少了处理时间。通过这种方式,可以保留编码部分中不同层丢失的信息,在进行重新学习丢失的信息时并未增加额外的参数与操作
Relu激活函数
ReLu:ReLu可有效解决sigmoid带来的梯度消失问题,但存在“死区”(x<=0,y=0)
Leaky ReLu:ReLu是将所有的负值都设为零,相反,Leaky ReLU是给所有负值赋予一个非零斜率
PReLu:可以看作是Leaky ReLU的一个变体。在PReLU中,负值部分的斜率是根据数据来定的,而非预先定义的
激活函数的变更对整体网络的影响并不显著,一般都会选取Relu
好文摘读
Here the encoders information into feature space,and the decoder maps this information into spatial categorization to perform sementation.
模型3:BiSeNet
分割常用损失函数
交叉熵
优点:交叉熵Loss可以用在大多数语义分割场景中
缺点:对于只分割前景(正样本)和背景(负样本)时候(one-hot),当前景(y=1)像素的数量远小于背景像素(y=0)的数量时,损失函数中背景成分就会占据主导,使得模型严重偏向背景,导致效果不好
加权交叉熵
BCELoss(binary cross entropy)
特点:基本等价于而分类情况下的交叉熵,通常接sigmoid激活函数的输出
Focal Loss
源自目标检测方向,是对标准交叉熵的一种改进,主要解决难易样本(在进行目标检测的时候,可能有一些检测较为容易检测出来,比如样本比较醒目或是独立,反之,为难分样本)数量不平衡的问题。当正负样本数量不平衡时,可以通过在交叉熵中引入参数进行调节
虽然上述公式平衡了正负样本的数量,但是实际上,目标检测中大量的候选目标都是易分样本。这些样本的损失很低,但是由于数量级不平衡,易分样本的数量相对来讲太多,最终主导了总的损失。目前,Focal Loss 在分割方向主要适用于二分类问题。
总结:交叉熵解决正负样本不平衡问题,Focal Loss解决难易样本不平衡问题
因此,Focal Loss认为易分样本对模型的提升效果非常小,模型应该主要关注那些难分样本
参数
a和1-a来控制正负样本不平衡问题,pY和(1-p)Y控制难易样本不平衡问题
P:当P—>0时候,调制因子(1-P)—>1,损失不被影响;当P—>1时候,调制因子(1-P)—>0,从而减小易分样本对总Loss的贡献;
Y:当Y=0时候,Focal Loss 就是传统的交叉熵。当Y增加时,调制系数(p ^ Y和(1-p)^ Y)也会增加;当Y为非零定值时候,如2,易分样本(P=0.9)的Loss比标准的交叉熵小100+倍,当P=0.968时,要小1000+倍。但是对于难分样本(P<0.5),Loss最多小4倍。这样的话难分样本的权重相对提升了很多,从而增加了那些错误分类的重要性。实验表明,y = 2,a = 0.75时效果最好
Dice Loss
dice系数用来度量集合相似度的函数,通常用于计算两个样本之间的像素相似度
TP:真实为1,预测为1;FP:真实为0,预测为1
FN:真实为1,预测为0;TN:真实为0,预测为0
红色圆代表真实值,黄色圆代表预测值
TP:橙色即真正,预测为1,真实为1
FN:红色即假负,预测为0,真实为1
FP:黄色即假正,预测为1,真实为0
TN:白色即真负,预测为0,真实为0
Dice Loss适用于样本极度不均衡的情况,一般情况下使用Dice Loss会对反向传播有不利的影响,使得训练不稳定。
IoU Loss
Jaccard系数
定义为A与B交集的大小与A与B并集的大小的比值
Tversky系数
Dice和Jaccard系数的广义系数
当α和β均为0.5时,这个公式就是Dice系数,当α和β均为1时,这个公式就是 Jaccard系数 通过调整α和β这两个超参数可以控制这两者之间的权衡,进而 影响召回率等指标
Lovasz-Softmax Loss
对Jaccard进行扩展,表现更好(https://arxiv.org/pdf/1705.08790.pdf)
BCE Loss + Dice Loss
将BCE Loss和Dice Loss进行组合,在数据较为均衡的情况下有所改善,但是在数据极度不均衡的情况下交叉熵会在迭代几个Epoch之后远远小于Dice Loss,这个组合Loss会退化为Dice Loss
Focal Loss + Dice Loss
论文提出了使用Focal Loss和Dice Loss来处理小器官的分割问题(https://arxiv.org/pdf/1808.05238.pdf)
分类器的评价标准绝对不能只依靠准确率这一个指标
准确率/accuracy:accuracy = (TP+TN) / (TP+TN+FP+FN)
精确率/precision:P = TP / (TP+FP)
召回率/recall:R = TP / (TP+FN)
举个例子:一个分类器鉴别100个瓷器,其中80个是正品,20个是赝品鉴定结果是,错把3个赝品当成了正品,把5个正品当成了赝品即分类器的输出为78个正品,其中75个是真正品(TP),3个假正品(FP);22个赝品,其中17个真赝品(TN),5个假赝品(FN)
Acc=(75+17)/100=0.92代表分类器每做一个鉴定,有92%的概率鉴定正确
P=75/(75+3)=0.9615代表如果分类器鉴定为正品,有96.15%的概率确实为正品
R=75/(75+5)=0.9372代表如果一个瓷器为正品,有93.72%的概率被鉴定为正品
摘要
Ø 背景介绍:语义分割同时要求丰富的空间信息和相当大的感受野。然而,通常我们为了达到实时的推理速度,会降低图像的空间分辨率,从而导致效果很差。
Ø 算法组成:本文提出了双向的语义分割网络。首先,采用空间分支保持空间信息并生成高分辨率的特征图。其次,采用快速下采样策略的上下文分支去获得丰富的感受野。最后,引入了 特征融合模块结合两个分支的特征
Ø 模型评估:所提出的结构在兼顾速度的同时,在Cityscapes、CamVid、和COCO-Stuff数据集上取到了很好的性能。
引言
实时语义分割模型加速方法
1、通过crop或者resize来限定输入的图像大小,以此降低计算复杂度。尽管该方法简单有效,但是空间细节的损失严重,尤其是边界部分,会导致算法精度降低
2、通过减少网络channels加快处理速度,尤其是在骨干模型的早期阶段,但是会弱化spatial information。
3、为追求极其紧凑的框架而丢弃模型的最后阶段(diss ENet)。由于ENet抛弃了最后阶段的下采样,模型的感受野不足以涵盖大物体,导致判别能力差
为了弥补空间细节的损失,许多人采用U-Shape
1、U-Shape结构在高分辨率特征图上引入额外的计算,降低模型计算速度
2、丢失掉的空间信息无法通过引入浅层修复,因此性价比不高
算法架构
在追求更加高效的模型过程中,BiSeNet设计了两个路径Spatial Path 和 Context Path并联执行的方式,分别满足Semantic Segmentation的两个中药需求。并且研究了两个组件的融合,以及最后的预测结果优化,分别提出特征融合模块(Feature Fusion Module)和注意力优化模块(Attention Refinement Module)
算法主要包括三部分:Spatial Path、上下午分支、特征融合模块
1、Spatial Path
现有语义分割任务中,一些方法用空洞卷积(dilated)保留input的分辨率去编码足够的spatial information ;另外一些方法通过使用空间金字塔、ASPP或大的kernel_size捕捉丰富的receptive field,这些方法表明spatial resolution和receptive field对表达较高准确率是至关重要的。然而,很难同时满足两种要求,尤其是real-time的语义分割任务中。
BiSeNet提出Spatial Path,保留input的空间尺寸并编码丰富的空间信息。Spatial Path主要包括三层,每一层包括一个stride=2的3*3Conv、bn和ReLU。最终,Spatial Path得到的feature map是input的1/8。
2、Context Path
为了兼顾receptive field 的大小和实时性两个因素,Context Path采用轻量级模型和global average pooling来提供更大的感受野。轻量级模型可以快速的downsample从而获得更大的receptive field,来编码高级特征的Context;然后,使用globel average pooling提供具有全局上下文信息的最大感受野;最后,结合全局池化上采样输出的特征图和轻量级模型的特征图。为了改善特征,作者提出了ARM(Attention Refinement Module)。ARM使用全局平均池化去捕捉全局上下文并且计算一个注意力向量去引导特征学习。这个设计可以使特征图更加精细
3、Feature Fusion Module
Spatial Path和Context path提取的feature是不同level的,所以不能简单的把两者相加。Spatial Path捕捉空间信息编码更丰富的细节信息,Context Path 主要编码Context information。简而言之,Spatial Path的特征是低级特征的,而Context Path是高级特征,因此,BiSeNet提出专门的Feature Fusion Module。