📌 1、数据集概述
CULane(CU Lane Detection Dataset)是一个大规模、具有挑战性的交通车道检测数据集,主要面向自动驾驶领域的学术研究。该数据集由香港中文大学的研究团队发布,配套论文为2018年AAAI发表的《Spatial As Deep: Spatial CNN for Traffic Scene Understanding》(SCNN论文)。
该数据集由安装在北京不同驾驶员操控的六辆不同车辆上的摄像头采集,收集了超过55小时的视频素材,从中提取了133,235帧图像,并采用三次样条曲线对所有可见车道线进行人工标注。在车道线被车辆遮挡或无法看到的情况下,标注人员仍会根据上下文对被遮挡的车道进行标注------这极大增强了模型在实际场景中的鲁棒性。
📊 2、数据集规模与划分
2.1 基础规模
| 数据集 | 总数据量 | 训练集 | 验证集 | 测试集 | 分辨率 | 最大车道数 |
|---|---|---|---|---|---|---|
| CULane | 133,235 | 88,880 | 9,675 | 34,680 | 1640×590 | ≤4 |
| TuSimple | 6,408 | 3,268 | 358 | 2,782 | 1280×720 | ≤5 |
CULane的规模远大于另一常用数据集TuSimple,更适合训练深度学习模型。
CULane 原始图尺寸 1640×590,标注点的纵坐标 h(从顶往下):
- 最大值(最下方):590
- 最小值(最上方):250
也就是所有车道线标注点的 y 坐标都在 [250, 590] 之间,步长 10 像素:590, 580, 570, ..., 250。
python
np.linspace(250, 590, 35)
2.2 九个测试场景分类
CULane的测试集根据不同的驾驶场景和光照条件划分为9个类别,旨在全面评估算法在各种复杂环境下的表现:
| 类别名称 | 描述 | 测试文件 |
|---|---|---|
| ☀️ Normal | 正常驾驶场景 | test0_normal.txt |
| 👥 Crowd | 密集交通场景 | test1_crowd.txt |
| 💡 Hlight | 高对比度/强光照 | test2_hlight.txt |
| 🌑 Shadow | 阴影区域 | test3_shadow.txt |
| ➖ Noline | 车道线磨损/不清晰 | test4_noline.txt |
| ⬆️ Arrow | 带有箭头标记的车道 | test5_arrow.txt |
| 🌀 Curve | 弯道区域 | test6_curve.txt |
| ✖️ Cross | 道路交叉口 | test7_cross.txt |
| 🌙 Night | 夜间行驶 | test8_night.txt |
📁 3、数据集文件结构
下载CULane数据集后,目录结构如下所示:

