百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 热门文章 > 正文

基于改进DeepLabv3+的室外交通场景识别

bigegpt 2024-08-03 11:27 8 浏览

李阳 李猛 王中华

济南大学自动化与电气工程学院

摘 要:针对目前常用语义分割模型对小目标分割不全、精度低等问题,文章提出了一种改进的DeepLabv3+网络。结合结构重参数化思想,在训练阶段将具有多分支卷积结构的DBB模块替代网络中的部分结构,推理阶段再将DBB模块等价转化成单分支结构,从而使网络在具有简单结构的同时拥有复杂多分支网络带来的高分割性能,并且配合使用交叉熵和Dice损失人函数组成混合损失函数训练网络,进一步提高分割的准确性。所提算法在针对室外交通场景的Cityscapes数据集上验证,得到的MIoU(平均交并比)值为76.79%、MPA(平均像素精度)为83.95%,对比原模型分别提高了4.63%和3.53%。经实验证明,文章所提出的方法可以有效地改善分割精度,从而达到更好的分割效果。

关键词:图像语义分割;DeepLabv3+;结构重参数化;DBB模块;混合损失函数;

作者简介:李阳(1997—),男,硕士研究生,研究方向:计算机视觉。;

0 引言

随着人工智能时代的到来,智慧无人驾驶技术能够帮助我们释放双手、摆脱乏味,已然成了不可阻挡的时代潮流,而对交通道路场景的识别能力作为智能驾驶的基础与前提条件,其效果的可靠性、有效性起着举足轻重的作用。

基于深度学习的卷积神经网络(CNN)的应用使得计算机视觉得到了快速发展,其在交通道路场景识别中有着出色的表现。Pan Xingang等人认为卷积网络在利用图像中跨行列之间信息的能力不足,影响了车道线、路灯等目标的分割效果,基于此提出了SCNN网络,解决了传递特征图上的空间关系,在公开数据集上表现优秀[1]。针对交通场景中车辆行人等相互遮挡的情况,李轩等人提出了一种遮挡的回归损失函数Occlusion loss,搭配目标检测算法YOLO v3不仅可以提高目标检测的精度,还能够避免同一检测框内出现多个被检测目标,从而有效防止漏检,并且拥有更强的鲁棒性[2]。谭睿俊等人针对语义分割网络在提取特征时下采样池化操作会损害特征图分辨率的情况,为提升其在交通场景下的分割效果,构建了一种双层残差网络和跳跃特征融合网络相结合的语义分割模型,更加全面充分地学习图像特征,使网络达到了较高的提取特征能力和识别效果[3]。

作为当前图像语义分割领域中主流的具有编码-解码结构的网络模型,Deep Labv3+网络中引入了扩张卷积,可以获取更多的上下文信息,表现十分出色[4]。然而,在面对交通场景中一些小目标物体的分割时,分割效果不明显,且总体分割精度有待提高。针对上述问题,该文将基于Deep Labv3+网络进行改进,提升其精度及分割效果。

1 算法改进及相关内容介绍

1.1 总体框架

该文改进的Deep Labv3+的图像语义分割算法,主要是利用了结构重参数化方法和混合损失函数实现的。采用结构重参数化方法,用具有多分支结构的DBB模块重构模型中解码部分的网络结构[5]。在交叉熵作为损失函数的基础上,结合Dice损失函数组成混合损失函数,引导网络训练学习,弥补单个损失函数在数据出现不均衡时的不足问题,进一步提升网络的分割精度。

1.2 结构重参数化

多分支的结构相当于使网络增加了不同尺度的感受野,相较于单层递进式的网络结构拓宽了网络的宽度、增加了学习参数,有利于网络性能的提高,但网络的多分支化会不可避免地带来网络在使用时的大参数量以及内存消耗。2021年,Diverse Branch Block(DBB)模块被提出,图1为DBB模块示意图。其核心理念是通过多分支网络结构(包含卷积序列、多尺度卷积及平均池化)来丰富卷积块的特征空间,从而增强了单卷积的表示能力,为卷积神经网络带来更大的改善。通过结构重参数化思想,DBB模块还可以将复杂得多的分支结构等价转化为一个单分支结构,如此可以使得转化后的网络不仅拥有了在转换前的优良性能,而且结构简单。

