15+城市道路要素分割应用,用这一个分割模型就够了

2023-12-01 14:10

本文主要是介绍15+城市道路要素分割应用,用这一个分割模型就够了,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本文已在飞桨公众号发布,查看请戳链接:
15+城市道路要素分割应用,用这一个分割模型就够了!

图像语义分割在计算机视觉中是一个经典且具有挑战性的任务。它旨在提供详细的像素级图像分类,相当于为每个像素分配语义标签。该技术目前被广泛应用于城市安防、路况判断等系统领域,比如地图导航的应用是通过分割识别建筑物、墙体、路面状况等道路要素,从而更准确地捕捉路面关键信息。

为了让大家能够更快速地上手技术,百度视觉技术部基于飞桨图像分割开发套件PaddleSeg提供了一套完整的城市街景道路要素分割产业实践范例,提供了从数据准备、模型训练及优化的全流程方案,降低产业落地门槛。这个项目中我们需要把19项关键目标分割出来,那么我们具体的方案思路是什么呢?

图片

图1 分割示例

点击GET项目链接

https://aistudio.baidu.com/aistudio/projectdetail/4038141?contributionType=1

所有源码及教程均已开源,欢迎大家使用。

项目难点

目标复杂

  • 道路复杂:包含直行,转弯,红绿灯路口等;

  • 环境复杂:要适应白天、黑夜、雾天和雨天等;

  • 场景复杂:城市道路、乡村、高速公路等场景差异性较大。

样本不均衡

  • 类别多:包含路面、人行道、建筑物、墙、栅栏、杆子、交通灯、交通标志、植被、地面、天空、人、骑车的人、车、卡车、巴士、火车、摩托车、自行车;

  • 不均衡:每张图像中最多会出现15辆车和30个行人,少时会出现2辆车且无行人,以及各种程度的遮挡与截断。

模型选择

主流的语义分割方案包括如下几个系列:

  • FCN(Fully Convolution Network):即全卷积网络,作为使用深度学习做图像分割的先例,其象征意义更大于实际意义。

  • U-Net系列:在UNet之前,主要的分割网络都是直筒式的,只使用顶层或后几层信息来上采样重建。而UNet是直接连接到输入端的卷积层。

  • DeepLab系列:DeepLab在图像分割领域中是另一个系列,目前已经有多个版本,和之前的UNet系列比起来,主要差别是在对输入图像的处理和网络的结构上。DeepLab主要使用了图像金字塔、空洞卷积、SPP空间金字塔池化、可分离卷积等方法来提高分割的效果。

  • HRNet系列:HRNet是2019年由微软亚洲研究院提出的一种全新的神经网络,不同于以往的卷积神经网络,该网络在网络深层仍然可以保持高分辨率,因此预测的语义信息更准确,在空间上也更精确。

  • Transformer系列:自从Transformer被引入计算机视觉以来,催生了大量相关研究与应用。在图像分割方向,涌现了像SETR、TransUNet、SegFormer、MaskFormer等基于Transformer的语义分割网络模型。打破了卷积结构在图像全局信息访问限制的问题。

由于分割目标较复杂,我们选取了精度表现较好的HRNet系列中MscaleOCRNet 模型进行后续实验,它SOTA的mIoU达到了87%。相比于HRNet网络结构,它是在分割后的结果上计算每个像素与图像其他像素的一个关系权重,与原特征进行一个叠加构成OCRNet网络,再基于OCRNet进行分层多尺度训练形成最终的 MscaleOCRNet,多尺度训练与推理方式如下图所示。

图片

图2 MscaleOCRNet 方案

算法优化

为了进一步提升精度,解决样本不均衡的问题,我们提供了以下优化思路:

  • 修改预训练模型:将mapillary预训练改为Cityscapes预训练模型,迁移至KITTI-STEP数据集训练可以有效提升分割效果;

  • 增加多尺度训练:由 [0.5,1.0] 两个尺度增加至 [0.5,1.0,2.0] 三个尺度;

  • 修改输入尺寸:修改输入尺寸由1024x512变为原图尺寸1248x384。

图片

使用工具

本项目使用PaddleSeg开发完成。PaddleSeg是基于飞桨PaddlePaddle开发的端到端图像分割开发套件,涵盖了高精度和轻量级等不同方向的大量高质量分割模型。通过模块化的设计,提供了配置化驱动和API调用两种应用方式,帮助开发者更便捷地完成从训练到部署的全流程图像分割应用。提供语义分割、交互式分割、全景分割、Matting四大图像分割能力。

模型部署

使用飞桨原生推理库Paddle Inference,用于服务端模型部署,总体上分为三步:

1. 创建PaddlePredictor,设置所导出的模型路径;

2. 创建输入用的PaddleTensor,传入到PaddlePredictor中;

