用语义分割来做车道线检测

       语义分割这几年发展真的快,去年暑假我用enet分割车道线,效果还行,速度很快,前几天逛github又发现一大堆更好的网络,erfnet、shufflenet等,都是一些变种的网络,看他们论文的结果都是一个比一个好。这里先记录一下之前跑enet的结果。

     模型是用的GitHub上TensorFlow版本的enet。数据集用的图森。下面是以前训练的结果:

INFO:tensorflow:Final Training Accuracy: 0.97805065
INFO:tensorflow:Final Training Mean IOU: 0.7412362
INFO:tensorflow:Final Validation Accuracy: 0.9541565
INFO:tensorflow:Final Validation Mean IOU: 0.618093

右边是标签,左边是预测,结果貌似还行。训练途中遇到一个坑!代码里提供的enet自带class weight训练效果贼差,用MFB平衡的class weight效果也不行,最后用1:1还好一些。分割完后处理部分还是很难处理,你透视变换+车道线聚类+车道线拟合是常见方法,主要难解决的问题是:逆透视变换受坡度影响,多车道聚类策略受路宽影响(每条路并不是都是3.75m宽),弯道拟合。这三个问题很难兼顾啊。

推荐使用SCNN,github上有代码

 

 

 

 

使用YOLOv8进行道路裂缝检测,并以PNG图像作为语义分割掩码,可按以下方式操作: #### 数据集准备 将道路裂缝的图像和对应的PNG格式语义分割掩码组织成合适的目录结构。YOLOv8通常要求数据集具有特定的目录结构,例如: ```plaintext dataset/ ├── images/ │ ├── train/ │ │ ├── image1.png │ │ ├── image2.png │ │ └── ... │ └── val/ │ ├── image3.png │ ├── image4.png │ └── ... └── labels/ ├── train/ │ ├── image1.png │ ├── image2.png │ └── ... └── val/ ├── image3.png ├── image4.png └── ... ``` 其中,`images`目录存放道路裂缝的原始图像,`labels`目录存放对应的PNG格式语义分割掩码。 #### 配置数据集文件 创建一个YAML文件来配置数据集,示例如下: ```yaml train: path/to/dataset/images/train val: path/to/dataset/images/val nc: 1 # 类别数量,这里假设只有裂缝一个类别 names: ['crack'] ``` #### 训练模型 使用YOLOv8的Python API进行训练,示例代码如下: ```python from ultralytics import YOLO # 加载预训练模型 model = YOLO('yolov8n-seg.pt') # 训练模型 results = model.train( data='path/to/dataset.yaml', epochs=100, imgsz=640 ) ``` #### 评估模型 训练完成后,可以使用验证集评估模型的性能: ```python # 评估模型 metrics = model.val() print(metrics) ``` #### 推理和结果可视化 使用训练好的模型对新的道路图像进行推理,并可视化分割结果: ```python # 加载新图像 new_image = 'path/to/new_image.png' # 进行推理 results = model.predict(source=new_image) # 可视化结果 for r in results: r.plot() ```
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值