要将复杂多分支结构转化为一个单分支结构,其融合过程需要涉及多个步骤,包括将BN层与卷积层的融合、不同尺寸的卷积融合等。

首先是BN层和卷积层的融合。已知卷积变化、BN操作分别如公式(1)(2):

图1 Diverse Branch Block(DBB)示意图 下载原图

则输入x经过卷积层和BN层的过程可以表示为:

式中,γ和β——BN层自身训练学习到的比例因子和偏置项;μB和σB——均值和方差。令

由(3)(4)可得:

式中,

——经融合后的卷积核的权重与偏置。经过以上变换,就实现了将卷积层和BN层融合为一个单一卷积块的过程。

对于分支融合。由文献[6]可知,两个或多个配置相同的卷积是具有可加性,即可以先将不同的分支都转化为相同配置的卷积,再把它们利用可加性合并为一个卷积,这就是分支融合的原理。

如图1(a)所示,第(1)条支路中1×1卷积和BN层进行融合后,使用0进行填充至K×K大小;第(2)条支路中结构为1×1Conv-BN-K×K Conv-BN,先分别将1×1卷积与对应的BN层以及K×K卷积与对应的BN层进行融合,得到的结构为1×1Conv-K×K Conv。其次以F1∈RD×C×1×1作为1×1 Conv的卷积核、F2∈RE×D×K×K作为K×K Conv的卷积核,它们的偏置分别为b1∈RD和b2∈RE。则输出O'是:

式中,I——输入,*——卷积运算。由于我们需要得到

由文献[7]可知,可以用转置后的1F对2F进行卷积得到F'、1b与2F相乘后与2b相加得到b',注意,对于需要进行0填充的K×K Conv,方法是在模型训练时对第一个BN后的结果填充1b,至此将第(2)条支路转化成K×K大小的卷积。第(3)条支路中先将平均池化层等价转化为同样大小和步长的卷积,之后按照第(2)条支路的处理对该条支路转换为K×K大小的卷积;第(4)条支路中K×K卷积只和BN层融合。最后将转化后的四条支路进行分支融合,得到图1(b)所示的单一结构卷积块。

1.3 Dice Loss

在网络训练阶段,该文提出了一种混合损失函数,即将交叉熵损失与Dice损失相结合。Dice Loss[8]可以有效地应对数据中正负样本不平衡造成的分割效果不理想的场景,其计算公式如式(8)所示:

式中,ip——预测图中的像素点;gi——标签图中的像素点;pi gi——二者交集。由式(8)中可以看到Dice Loss表示一种区域性代价函数,也就是说影响某像素点的训练损失及梯度值的原因不仅和该点的预测值及对应标签值有关,其他点的预测值及相应标签值也会做出干扰,即网络的所有输出都会影响该像素的梯度,这就避免了模型在背景像素数目大于目标像素数目的情况下严重偏向于背景而导致模型分割效果不好的情况,因此图像中的数据不均衡问题可以得到缓解。

2 实验与分析

2.1 实验环境及训练方法

该文的实验环境为深度学习框架为Pytorch1.10,处理器是Intel i9-10980XE,GPU为NVIDIA Ge Force RTX3080。该文使用迁移学习策略,将预训练模型Resnet101网络作为算法的初始化权重主干特征提取网络,以提升网络的泛化能力。训练分为两个阶段。阶段一为冻结主干特征提取网络阶段,学习率为0.007,批处理大小和epoch分别为8和50。阶段二是解冻主干网络阶段,学习率为0.000 07,批处理大小和epoch分别为4和50。采用SGD作为优化器,学习率衰减策略为余弦退火。

训练时,在网络解码结构用DBB模块替换部分卷积去训练,并且配合混合损失函数计算梯度信息进行反向传播训练网络模型。推理测试阶段利用结构重参数化方法,将DBB模块构转化成简单卷积。

2.2 实验数据集及评价指标