3. 获取输出的PaddleTensor,将结果取出。

图片

如果想了解更详细方案细节,欢迎关注我们的直播课程,手把手全流程教学等着你哦。

精彩课程预告

为了让小伙伴们更便捷地应用范例教程,百度高级研发工程师将于6月23日(周四)20:00点为大家深度解析从数据准备、方案设计到模型优化部署的开发全流程,手把手教大家进行代码实践。

关注飞桨公众号报名直播课

加入技术交流群

引用说明:图2引用自“Hierarchical Multi-Scale Attention for Semantic Segmentation”

关注【飞桨PaddlePaddle】公众号

获取更多技术内容~

这篇关于15+城市道路要素分割应用,用这一个分割模型就够了的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/441466

相关文章

利用Python操作Word文档页码的实际应用

《利用Python操作Word文档页码的实际应用》在撰写长篇文档时,经常需要将文档分成多个节,每个节都需要单独的页码,下面:本文主要介绍利用Python操作Word文档页码的相关资料,文中通过代码... 目录需求:文档详情:要求:该程序的功能是:总结需求:一次性处理24个文档的页码。文档详情:1、每个

Java中的分布式系统开发基于 Zookeeper 与 Dubbo 的应用案例解析

《Java中的分布式系统开发基于Zookeeper与Dubbo的应用案例解析》本文将通过实际案例,带你走进基于Zookeeper与Dubbo的分布式系统开发,本文通过实例代码给大家介绍的非常详... 目录Java 中的分布式系统开发基于 Zookeeper 与 Dubbo 的应用案例一、分布式系统中的挑战二

Java 缓存框架 Caffeine 应用场景解析

《Java缓存框架Caffeine应用场景解析》文章介绍Caffeine作为高性能Java本地缓存框架,基于W-TinyLFU算法,支持异步加载、灵活过期策略、内存安全机制及统计监控,重点解析其... 目录一、Caffeine 简介1. 框架概述1.1 Caffeine的核心优势二、Caffeine 基础2

使用Node.js和PostgreSQL构建数据库应用

《使用Node.js和PostgreSQL构建数据库应用》PostgreSQL是一个功能强大的开源关系型数据库,而Node.js是构建高效网络应用的理想平台,结合这两个技术,我们可以创建出色的数据驱动... 目录初始化项目与安装依赖建立数据库连接执行CRUD操作查询数据插入数据更新数据删除数据完整示例与最佳

Linux五种IO模型的使用解读

《Linux五种IO模型的使用解读》文章系统解析了Linux的五种IO模型(阻塞、非阻塞、IO复用、信号驱动、异步),重点区分同步与异步IO的本质差异,强调同步由用户发起,异步由内核触发,通过对比各模... 目录1.IO模型简介2.五种IO模型2.1 IO模型分析方法2.2 阻塞IO2.3 非阻塞IO2.4

PHP应用中处理限流和API节流的最佳实践

《PHP应用中处理限流和API节流的最佳实践》限流和API节流对于确保Web应用程序的可靠性、安全性和可扩展性至关重要,本文将详细介绍PHP应用中处理限流和API节流的最佳实践,下面就来和小编一起学习... 目录限流的重要性在 php 中实施限流的最佳实践使用集中式存储进行状态管理(如 Redis)采用滑动

深入浅出Spring中的@Autowired自动注入的工作原理及实践应用

《深入浅出Spring中的@Autowired自动注入的工作原理及实践应用》在Spring框架的学习旅程中,@Autowired无疑是一个高频出现却又让初学者头疼的注解,它看似简单,却蕴含着Sprin... 目录深入浅出Spring中的@Autowired:自动注入的奥秘什么是依赖注入?@Autowired

PostgreSQL简介及实战应用

《PostgreSQL简介及实战应用》PostgreSQL是一种功能强大的开源关系型数据库管理系统,以其稳定性、高性能、扩展性和复杂查询能力在众多项目中得到广泛应用,本文将从基础概念讲起,逐步深入到高... 目录前言1. PostgreSQL基础1.1 PostgreSQL简介1.2 基础语法1.3 数据库

Python中的filter() 函数的工作原理及应用技巧

《Python中的filter()函数的工作原理及应用技巧》Python的filter()函数用于筛选序列元素,返回迭代器,适合函数式编程,相比列表推导式,内存更优,尤其适用于大数据集,结合lamb... 目录前言一、基本概念基本语法二、使用方式1. 使用 lambda 函数2. 使用普通函数3. 使用 N

Python中yield的用法和实际应用示例

《Python中yield的用法和实际应用示例》在Python中,yield关键字主要用于生成器函数(generatorfunctions)中,其目的是使函数能够像迭代器一样工作,即可以被遍历,但不会... 目录python中yield的用法详解一、引言二、yield的基本用法1、yield与生成器2、yi