作者:明泽Danny
前言
本次给大家更新的是关于实时语义分割的工作。
语义分割论文
语义图像分割是计算机视觉中发展最快的领域之一,有着广泛的应用。在许多领域,如机器人和自动驾驶汽车,语义图像分割是至关重要的,因为它提供了必要的上下文,以采取行动,基于对场景的理解在像素级。对于图像的理解有一下几个层次:
- 分类,即将图像中最具代表性的物体归为某一个类;
- 带有定位的分类,对分类任务的一个扩展,使用边界框将对象框起来在分类;
- 目标检测,对多个不同类型的对象进行分类和定位;
- 语义分割,是对图像中的每个像素进行分类和定位;
- 实例分割,是语义分割的扩展,在实例分割中,相同类型的不同对象被视为不同的对象;
- 全景分割,结合语义分割和实例分割,所有像素被分配一个类标签,所有对象实例都被独立分割
【1】自主驾驶车辆实时语义分割的比较研究
《A Comparative Study of Real-time Semantic Segmentation for Autonomous Driving》
链接:https://openaccess.thecvf.com/content_cvpr_2018_workshops/papers/w12/Siam_A_Comparative_Study_CVPR_2018_paper.pdf
该文构建了一个实时语义分割框架,通过不同的编码解码框架,提供了几个例子编码器,包括VGG16, Resnet18, MobileNet,和ShuffleNet和解码器,包括SkipNet, UNet和膨胀前端。该框架是可扩展的,可以添加新的编码器和解码器。语义分割方法的分类:
【2】高效的语义分割CNN设计技术分析
《Analysis of efficient CNN design techniques for semantic segmentation》
链接:https://openaccess.thecvf.com/content_cvpr_2018_workshops/papers/w12/Briot_Analysis_of_Efficient_CVPR_2018_paper.pdf
与上一个一样都是编码解码结构:
简单的编码器:
Handling scale of objects
a)Cross channel filters
b)Cross layer connections
c)Wider bank of filters
d)Split branching and summation joining
量化:使用tensorflow或Nvidia TensorRT将神经网络的float32类型计算量化为int8类型的计算,实现加速,直接用int8类型计算对神经网络进行训练
高效结构设计原则
1.通过约束结构超参数平衡模型大小和准确率:增加网络深度,减少每一个卷积层输入的通道数,减小输入图片的分辨率
2.减少冗余的卷积核:卷积核分解(一个7x7卷积层分解为3个3x3卷积层, kxk卷积层分解为1xk卷积层和kx1卷积层)
3.通过激活函数校准卷积核(CReLU)使用对称性校准卷积核(G-CNN)
卷积设计
- 1x1卷积降维,减少卷积的输入通道数
- Group convolution
- Depth-wise Separable convolution
实验结果:
【3】基于空间稀疏性的实时语义图像分割
《Real-time Semantic Image Segmentation via Spatial Sparsity》
链接:https://arxiv.org/pdf/1712.00213.pdf
对于一个典型的两输入的全卷积网络引入了空间稀疏性,展示了在提高Inference速度的同时并没有随时太多精度;展示了使用空间稀疏性,使用in-column和cross-column的链接、移除残差单元,能够25倍的缩小计算开销,丢掉一点精度。
三种典型方法:
下面是该问提出的框架:
实验结果:
【4】ENet:一种用于实时语义分割的深度神经网络架构
《ENet: A Deep Neural Network Architecture for Real-Time Semantic Segmentation》
链接:https://arxiv.org/abs/1606.02147ENet
是为移动端开发而设计的分割框架,其主要结构为如下图中的bottleneck模块
其模型架构如下:
1.为了减少内核调用和内存操作,没有在任何投影中使用bias,因为cuDNN会使用单独的内核进行卷积和bias相加。这种方式对准确性没有任何影响。
2.在每个卷积层和随后的非线性层之间,使用BN
3.在解码器中,用max unpooling代替max pooling,用无bias的spatial convolution代替padding
4.在最后一个上采样模块中没有使用池化索引,因为initial初始块是在输入图的3个通道上进行的操作,而最终的输出具有C个特征图(分割对象类别的数量)。
【5】ICNet用于高分辨率图像的实时语义分割
《ICNet for Real-Time Semantic Segmentation on High-Resolution Images》
链接:https://arxiv.org/abs/1704.08545ICNet
使用了级联的图像输入(即低、中、高分辨率图像),采用了级联的特征融合单元,训练时使用了级联的标签监督。
ICNet包括三个分支:
1.低分辨率分支来获取语义信息,将原图1/4大小的图像输入到PSPNet中,降采样率为8,产生了原图1/32的特征图。
2.中分辨率和高分辨率的分支进行粗糙预测的恢复和细化,图2中部和底部分支,获得高质量的分割。
3.高分辨率分支采用轻加权的CNNs(绿色虚线框,底部分支和中部分支);不同分支输出的特征图采用级联特征融合单元进行融合,训练时接受梯级标签监督。
级联特征融合:
【6】加速自动驾驶的语义分割
《Speeding up Semantic Segmentation for Autonomous Driving》
链接:https://openreview.net/pdf?id=S1uHiFyyg
该架构包括ELU激活功能、一个类似挤压式的编码器、随后的并行扩展卷积以及一个具有类似于sharpmask的细分模块的解码器
译文:该编码器是一个改进的SqueezeNet 架构,它被设计为一个低延迟的网络,用于图像识别,同时保持AlexNet的准确性。
实验结果:
【7】高效卷积网络用于实时语义分割
《Efficient ConvNet for Real-time Semantic Segmentation》
链接:http://www.robesafe.uah.es/personal/eduardo.romera/pdfs/Romera17iv.pdf
Efficient ConvNet模型整体结构遵循编码-解码结构,
详细构造如下表:
整个模型包含23层,其中1-16层为Encoder,17-23层为Decoder。编码部分包含1、2、8层的下采样过程,以及余下层的Non-bt-1D提取特征。其中Non-bt-1D、Downsample构造如下:
实验结果:
【8】ERFNet:用于实时语义分割的高效残差分解卷积网络
《ERFNet: Efficient Residual Factorized ConvNet for Real-time Semantic Segmentation》
链接:http://www.robesafe.es/personal/eduardo.romera/pdfs/Romera17tits.pdf
REFNet沿用了编码-解码结构,其详细结构如表所示。
整个网络包含23层,其中1-16层为Encoder, 17-23层为Decoder。Downsampler block受另一个实时语义分割网络Enet的设计,其实本文不少灵感也来自于Enet:例如在初始图像输入1024X512X3,左边经过3X3卷积,步长strides = 2,得到16 channels,右边经过MaxPooling 得到3 channels,经过concat操作后得到16channels,最终图像变为 512X256X16,然后使用Relu函数激活传入下一层。优点在于从输入图像一开始就进行了减少输入图像尺寸的操作,本身视觉信息就存在大量冗余,这样节省了大量的计算。
【9】EDANet:用于实时语义分割的高效的非对称卷积密集模块
《Efficient Dense Modules of Asymmetric Convolution for Real-Time Semantic Segmentation》
链接:https://github.com/shaoyuanlo/EDANet
模型框架如下:
主要分为这么几个模块,Downsampling Block和EDA Block和最后的Projection Layer。其中的EDA Block又包括多个EDA module。其中EDA module的结构如下所示:
其中有两组asymmetric conv,前一组是正常的conv,后一组是dilated conv,这种asymmetic conv可以减少33%的计算量,并且只会带来少量的性能下降。
对于网络结构的设计,使用了ENet的initial block作为downsampling block,并且分成了两种模式,其表示如下:
这样的downsampling block可以让网络具有更大的感知野,用于收集上下文信息,在最后,相对于全解析度的输入图片,特征尺寸变为了1/8,而其他的网络比如SegNet特征尺寸则变为了1/32。
【10】ESPNet:扩展卷积的高效空间金字塔语义分割
《ESPNet: Efficient Spatial Pyramid of Dilated Convolutions for Semantic Segmentation》
链接:https://arxiv.org/pdf/1803.06815.pdf
原理:ESP Module基于卷积分解原理,将标准卷积分解为两个步骤:
1)point-wise convolutions 逐点卷积
2)spatial pyramid of dilated convolutions
空间金字塔型膨胀卷积ESP运算高效,并且可以用在CNNs的不同空间级别上(主要是相对ASP而言)理论上,ESP模块比Inception 和 ResNext的模块更高效。另外的试验结果表明,在相同硬件和计算条件下,ESP模块也优于现有表现最佳的MobileNet 和 ShuffleNetESP模块:
因为使用了大感受野的膨胀卷积,导致了gridding artifacts现象,如下图所示。本文提出了使用HFF方法来解决该问题,具体做法就是从最小的膨胀卷积核输出的那张feature map开始,逐级叠加。这样的做法并没有引入任何新的参数,同时计算量上也没有增加太多,但却有效地改善了网格效应。
【11】ESPNetv2:一个轻量级、高效、通用的卷积神经网络
《ESPNetv2: A Light-weight, Power Efficient, and General Purpose Convolutional Neural Network》
链接:https://arxiv.org/pdf/1811.11431.pdf
与第一版本相比,其特点如下:
1)将原来ESPNet的point-wise convolutions替换为group point-wise convolutions;
2)将原来ESPNet的dilated convolutions替换为depth-wise dilated convolution;
3)HFF加在depth-wise dilated separable convolutions和point-wise (or 1 × 1)卷积之间,去除gridding artifacts;
4)使用group point-wise convolution 替换K个point-wise convolutions;
5)加入平均池化(average pooling ),将输入图片信息加入EESP中;
6)使用级联(concatenation)取代对应元素加法操作(element-wise addition operation );
其总体框架如图所示:
【12】轻量级语义分段的集中综合卷积
《Concentrated-Comprehensive Convolutions for lightweight semantic segmentation》
链接:https://arxiv.org/pdf/1812.04920v1.pdf
第一阶段对来自邻近像素的压缩信息使用两个深度上的不对称卷积。第二阶段利用与第一阶段特征图在深度上可分离的扩张卷积来增加感受野。通过用提议的CCC模块替换传统ESP模块,在不降低Cityscapes数据集精度的情况下,与速度最快的模型之一ESPnet相比,减少一半的参数数量和35%的失败数量。
带孔卷积中的定位信息缺失集中综合卷积(CCC)块的结构如下:
CCC模块由信息集中阶段和综合卷积阶段组成。信息集中阶段使用简单的卷积核聚合局部特征信息。综合卷积阶段是通过放大看到较大的感受野,然后是混合信道信息的点卷积。将深度卷积应用于扩张的卷积,以进一步减小参数的大小。ESP模型结构如下: