大数跨境

CVPR2026 SOTA|LaneLite车道线检测实战!细长标线曲线拟合、遮挡污损不断线、车载巡检实时识别SOTA

CVPR2026 SOTA|LaneLite车道线检测实战!细长标线曲线拟合、遮挡污损不断线、车载巡检实时识别SOTA AI与计算机视觉
2026-11-11
1
导读:园区道路巡检、自动驾驶感知,都绕不开一个基础问题:车道线在哪?和检测车辆行人不同,车道线是贴在地面上的细长结构,像素少、对比弱,弯道还是一条曲线。

园区道路巡检、自动驾驶感知,都绕不开一个基础问题:车道线在哪?和检测车辆行人不同,车道线是贴在地面上的细长结构,像素少、对比弱,弯道还是一条曲线。传统做法把它当普通语义分割来切,结果往往是线断成一截一截、弯道拟合不准。

今天分享的这篇 CVPR2026 论文 LaneLite,面向车载与监控视频流的车道线检测:输入前方道路图像,输出每条车道线的曲线参数和逐点坐标。模型把细长结构专门建模,用参数化曲线代替逐像素掩码,在 TuSimple 和 CULane 两个车道线基准上取得同量级模型领先的 F1,边缘设备可实时运行。

一、车道线检测难在哪

1.1 线细长、结构弱、占像素极少

车道线宽度通常只有几个像素,一条线在整张图里占比极低。普通分割网络按区域面积算损失,细长线的误差被大片路面淹没,模型很容易"忽略"它。这和检测一个人、一辆车那种块状目标完全不同。

1.2 透视变形与弯道曲线

同样一条直道,近宽远窄,远处缩成一个点;弯道在图像上是弧线,不是直线。把车道线当成矩形框或者直线拟合,弯道必然失真。需要模型既能处理透视压缩,又能输出平滑的曲线表示。

1.3 遮挡、磨损与阴影干扰

车辆行驶时挡住一段线,路面磨损、油污、阴影、积水反光都会让标线变淡甚至消失。被挡住的部分要靠上下文推断补全,而不是直接断线;阴影下的浅色线还容易被误判成路面纹理。

1.4 视频流要求连续且实时

车道线检测跑在视频流上,相邻帧之间线的位置应当连续平滑,不能这帧识别到、下帧突然消失又冒出来。同时车载和边缘巡检场景对帧率敏感,模型不能太重。

二、LaneLite 的三个核心设计

LaneLite 的整体思路:针对细长结构做专门特征增强,用参数化曲线表达车道线,再用帧间一致性保证视频流上的稳定输出。

2.1 细长结构感知特征

•骨架方向建模:在特征图上沿线的走向做长条卷积/方向注意力,强化沿线方向的连续性,压制横向噪声。

•细长样本损失加权:训练时对线像素上调损失权重,避免被大面积路面稀释。

•逐行锚点预测:按图像行方向采样锚点,预测每行上线的横向位置,天然贴合车道线"从上到下纵向延伸"的形态。

2.2 参数化曲线表示

不直接输出逐像素掩码,而是把每条车道线拟合成平滑曲线:

•曲线拟合:用多项式或贝塞尔曲线表达车道线走向,输出曲线参数而不是散点掩码。

•断线补全:被车辆、阴影遮挡的线段,由前后可见段的曲线趋势外推补全。

•实例区分:相邻两条车道线分别拟合各自曲线,避免两条线黏成一团。

消融实验显示,参数化曲线表示相比逐像素分割,弯道 F1 提升更明显,输出结果也更平滑、便于下游计算车道边界。

2.3 轻量主干与帧间一致性

•轻量骨干:深度可分离卷积主干,压缩参数量,满足实时帧率。

•帧间特征关联:相邻帧的车道线特征做短时匹配,保证同一条线跨帧编号和位置连续。

•平滑约束:对曲线参数加时序平滑损失,减少结果在帧间的抖动跳变。

三、技术架构拆解

模块

做什么

关键设计

轻量特征主干

提取道路多尺度特征

深度可分离卷积,兼顾实时与细节

细长结构增强

强化沿线方向连续性

方向注意力 + 逐行锚点 + 线像素加权损失

曲线拟合头

输出参数化车道线

多项式/贝塞尔拟合,遮挡段趋势外推

帧间跟踪模块

保证视频流结果连续

相邻帧特征匹配 + 时序平滑约束

工程要点:

•输出形式:每条线的曲线参数 + 逐点坐标,可直接投影到俯视图计算车道宽度、可行驶区域。

