151 lines
4.0 KiB
Markdown
151 lines
4.0 KiB
Markdown
|
|
# BEV分割类别说明 - Divider (分隔线)
|
|||
|
|
|
|||
|
|
## Divider 类别定义
|
|||
|
|
|
|||
|
|
根据nuScenes数据集和BEVFusion代码,**Divider**(分隔线)类别包含以下两种道路标线:
|
|||
|
|
|
|||
|
|
### 1. Road Divider(道路分隔线)
|
|||
|
|
- **定义**: 分隔对向车流的道路中央分隔线
|
|||
|
|
- **典型特征**:
|
|||
|
|
- 通常是双黄线或单黄线
|
|||
|
|
- 位于道路中央
|
|||
|
|
- 分隔相反方向的车道
|
|||
|
|
- 一般禁止跨越
|
|||
|
|
|
|||
|
|
### 2. Lane Divider(车道分隔线)
|
|||
|
|
- **定义**: 分隔同向车道的车道分界线
|
|||
|
|
- **典型特征**:
|
|||
|
|
- 通常是白色虚线或实线
|
|||
|
|
- 位于同向车道之间
|
|||
|
|
- 用于引导车辆保持在车道内
|
|||
|
|
- 虚线可以变道,实线不能跨越
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 代码映射关系
|
|||
|
|
|
|||
|
|
在 `mmdet3d/datasets/pipelines/loading.py` 中的定义:
|
|||
|
|
|
|||
|
|
```python
|
|||
|
|
elif name == "divider":
|
|||
|
|
mappings[name] = ["road_divider", "lane_divider"]
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
这意味着训练时,nuScenes地图中的 `road_divider` 和 `lane_divider` 两个图层会被**合并**为一个 `divider` 类别进行学习。
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 为什么 Divider 难度最高?
|
|||
|
|
|
|||
|
|
### 训练困难的原因
|
|||
|
|
|
|||
|
|
1. **细长结构难以捕捉**
|
|||
|
|
- 分隔线通常只有10-20cm宽
|
|||
|
|
- 在BEV图像中只占极少数像素
|
|||
|
|
- 容易被背景淹没
|
|||
|
|
|
|||
|
|
2. **类别不平衡严重**
|
|||
|
|
```
|
|||
|
|
场景中像素分布(典型值):
|
|||
|
|
- Drivable Area: ~40% (背景大,易学习)
|
|||
|
|
- Divider: ~1-2% (极少,难学习) 🔴
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
3. **视觉特征不明显**
|
|||
|
|
- 从多视角相机俯视投影时容易丢失细节
|
|||
|
|
- LiDAR点云在道路标线上反射较弱
|
|||
|
|
- 需要精确的空间对齐
|
|||
|
|
|
|||
|
|
4. **合并了两种不同的线**
|
|||
|
|
- Road Divider(双黄线)和 Lane Divider(白虚线)
|
|||
|
|
- 外观、宽度、间隔都不同
|
|||
|
|
- 增加了类内差异性
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 当前训练表现
|
|||
|
|
|
|||
|
|
### Phase 4A Stage 1 - Epoch 1 (73.8%)
|
|||
|
|
|
|||
|
|
| 类别 | Dice Loss | 难度 | 状态 |
|
|||
|
|
|------|-----------|------|------|
|
|||
|
|
| Drivable Area | 0.12 | 简单 | ✅ 优秀 |
|
|||
|
|
| Ped Crossing | 0.27 | 中等 | ✅ 良好 |
|
|||
|
|
| Walkway | 0.25 | 中等 | ✅ 良好 |
|
|||
|
|
| Stop Line | 0.39 | 困难 | ⚠️ 改善中 |
|
|||
|
|
| Carpark Area | 0.23 | 中等 | ✅ 优秀 |
|
|||
|
|
| **Divider** | **0.59** | **极难** | 🔴 **最困难** |
|
|||
|
|
|
|||
|
|
**Divider** 的 Dice Loss 是所有类别中最高的(0.59),说明模型在学习这个类别时确实遇到了较大困难。
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 改进效果
|
|||
|
|
|
|||
|
|
尽管困难,但通过**600×600高分辨率 + 4层Decoder + Deep Supervision**的Phase 4A配置,Divider已经有了显著改善:
|
|||
|
|
|
|||
|
|
### 改善趋势
|
|||
|
|
```
|
|||
|
|
训练起始 (Iter 50): Dice Loss = 0.96
|
|||
|
|
当前状态 (Iter 11400): Dice Loss = 0.59
|
|||
|
|
下降幅度: ↓38.5% ⭐
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 性能预测
|
|||
|
|
```
|
|||
|
|
Baseline (Epoch 23, 400×400): IoU = 0.19
|
|||
|
|
Epoch 1预估 (600×600): IoU = 0.23 (+21%) ⭐
|
|||
|
|
Epoch 10预估 (600×600): IoU = 0.29 (+52%) ⭐⭐
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
虽然绝对值仍然较低,但相对改进幅度是**所有类别中最大的**!
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 实际应用影响
|
|||
|
|
|
|||
|
|
### Divider 检测的重要性
|
|||
|
|
|
|||
|
|
1. **车道保持辅助**: 识别车道分界线,防止偏离
|
|||
|
|
2. **变道决策**: 判断虚线/实线,决定是否可以变道
|
|||
|
|
3. **对向车流判断**: 识别道路中央分隔线,避免驶入对向车道
|
|||
|
|
4. **高精地图构建**: 准确的车道级地图需要精确的分隔线
|
|||
|
|
|
|||
|
|
### 性能要求
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
实际应用场景推荐值:
|
|||
|
|
- 辅助驾驶 (L2): IoU ≥ 0.35
|
|||
|
|
- 自动驾驶 (L4): IoU ≥ 0.50
|
|||
|
|
- 高精地图: IoU ≥ 0.60
|
|||
|
|
|
|||
|
|
当前状态:
|
|||
|
|
- Epoch 1预估: IoU = 0.23 (仍需提升)
|
|||
|
|
- Epoch 10预估: IoU = 0.29 (接近L2要求)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 可视化示例
|
|||
|
|
|
|||
|
|
在可视化代码中,Divider 被标记为:
|
|||
|
|
- **颜色**: 黄色/褐色
|
|||
|
|
- **RGB**: [160, 82, 45] 或 [255, 255, 0]
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 总结
|
|||
|
|
|
|||
|
|
**Divider(分隔线)** = **Road Divider(道路分隔线)** + **Lane Divider(车道分隔线)**
|
|||
|
|
|
|||
|
|
- ✅ 包含了道路中央的对向分隔线和同向车道分界线
|
|||
|
|
- 🔴 是6个BEV分割类别中**最难学习**的类别
|
|||
|
|
- ⭐ 但通过Phase 4A的改进,预计能获得**52%的性能提升**
|
|||
|
|
- 🎯 目标是将IoU从0.19提升到0.29+,逐步接近实用水平
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
*更新时间: 2025-11-01 21:40 UTC*
|
|||
|
|
|
|||
|
|
|