DeepLab大盘点 | 深入理解DeepLab系列语义分割网络
作者 | 深蓝AI 编辑 | 汽车人
点击下方卡片,关注“自动驾驶之心”公众号
ADAS巨卷干货,即可获取
点击进入→自动驾驶之心技术交流群
后台回复【分割综述】获取语义分割、实例分割、全景分割、弱监督分割等超全学习资料!
语义分割是指在像素级别上进行分类,从而转换得到感兴趣区域的掩膜。说起语义分割的发展则肯定绕不开DeepLab系列语义分割网络,该系列网络由谷歌团队提出并发展,在VOC2012等公用语义分割数据集上,取得了较好的效果。
DeepLabV1
DeepLabV1[1]于2014年提出,在PASCAL VOC2012数据集上取得了分割任务第二名的成绩。该网络是研究FCN之后发现在FCN中池化层会使得特征图的长和宽不断下降,为了保证之后输出的尺寸不至于太小,FCN网络在第一层就对原图加了100的扩充,但这样会引入一些噪声,特征图尺寸的逐渐减小还会使得在语义分割时进行上采样,但是上采样并不能将丢失的信息全部无损的找回来,若是单单的去掉池化层,则会改变之前可用的结构,就不能再用以前的参数进行优化。因此DeepLab的研究人员提出了空洞卷积来解决这个问题,空洞卷积如图1所示。
图1 空洞卷积示意图
令卷积核为k,输入特征图为x,当空洞卷积作用于特征图时,输出特征图y上的每个位置i有:
r是空洞率。当r=1时 ,进行标准卷积操作,如图1(a)所示,当r>1时,就是在原图上每隔r-1个像素采样,如r=2时,进行空洞率为1的采样,如图1(b)所示,其中红点的权重不为0,其余的均为0,kernel size 依旧是3,但网络的感受野扩大到了7x7,图1(c)是r=4的卷积,能达到15x15的感受野。这样在不损失池化层的情况下,加大感受野,获得更大范围的信息。
在经过层层上采样和下采样之后,丢失了大量的位置信息,于是DeepLabv1直接采用双线性插值,然后使用全连接条件随机场对得到结果进行锐化处理,其能量函数为
X是分配的像素标签。一元势函数 ,其中P()是DCNN计算像素i处的标签分配概率。点对势函数为
其中。故无论像素点之间的距离有多远,任何两个像素点之间都有一个点对势函数,因此叫做全连接条件随机场。每个 是由i和j位置像素点特征决定的高斯核函数,并加权 ,考虑两个像素点之间的位置与颜色,高斯核函数为:
第一个核函数与像素点位置(p)和颜色强度(I)有关,第二个核函数与位置(p)有关,超参数 控制高斯核的作用范围。最终模型整体流程如图2所示。
图2 整体流程图
DeepLabV2
DeepLabV2[2]在前一代的基础上进行改进,依旧是使用空洞卷积,但主干网络已经替换为ResNet,另外提出了空洞空间金字塔池化(ASPP)结构,如图3所示。
图3 空洞空间金字塔池化结构
其通过在固定的特征图上,使用不同空洞率的空洞卷积并行提取特征,能多比例捕获对象及上下文信息。其次由于V1全连接条件随机场会使得边界信息平滑粗糙,因此对二元势表达式进行更新为:
模型整体流程和图2类似,最终在当时公用语义分割数据集上达到了最优的性能,运行速度为8FPS,系统简单,高效。
DeepLabV3
DeepLabV3[3] 去掉了最后的全连接随机条件场,同时进一步探讨了空洞卷积的使用,让其在级联模块和空间金字塔池化的框架下获取更大的感受野,得到更多的信息,还有ASPP模块,由不同采样率的空洞卷积组成,以级联或并联的方式布局。
当存在多尺度物体时,需要多尺度特征图融合,主要是图像金字塔,编码-解码,上下文模块和空间金字塔方法,V3主干网络依旧是resnet, 探讨将空洞卷积作为一种上下文模块和空间金字塔池化的工具,于是涉及通过空洞卷积进一步深入网络模型,如图4所示。
图4 空洞卷积下的深度模型
其中 output stride是输入图像的空间分辨率和输出特征图的空间分辨率的比值。由论文中得,output stride越大,得到得效果越差,因为连续的下采样会降低特征映射的分辨率,细节信息被抽取,这只会语义分割是有害的,结果最好的output stride = 8 却需要占用较多的存储空间。
对于在V2中提出的ASPP模块,并行使用了四种采样率不同的空洞卷积表明了不同尺度采样是有效的。不过V3向其中加入了BN层,虽然不同采样率的空洞卷积确实可以有效捕获多尺度信息,但是随着采样率增加,滤波器的权重在减小,因此V3还在模型最后特征映射上应用了全局平均池化,将结果经过1x1x256卷积再双线性插值上采样得到目标的空间维度。
DeepLabV3+
DeepLabV3+[4]是在V3的基础上加入了简单有效的解码模块去细化分割结果,还进一步探讨了Xception模型和ASPP模块,构造了更快更强的编码-解码网络,整体结构如图5所示。
图5 DeepLabV3+结构
深度可分离卷积将一个标准卷积拆分为深度卷积和一个1x1卷积,极大的减少了计算复杂度。特别的,深度卷积独立的为输入特征的每个通道做卷积操作,然后使用1x1的卷积对深度卷积的输出进行通道间进行融合操作,这样就替代了一个标准卷积操作,即融合了空间信息,也融合了不同通道间的信息。V3+则将空洞率和深度可分离卷积结合起来称为空洞可分离卷积,极大的减少了所提出模型的计算复杂度,同时也维持了模型相似或更好的效果。
对于提出的解码模块,其编码模块是整个DeepLabV3,这样在编码层输出的特征先经过4倍双线性插值上采样,然后和编码层中骨干网络中拥有相同尺寸的浅层特征进行通道维度融合,在拼接之前需要对低级别特征进行1x1卷积,目的是减小低级别特征的通道数目,因为低级别特征通常含有大量的通道数目,这样底级别特征的重要性可能会超过解码层输出的富有语义信息的特征并使得训练更加困难。之后,对拼接结果进行了3x3卷积操作去细化特征,并随后又接了一个4倍的双线性插值上采样,得到最后的分割结果。实验证明:当编码层的输出步长为16时可以达到速度和精度的最好的权衡,而输出步长为8时,模型效果略有提升,但也相应增加了额外的计算复杂度代价。
最后是对于Xception的改进,使用一定步长的深度可分离卷积替代了最大池化操作,还有在每一个3x3的深度卷积之后添加额外的BN层和Relu操作,修改后的整体结构如图6所示。
图6 Xception结构
最终该网络在TOP-5%上的错误率仅5.17%,在VOV2012数据集上MIOU达到了89.0%,是先进的表现。[5]
参考
[1] Chen L C, Papandreou G, Kokkinos I, et al. Semantic Image Segmentation with Deep Convolutional Nets and Fully Connected CRFs[J]. Computer Science, 2014(4):357-361.
[2] L. -C. Chen, G. Papandreou, I. Kokkinos, K. Murphy and A. L. Yuille, "DeepLab: Semantic Image Segmentation with Deep Convolutional Nets, Atrous Convolution, and Fully Connected CRFs," in IEEE Transactions on Pattern Analysis and Machine Intelligence, vol. 40, no. 4, pp. 834-848, 2018
[3]Chen L C, Papandreou G, Schroff F, Adam H.: Rethinking atrous convolution for semantic image segmentation.2017, https://doi.org/10.48550/arXiv.1706.05587
[4]Chen L C, Zhu Y, Papandreou G, Schroff F, Adam H.: Encoder-decoder with atrous separable convolution for semantic image segmentation. European Conference on Computer Vision, Berlin, 2018, pp. 833-851.
[5] https://blog.csdn.net/weixin_47658790/article/details/115420207?ops_request_misc=&request_id=&biz_id=102&utm_term=deeplabv3&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-1-115420207.142^v13^control,157^v14^new_3&spm=1018.2226.3001.4187
【自动驾驶之心】全栈技术交流群
自动驾驶之心是首个自动驾驶开发者社区,聚焦目标检测、语义分割、全景分割、实例分割、关键点检测、车道线、目标跟踪、3D目标检测、BEV感知、多传感器融合、SLAM、光流估计、深度估计、轨迹预测、高精地图、规划控制、模型部署落地、自动驾驶仿真测试、硬件配置、AI求职交流等方向;
加入我们:自动驾驶之心技术交流群汇总!
自动驾驶之心【知识星球】
想要了解更多自动驾驶感知(分类、检测、分割、关键点、车道线、3D目标检测、多传感器融合、目标跟踪、光流估计、轨迹预测)、自动驾驶定位建图(SLAM、高精地图)、自动驾驶规划控制、领域技术方案、AI模型部署落地实战、行业动态、岗位发布,欢迎扫描下方二维码,加入自动驾驶之心知识星球(三天内无条件退款),日常分享论文+代码,这里汇聚行业和学术界大佬,前沿技术方向尽在掌握中,期待交流!
DeepLab大盘点 | 深入理解DeepLab系列语义分割网络相关推荐
- 深入理解DeepLab系列语义分割网络
语义分割是指在像素级别上进行分类,从而转换得到感兴趣区域的掩膜.说起语义分割的发展则肯定绕不开DeepLab系列语义分割网络,该系列网络由谷歌团队提出并发展,在VOC2012等公用语义分割数据集上,取 ...
- Pytorch实现FCN图像语义分割网络
针对图像的语义分割网络,本节将介绍PyTorch中已经预训练好网络的使用方式,然后使用VOC2012数据集训练一个FCN语义分割网络. 一.使用预训练好的语义分割网络 PyTorch提供了已预训练好的 ...
- 突破传统—复旦大学大数据学院张力课题组提出语义分割全新方案
突破传统--复旦大学大数据学院张力课题组提出语义分割全新解决方案,论文已被CVPR2021收录. 论文名称:Rethinking Semantic Segmentation from a Sequen ...
- 计算机视觉算法——语义分割网络总结
计算机视觉算法--语义分割网络总结 计算机视觉算法--语义分割网络总结 1. FCN 1.1 关键知识点--网络结构及特点 1.2 关键知识点--转置卷积 1.3 关键知识点--语义分割评价指标 2. ...
- CVPR2020:4D点云语义分割网络(SpSequenceNet)
CVPR2020:4D点云语义分割网络(SpSequenceNet) SpSequenceNet: Semantic Segmentation Network on 4D Point Clouds 论 ...
- 一块GPU就能训练语义分割网络,百度PaddlePaddle是如何优化的?
[引言]显存不足是训练语义分割网络常常遇见的问题,而显存是GPU计算中的稀缺资源.百度深度学习框架PaddlePaddle中的显存优化,不仅可以让研究人员在相同成本的计算设备上训练更大的模型,还可以在 ...
- python怎么替换主干网络_一块GPU就能训练语义分割网络,百度PaddlePaddle是如何优化的?...
一. 图像语义分割模型DeepLab v3 随着计算机视觉的发展,语义分割成为了很多应用场景必不可少的一环. 比如网络直播有着实时剔除背景的要求,自动驾驶需要通过语义分割识别路面,与日俱增的应用场景对 ...
- Backbone发展与语义分割网络发展
整理如下(按照arxiv上面时间线的预印版本来整理): Backbone(基础网络,也可以理解为分类网络): Backbone可以塞入UNET作为使用. 年代 网络名称与代码 论文名称 1989 Le ...
- 深度学习:语义分割网络
1.考虑采用实例分割或语义分割用于烟支打孔的内孔和外孔的边缘提取上 2.https://www.cnblogs.com/zxj9487/p/11154316.html 直接可以用的Python和Ope ...
最新文章
- Linux 的账号与群组(转)
- js,jquery 根据对象某一属性进行排序
- html自动获取用户位置,HTML5 - 使用Geolocation(地理定位)获取用户的位置
- Java程序猿的JavaScript学习笔记(10—— jQuery-在“类”层面扩展)
- Hi3516A开发--使用root模式登录Ubuntu14.04
- 上所说的计算机主机是什么意思,通常所说的主机指什么
- 认认真真推荐几个机器学习和Python类的公众号
- 真快!10秒内将k8s集群运行起来
- struct和byte[]相互转换(用Marshal类实现)
- 微信小程序动态更改标题栏_微信小程序实现动态设置页面标题的方法【附源码下载】...
- 21、List遍历时修改元素的问题
- angular发布代码有缓存_如何在Angular应用程序中执行请求?
- python的重试库tenacity用法以及类似库retry、requests实现
- 北京大学深圳研究生院计算机应用技术,北京大学计算机应用技术考研经验-北大深圳研究生院考研辅导班...
- 超图高性能分布式渲染技术解密与应用
- c#加粗代码_如何使用C#加粗Excel工作表中特定行或单元格的字体?
- gps串口通信程序c语言,stm32单片机串口接收GPS数据并解析NMEA之GPRMC
- Uni-app 小程序 App 的广告变现之路:激励视频广告
- java代码实现kafka消费端consumer的from-beginning功能
- python 爬虫 关于requests的基础知识及常用的一些User-Agent
热门文章
- 最全面梳理 JS 运行机制解析与浏览器页面渲染的核心流程
- 抢先看:笔者亲历的2020年中国.NET开发者大会活动纪实
- 建筑的永恒之道----永恒之道
- linux串口工具 SRT,应用于简单控制任务的软PLC——PC WORX SRT
- Sweet Home 3D 6.5 中文版 (装潢室内设计软件)
- 彩虹世界未能连接到服务器,彩虹世界免费资源-彩虹世界新版基遇免费资源官网链接 v1.0预约_手机乐园...
- libreoffice python_优化LibreOffice如此简单
- php jwt是什么,JWT是什么?对JWT的简单认识
- P2028 龙兄摘苹果
- Oracle9i完美安装、配置及操作