专栏名称: 小白学视觉
本公众号主要介绍机器视觉基础知识和新闻,以及在学习机器视觉时遇到的各种纠结和坑的心路历程。
目录
相关文章推荐
笔吧评测室  ·  华硕无畏 Pro 14 骁龙版 2025 ... ·  昨天  
笔吧评测室  ·  荣耀 MagicBook Pro 14 ... ·  2 天前  
笔吧评测室  ·  聊一台售后长达3年的一线笔记本 ·  2 天前  
笔吧评测室  ·  联想 YOGA 14 / X 和 YOGA ... ·  3 天前  
51好读  ›  专栏  ›  小白学视觉

PaddleSeg:车道线检测

小白学视觉  · 公众号  ·  · 2024-09-11 10:05

主要观点总结

该文章是关于车道线检测和分类模型的比赛任务说明和训练指南。主要介绍了数据集的特点、数据预处理、训练过程中需要注意的问题、类别不均衡问题的处理方法、DeepLabv3+模型的finetune、训练过程可视化和生成预测结果等步骤。

关键观点总结

关键观点1: 比赛任务和要求

参赛者需利用提供的训练数据设计车道线检测和分类模型,检测测试数据中车道线的具体位置和类别。

关键观点2: 数据集特点

数据集包括手机拍摄的道路图片,并标注了车道线的区域和类别。标注数据以灰度图方式存储,不同类别的车道线像素有不同的灰度值。

关键观点3: 数据预处理

为了节省显存,可以选择裁剪掉图片的上半部分,即天空部分。同时,需要注意调整类别权重以处理类别不均衡问题。

关键观点4: 训练过程中的注意事项

训练时需要注意默认PaddleSeg v0.6在Paddlepaddle 1.8.4的框架版本下的问题,以及使用适当的损失函数来处理类别不均衡问题。另外,DeepLabv3+模型的finetune也需要进行相应的设置。

关键观点5: 训练过程可视化和生成预测结果

通过配置logdir路径和修改配置文件,可以对训练过程进行监控,并生成预测结果。需要注意的是,不同分辨率的图片需要分开处理,修改配置文件中的EVAL_CROP_SIZE以及相应的VIS_FILE_LIST和TEST_FILE_LIST路径配置。


正文

点击上方 小白学视觉 ”,选择加" 星标 "或“ 置顶

重磅干货,第一时间送达

0.1 任务

要求参赛者利用提供的训练数据,设计一个车道线检测和分类模型,来检测测试数据中车道线的具体位置和类别。样例示范:

0.2 数据集描述


本次赛题数据集包括x张手机拍摄的道路图片数据,并对这些图片数据标注了车道线的区域和类别,其中标注数据以灰度图的方式存储。
标注数据是与原图尺寸相同的单通道灰度图,其中背景像素的灰度值为0,不同类别的车道线像素分别为不同的灰度值,具体如下表所示:



3. 数据处理

参考项目从头搭建无人车车道线检测挑战赛解决方案中提到:
通过仔细观察,我们发现这些数据有一个共同的特点,就是图片的上三分之一部分都是天空,是没有车道线存在的,知道了这点后,我们就可以进行一个裁剪的过程,一下子就可以节省下三分之一的显存,是不是很爽呢?这里我选择裁剪上方690个像素的高度。

在本次比赛的数据集中,这种现象同样存在,因此本文也采用截去天空的方式进行训练,省下内存空间。本文的做法是直接裁剪掉图片的上半部分。

3.1 裁剪效果

注:如果感觉裁剪幅度过大,读者可自行修改裁剪比例

4. 开始训练

4.1 注意事项

训练时需要注意,默认PaddleSeg v0.6在Paddlepaddle 1.8.4的框架版本下 paddle.enable_static() 这句代码会报错,解决办法就是将 pdseg/train.py 中这行代码注释掉;后面 pdseg/vis.py pdseg/eval.py 也需要进行相同操作。


4.2 类别不均衡问题处理

在PaddleSeg文档中,特别就类别不均衡问题的处理进行了说明:
在图像分割任务中,经常出现类别分布不均匀的情况,例如:工业产品的瑕疵检测、道路提取及病变区域提取等。
针对这个问题,您可使用Weighted softmax loss、Dice loss、Lovasz hinge loss和Lovasz softmax loss进行解决。
  • Weighted softmax loss
Weighted softmax loss是按类别设置不同权重的softmax loss。
通过设置 cfg.SOLVER.CROSS_ENTROPY_WEIGHT 参数进行使用。
默认为None. 如果设置为'dynamic',会根据每个batch中各个类别的数目,动态调整类别权重。也可以设置一个静态权重(list的方式),比如有3类,每个类别权重可以设置为[0.1, 2.0, 0.9]. 示例如下
SOLVER: CROSS_ENTROPY_WEIGHT: 'dynamic'
由于比赛是一个分类问题,因此参考 configs/lovasz_softmax_deeplabv3p_mobilenet_pascal.yaml 的配置方式,对 SLOVER 进行设置。
而在比赛基线项目中,也给出了类别权重的计算过程:

4.3 DeepLabv3+模型finetune

这里参考文档的DeepLabv3+模型使用教程进行设置,参考 config文件
https://gitee.com/paddlepaddle/PaddleSeg/blob/develop/tutorial/finetune_deeplabv3plus.md

5. 训练过程可视化

在可视化模块中配置 logdir 路径为 PaddleSeg/vdl_log_dir 可对训练过程进行监控

6. 生成预测结果

6.1 修改配置文件

这里注意要将不同分辨率的图片分开,然后修改配置文件中的:
  • EVAL_CROP_SIZE EVAL_CROP_SIZE: (1920, 1080) EVAL_CROP_SIZE: (1280, 720)
  • 对应的 VIS_FILE_LIST TEST_FILE_LIST 路径配置
  • BATCH_SIZE 建议改为1,否在显存可能不够用


6.2 修改 vis.py 使其将预测结果输出为单通道灰度图

其实就是将灰度图转伪彩色部分的代码注释掉:
In [10]
# 对test_list2.txt和test_list3.txt分别进行预测,result目录下就是可提交的图片文件
!python pdseg/vis.py --use_gpu --cfg ./configs/deeplabv3p_resnet50_vd_cityscapes.yaml --vis_dir result
预测可视化效果:

原文地址
https://aistudio.baidu.com/aistudio/projectdetail/1081298?channelType=1&channel=1

下载1:OpenCV-Contrib扩展模块中文版教程
在「小白学视觉」公众号后台回复:扩展模块中文教程即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。

下载2:Python视觉实战项目52讲
小白学视觉公众号后台回复:Python视觉实战项目即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。

下载3:OpenCV实战项目20讲






请到「今天看啥」查看全文