该文采用Cityscapes数据集[9]对所提算法进行试验和验证,由于官方并没有给出测试集对应的标签图,所以该文使用的数据集是训练集加验证集共3 475图片,并随机划分,取3 175张图片用于训练、348张图片用于验证及后续的测试。该文选择使用平均交并比(MIo U)和平均像素精度(MPA)为验证图像语义分割算法性能的评价指标。

2.3 实验结果与分析

该文对所改进算法进行了消融实验,模型语义分割结果如表1所示。

表1 各模型的图像语义分割结果评估 下载原图

从表1中的结果对比可以看出,在原算法的基础上,仅在特征提取阶段利用DBB模块替换卷积结构或仅加入混合损失函数,都使得MIo U和MPA得到了有效提高;而在原有基础上同时DBB模块和混合损失函数,使得MIo U值提高了4.63个百分点、MPA提高了3.53个百分点。

使用模型(1)和(4)对Cityscapes数据集中的测试集进行语义分割,实验对比结果如图2所示。可以看出,在交通场景下进行场景识别时,原Deep Labv3+算法在分割成像占比较小的柱子、人等物体时明显存在分割不均衡、遗漏的现象,该文所改进的算法的分割效果更为明显。实验结果表明,所改进算法对于目标背景的边界分割能力有明显提升,细化目标边界,轮廓更加清晰,改善了数据不平衡分割不好的问题,并改善了语义分割效果。

图2 分割结果对比图 下载原图

3 结论

针对交通场景下语义分割性能精度低以及对小目标物体分割效果较差的问题,该文提出了一种改进的Deep Labv3+网络的语义分割方法,首先利用结构重参数化方法,在训练阶段用DBB模块重构网络的解码架构,推理阶段再等价转化成一个简单卷积块,使模型在具有复杂多分支结构表现出来的良好分割性能的同时兼具单分支结构的简洁特征;其次,使用Dice损失函数和交叉熵损失函数结合的混合损失函数应用到算法中,可以有效地改善出现正负样本不平衡时分割效果不理想的情况。通过使用Cityscapes数据集进行的消融实验表明,所提算法相比原Deep Labv3+算法对图像的分割准确度有了很大的提升,拥有更好的效果。

参考文献

[1] Pan X, Shi J, Luo P, et al. Spatial as deep:Spatial cnn for traffic scene understanding[C].Proceedings of the AAAI Conference on Artificial Intelligence,2018.

[2] 李轩,李静,王海燕.密集交通场景的目标检测算法研究[J].计算机技术与发展,2020(7):46-50.

[3] 谭睿俊,赵志诚,谢双林.双层残差语义分割网络及交通场景应用[J].智能系统学报, 2022(4):780-787.

[4] Chen L C, Zhu Y, Papandreou G, et al. Encoder-decoder with atrous separable convolution for semantic image segmentation[C].Proceedings of the European conference on computer vision(ECCV),2018:801-818.

[5] Ding X, Zhang X, Han J, et al. Diverse branch block:Building a convolution as an inception-like unit[C].Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition,2021:10886-10895.

[6] Ding X, Guo Y, Ding G, et al. Acnet:Strengthening the kernel skeletons for powerful cnn via asymmetric convolution blocks[C].Proceedings of the IEEE/CVF international conference on computer vision,2019:1911-1920.

[7] Tian Z, He T, Shen C, et al. Decoders matter for semantic segmentation:Data-dependent decoding enables flexible feature aggregation[C].Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition,2019:3126-3135.

[8] Milletari F, Navab N, Ahmadi S A. V-net:Fully convolutional neural networks for volumetric medical image segmentation[C].2016 fourth international conference on 3D vision(3DV). Ieee, 2016:565-571.

[9] Cordts M, Omran M, Ramos S, et al. The cityscapes dataset for semantic urban scene understanding[C].Proceed of the IEEE conference on computer vision and pattern recognition,2016:3213-3223.

声明:我们尊重原创,也注重分享。有部分内容来自互联网,版权归原作者所有,仅供学习参考之用,禁止用于商业用途,如无意中侵犯了哪个媒体、公司、企业或个人等的知识产权,请联系删除(邮箱:glyhzx@126.com),另本头条号推送内容仅代表作者观点,与头条号运营方无关,内容真伪请读者自行鉴别,本头条号不承担任何责任。

