算法评价指标-车道线检测

算法评价指标

准确率
在这里插入图片描述

C i m C_{im} Cim正确预测的车道点数量 , S i m S_{im} Sim 真实标签中的车道点数量

当预测的与实际的车道线之间距离小于设定阈值时,认为该车道点预测正确

误检率 F P FP FP
在这里插入图片描述

漏检率 F N FN FN
在这里插入图片描述
F p r e d F_{pred} Fpred为预测错误的车道线数量, N p r e d N_{pred} Npred为预测的车道线总数量, M p r e d M_{pred} Mpred 没有预测到但真实存在的车道线数量, N g t N_{gt} Ngt 标签中所有的车道线数量

F 1 F_1 F1Score

是统计学中用来衡量二分类模型精确度的一种指标。它同时兼顾了分类模型的精确率和召回率。 F 1 F_1 F1分数可以看作是模型精确率和召回率的一种调和平均,它的最大值是1,最小值是0。

F 1 F_1 F1分数,又称平衡F分数(balanced F Score),它被定义为精确率和召回率的调和。
在这里插入图片描述
召回率(recall): 该类样本有多少被找出来了(召回了多少)
精确率(Precision): 你认为的该类样本,有多少猜对了(猜得精确性如何)
来源: https://www.zhihu.com/question/19645541张俊博

CULane用的是IoU
在这里插入图片描述在这里插入图片描述

Dice 系数计算示例

dice_loss
参考链接: https://www.aiuai.cn/aifarm1159.html
dice_loss参考博客:https://zhuanlan.zhihu.com/p/269592183

Dice coefficient

dice loss 来自文章VNet(V-Net: Fully Convolutional Neural Networks for Volumetric Medical Image Segmentation),旨在应对语义分割中正负样本强烈不平衡的场景。dice loss 来自 dice coefficient,是一种用于评估两个样本的相似性的度量函数,取值范围在0到1之间,取值越大表示越相似。dice coefficient定义如下:

在这里插入图片描述
其中 ∣ X ⋂ Y ∣ |X \bigcap Y| XY是X和Y之间的交集, ∣ X ∣ |X | X ∣ Y ∣ |Y| Y分表表示X和Y的元素的个数,分子乘2为了保证分母重复计算后取值范围在 [0,1]之间.

因此dice loss可以写为:因此dice loss可以写为:
在这里插入图片描述

语义分割问题而言,X - GT 分割图像, Y - Pred 分割图像.

Dice 系数计算示例

预测的分割图的 dice 系数计算,首先将 ∣ X ⋂ Y ∣ |X \bigcap Y| XY近似为预测图与 GT 分割图之间的点乘,并将点乘的元素结果相加:

Pred 预测分割图与 GT 分割图的点乘:
在这里插入图片描述

逐元素相乘的结果元素的相加和:
在这里插入图片描述

关于 |X| 和 |Y| 的量化计算,可采用直接简单的元素相加;也有采用取元素平方求和的做法:
在这里插入图片描述
:dice loss 比较适用于样本极度不均的情况,一般的情况下,使用 dice loss 会对反向传播造成不利的影响,容易使训练变得不稳定.

### 使用 PyTorch 实现车道线检测 车道线检测是智能驾驶技术中的重要组成部分之一,能够帮助车辆理解道路结构并安全行驶。通过使用深度学习框架如 PyTorch 可以构建高效的车道线检测系统。 #### 数据准备 为了训练一个有效的车道线检测模型,首先需要收集带有标注的道路图像数据集。这些图片应该覆盖不同的天气条件、光照情况以及各种路况下的场景。对于每张输入图像,还需要有对应的二值化掩码图来指示哪些像素属于车道线[^1]。 #### 构建网络架构 可以采用 U-Net 或者其他类似的编码解码器结构来进行语义分割任务,在此过程中将普通卷积层替换为膨胀卷积可以帮助扩大感受野而不增加参数量。此外,还可以借鉴 ResNet 的残差模块设计更深层次的特征提取部分[^2]。 ```python import torch.nn as nn class LaneDetectionModel(nn.Module): def __init__(self): super(LaneDetectionModel, self).__init__() # 定义编码器(Encoder) self.encoder = ... # 定义解码器(Decoder),注意这里要加入跳跃连接以便更好地恢复空间信息 self.decoder = ... def forward(self, x): encoded_features = self.encoder(x) output = self.decoder(encoded_features) return output ``` #### 训练过程 定义损失函数时可以选择交叉熵损失或者 Dice Loss 来衡量预测结果与真实标签之间的差异;同时设置合适的优化算法比如 Adam 并调整初始学习率等超参有助于加快收敛速度。另外值得注意的是由于实际应用场景中正负样本比例严重失衡因此可能还需引入加权机制使得模型更加关注于少数类即车道线区域的学习效果。 #### 测试评估 完成上述工作之后就可以利用测试集验证所开发系统的性能指标了,通常会计算 IoU (Intersection over Union),Precision 和 Recall 等统计学度量标准用于评价最终成果的好坏程度。 ```python from torchvision import transforms from PIL import Image import numpy as np def predict_lane(image_path, model): transform = transforms.Compose([ transforms.Resize((input_height, input_width)), transforms.ToTensor(), ]) image = Image.open(image_path).convert('RGB') tensor_image = transform(image).unsqueeze(0) # 增加批次维度 with torch.no_grad(): prediction = model(tensor_image) predicted_mask = torch.argmax(prediction.squeeze(), dim=0).numpy() return predicted_mask.astype(np.uint8) if __name__ == '__main__': test_img = 'path_to_test_image' lane_model = ... # 加载已训练好的模型权重文件 result = predict_lane(test_img, lane_model) ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值