图像语义分割在计算机视觉中是一个经典且具有挑战性的任务。它旨在提供详细的像素级图像分类,相当于为每个像素分配语义标签。该技术目前被广泛应用于城市安防、路况判断等系统领域,比如地图导航的应用是通过分割识别建筑物、墙体、路面状况等道路要素,从而更准确地捕捉路面关键信息。
为了让大家能够更快速地上手技术,百度视觉技术部基于飞桨图像分割开发套件PaddleSeg提供了一套完整的城市街景道路要素分割产业实践范例,提供了从数据准备、模型训练及优化的全流程方案,降低产业落地门槛。这个项目中我们需要把19项关键目标分割出来,那么我们具体的方案思路是什么呢?
目标复杂
样本不均衡
类别多:包含路面、人行道、建筑物、墙、栅栏、杆子、交通灯、交通标志、植被、地面、天空、人、骑车的人、车、卡车、巴士、火车、摩托车、自行车;
不均衡:每张图像中最多会出现15辆车和30个行人,少时会出现2辆车且无行人,以及各种程度的遮挡与截断。
模型选择
由于分割目标较复杂,我们选取了精度表现较好的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四大图像分割能力。
模型部署
1. 创建PaddlePredictor,设置所导出的模型路径;
2. 创建输入用的PaddleTensor,传入到PaddlePredictor中;
3. 获取输出的PaddleTensor,将结果取出。
精彩课程预告
为了让小伙伴们更便捷地应用范例教程,百度高级研发工程师将于6月23日(周四)20:00点为大家深度解析从数据准备、方案设计到模型优化部署的开发全流程,手把手教大家进行代码实践。
扫码报名直播课
加入技术交流群
引用说明:图2引用自“Hierarchical Multi-Scale Attention for Semantic Segmentation”
获取更多技术内容~