相关推荐

Go语言泛型-泛型约束与实践(go1.7泛型)

来源:械说在Go语言中,Go泛型-泛型约束与实践部分主要探讨如何定义和使用泛型约束(Constraints),以及如何在实际开发中利用泛型进行更灵活的编程。以下是详细内容:一、什么是泛型约束?**泛型...

golang总结(golang实战教程)

基础部分Go语言有哪些优势?1简单易学:语法简洁,减少了代码的冗余。高效并发:内置强大的goroutine和channel,使并发编程更加高效且易于管理。内存管理:拥有自动垃圾回收机制,减少内...

Go 官宣:新版 Protobuf API(go pro版本)

原文作者:JoeTsai,DamienNeil和HerbieOng原文链接:https://blog.golang.org/a-new-go-api-for-protocol-buffer...

Golang开发的一些注意事项(一)(golang入门项目)

1.channel关闭后读的问题当channel关闭之后再去读取它,虽然不会引发panic,但会直接得到零值,而且ok的值为false。packagemainimport"...

golang 托盘菜单应用及打开系统默认浏览器

之前看到一个应用,用go语言编写,说是某某程序的windows图形化客户端,体验一下发现只是一个托盘,然后托盘菜单的控制面板功能直接打开本地浏览器访问程序启动的webserver网页完成gui相关功...

golang标准库每日一库之 io/ioutil

一、核心函数概览函数作用描述替代方案(Go1.16+)ioutil.ReadFile(filename)一次性读取整个文件内容(返回[]byte)os.ReadFileioutil.WriteFi...

文件类型更改器——GoLang 中的 CLI 工具

我是如何为一项琐碎的工作任务创建一个简单的工具的,你也可以上周我开始玩GoLang,它是一种由Google制作的类C编译语言,非常轻量和快速,事实上它经常在Techempower的基准测...

Go (Golang) 中的 Channels 简介(golang channel长度和容量)

这篇文章重点介绍Channels(通道)在Go中的工作方式,以及如何在代码中使用它们。在Go中,Channels是一种编程结构,它允许我们在代码的不同部分之间移动数据,通常来自不同的goro...

Golang引入泛型:Go将Interface「」替换为“Any”

现在Go将拥有泛型:Go将Interface{}替换为“Any”,这是一个类型别名:typeany=interface{}这会引入了泛型作好准备,实际上,带有泛型的Go1.18Beta...

一文带你看懂Golang最新特性(golang2.0特性)

作者:腾讯PCG代码委员会经过十余年的迭代,Go语言逐渐成为云计算时代主流的编程语言。下到云计算基础设施,上到微服务,越来越多的流行产品使用Go语言编写。可见其影响力已经非常强大。一、Go语言发展历史...

Go 每日一库之 java 转 go 遇到 Apollo?让 agollo 来平滑迁移

以下文章来源于GoOfficialBlog,作者GoOfficialBlogIntroductionagollo是Apollo的Golang客户端Apollo(阿波罗)是携程框架部门研...

Golang使用grpc详解(golang gcc)

gRPC是Google开源的一种高性能、跨语言的远程过程调用(RPC)框架,它使用ProtocolBuffers作为序列化工具,支持多种编程语言,如C++,Java,Python,Go等。gR...

Etcd服务注册与发现封装实现--golang

服务注册register.gopackageregisterimport("fmt""time"etcd3"github.com/cor...

Golang:将日志以Json格式输出到Kafka

在上一篇文章中我实现了一个支持Debug、Info、Error等多个级别的日志库,并将日志写到了磁盘文件中,代码比较简单,适合练手。有兴趣的可以通过这个链接前往:https://github.com/...

如何从 PHP 过渡到 Golang?(php转golang)

我是PHP开发者,转Go两个月了吧,记录一下使用Golang怎么一步步开发新项目。本着有坑填坑,有错改错的宗旨,从零开始,开始学习。因为我司没有专门的Golang大牛,所以我也只能一步步自己去...