bash
CULane/
├── list/ # 数据划分与标注列表(核心配置文件)
│ ├── train_gt.txt # 训练集:图像路径 分割标签路径 4车道存在标记(0/1)
│ ├── val.txt # 验证集:仅包含图像路径
│ ├── test.txt # 测试集:仅包含图像路径
│ └── test_split # 9类测试场景的拆分列表(方便单独评估某类场景)
├── laneseg_label_w16/ # 语义分割标签(训练/验证集专用)
│ ├── driver_23_30frame/ # 与下方对应driver目录一一对应
│ ├── driver_161_90frame/
│ └── driver_182_30frame/
├── driver_23_30frame/ # 训练/验证集:原始图像+车道线关键点标注
│ ├── 00000.jpg # 原始图像
│ ├── 00000.lines.txt # 车道线关键点标注文件
│ └── ...
├── driver_161_90frame/ # 训练/验证集,结构同上
├── driver_182_30frame/ # 训练/验证集,结构同上
├── driver_37_30frame/ # 测试集,结构同上(无分割标签)
├── driver_100_30frame/ # 测试集,结构同上
└── driver_193_90frame/ # 测试集,结构同上
3.1 车道线关键点标注(.lines.txt)
每个原始图像(.jpg)对应一个同名的.lines.txt文件,用于标注车道线的像素坐标,格式简单易懂,具体规则如下:
-
每行代表一条车道线,格式为:x1 y1 x2 y2 ... xn yn(均为像素坐标,y轴向下递增,符合图像坐标系);
-
标注规则:最多标注4条主车道线(自车左侧2条、右侧2条),忽略其他车道;遮挡或不可见的车道线,会根据上下文补全标注,障碍物另一侧的车道线不标注;
-
标注密度:采用三次样条曲线插值,关键点间隔约10像素,主要标注图像下半部分(车道线集中区域),兼顾精度与效率。
示例(00000.lines.txt):
bash
233.127 590 251.401 580 268.894 570 ... # 第1条车道线(左1)
1128.54 590 1118.15 580 1107.16 570 ... # 第2条车道线(左2)
1665.75 460 1617.48 450 1569.5 440 ... # 第3条车道线(右1)
1687.15 460 1637.13 450 1587.12 440 ... # 第4条车道线(右2)
3.2 语义分割标签(laneseg_label_w16/)
分割标签为单通道灰度图,是为分割类车道线模型(如SCNN、ERFNet)专门设计的,特点如下:
-
分辨率:103×36像素,是原始图像(1646×590)的16倍下采样(1646÷16≈103,590÷16≈36),减少计算量;
-
像素值定义:0代表背景,1~4分别代表4条主车道线(对应自车左1、左2、右1、右2),与关键点标注的车道线顺序一致;
-
注意:测试集不提供分割标签,仅提供关键点标注(.lines.txt),若需评估分割模型,需提交结果至官方服务器。
3.2 列表文件(list/)
list目录下的文件是数据集的"配置入口",用于快速读取训练、验证、测试数据,核心文件解读:
-
train_gt.txt:每行包含3部分内容------图像路径、分割标签路径、4个车道存在标记(0=不存在,1=存在),格式为:img_path seg_label_path l1 l2 r1 r2;
-
val.txt、test.txt:仅包含图像路径,无需额外标注信息,方便快速加载验证、测试数据;
-
test_*.txt:将测试集按9类场景拆分,如test_night.txt(夜间场景)、test_curve.txt(弯道场景),可单独评估模型在某类场景下的性能。
📈 4、评估指标与方法
CULane采用基于IoU(Intersection over Union) 的评估方法,这是车道检测领域最权威的评价标准之一。
4.1 核心指标
-
TP (True Positive):正确检测的车道线(IoU > 阈值)
-
FP (False Positive):错误检测的车道线
-
FN (False Negative):漏检的车道线
-
Precision = TP / (TP + FP)
-
Recall = TP / (TP + FN)
-
F1分数 = 2 × Precision × Recall / (Precision + Recall)
4.2 IoU计算方法
CULane官方提供两种IoU计算方式:
-
离散方法(官方):将车道线渲染为二值掩码,计算像素级IoU
-
连续方法:将车道线表示为带缓冲区的几何线串,计算几何IoU
默认IoU阈值为0.5,通常在多个阈值下进行评估。
⚖️ 5、CULane vs TuSimple
| 对比维度 | CULane | TuSimple |
|---|---|---|
| 📏 数据规模 | 133,235张 | 6,408张 |
| 🎨 场景多样性 | 9种复杂场景 | 高速公路为主 |
| 🔥 挑战程度 | 极高 | 中等 |
| 🛣️ 车道线类型 | 双向四车道 | 最多5条 |
| 📊 评价指标 | F1分数 | 准确率 |
CULane更适合验证算法的鲁棒性 ,而TuSimple更适合快速验证算法可行性。
🚀 6、典型模型性能参考
以下是几种先进方法在CULane上的F1分数表现:
| 方法 | CULane F1分数 |
|---|---|
| 基础行锚分类 | 64.72 |
| 轴注意力引导 | 73.05 |
| 最先进水平 | ~75+ |
⚠️ 7、使用注意事项
7.1 标注更新
请注意,2018年4月16日之前的原始标注存在错误。如需使用,请下载官方提供的"Annotations_new.tar.gz"更新文件覆盖原始标注。
7.2 框架差异
在常见检测框架(如Ultra-Fast-Lane-Detection)中,CULane被处理为最多4条车道线,使用35个行锚点(y坐标)和200个单元格/行锚点。
🛣️8、各场景的图片
8.1 正常驾驶场景

8.2 密集交通场景

8.3 高对比度/强光照

8.4 阴影区域

8.5 车道线磨损/不清晰

8.6 带有箭头标记的车道

8.7 弯道区域

8.8 道路交叉口

8.9 夜间行驶