•部署:模型量化后可跑在边缘巡检盒子或车载域控上。

•场景扩展:除行车道线,斑马线、停止线、引导箭头等道路标线可作为附加类别扩展。

四、和主流方法的横向对比

在 TuSimple(高速直道为主)和 CULane(复杂城市道路)两个基准上对比(F1 越高越好;数值为示意口径,复现以官方划分为准):

方法

TuSimple F1↑

CULane F1↑

参数量(M)

表示方式

语义分割类

中等

中等

较重

逐像素掩码

锚点回归类

较好

中等偏上

中等

逐行锚点

参数化曲线类

较好

较好

中等

曲线参数

LaneLite

领先

领先

轻量

锚点 + 曲线拟合

对比结论:纯分割方法在弯道路段容易断线;锚点方法速度快但曲线不平滑。LaneLite 把逐行锚点定位和曲线拟合结合,在复杂道路(CULane)上提升更明显,同时保持轻量。

五、快速上手:核心推理框架

python
LaneLite 车道线检测核心流程
import torch
import torch.nn as nn

class LaneLite(nn.Module):
    def __init__(self):
        super().__init__()
        self.backbone = LightweightBackbone()      # 轻量主干
        self.anchor_head = RowAnchorHead()         # 逐行锚点
        self.curve_fit = CurveFittingHead()        # 曲线参数拟合
        self.tracker = LaneTracker()                # 帧间跟踪

    def forward(self, image, prev_lanes=None):
        feat = self.backbone(image)

        # 1. 逐行预测每条线的横向位置
        anchors = self.anchor_head(feat)

        # 2. 锚点拟合成平滑曲线,遮挡段外推补全
        lanes = self.curve_fit(anchors)

        # 3. 帧间匹配,保持编号与位置连续
        if prev_lanes is not None:
            lanes = self.tracker.match(lanes, prev_lanes)
        return lanes

# 使用示例
model = LaneLite().eval()
prev = None
with torch.no_grad():
    for frame in stream_frames("巡检视频.mp4"):
        lanes = model(preprocess(frame), prev)
        prev = lanes
        for lane in lanes:
            pts = lane.curve_to_points(y_range=(0, 720))
            draw_curve(frame, pts, color=(0, 255, 0))
        save_frame(frame, "lane_result.jpg")

落地提示:车道线检测结果要做透视转换到俯视图才好用(算车距、车道宽度)。鱼眼或广角相机需要先做标定校正,否则曲线参数会带畸变误差。

六、毕设/竞赛拓展方向

6.1 园区道路巡检标线磨损识别

在车道线检测基础上判断标线是否磨损、缺失、模糊,输出养护建议。和道路巡检业务贴合,落地价值明确。

6.2 可行驶区域与道路边界估计

从车道线扩展到道路边界、路沿、可通行区域分割,组成完整的道路感知结果。可和之前的全景分割方向结合。

6.3 车道线 + 车辆联合感知

把车道线检测和车辆检测结果对齐到同一坐标系,判断车辆是否压线、是否在对应车道内。多任务联合,系统完整度高。

6.4 弱监督少样本车道线标注

研究用少量逐线标注 + 大量无标注视频训练,降低标注成本。偏方法论,适合想做模型改进的同学。

七、写在最后

车道线检测提醒我们:选对表示方式往往比堆模型更重要。线状目标用曲线参数表达,块状目标用框表达,区域目标用掩码表达——让输出形式匹配目标本身的几何形态,问题会简单很多。

LaneLite 给我的启发是:面对被大面积背景淹没的细长结构,训练目标权重要向它倾斜;推理表示要贴合它的形态(曲线而非散点)。这两点做到位,轻量模型也能拿到不错的效果。

做毕设的同学如果选这个方向,建议先在 TuSimple 小数据上跑通"图像 → 曲线叠加"的可视化,再挑战 CULane 这类复杂场景。曲线和原始画面叠加后的效果非常直观,演示时一眼能看出好坏。

【声明】内容源于网络
0
0
AI与计算机视觉
专注分享于计算机视觉和人工智能方向相关内容,包括不限于图像分类、目标检测、语义分割、基础编程、面试面经、生活启示录等,欢迎大家关注与学习。
内容 150
粉丝 0
AI与计算机视觉 专注分享于计算机视觉和人工智能方向相关内容,包括不限于图像分类、目标检测、语义分割、基础编程、面试面经、生活启示录等,欢迎大家关注与学习。
总阅读3.7k
粉丝0
内容150