车道线检测-LaneNet
本示例基于BPU运行 LaneNet 模型,实现车道线的实例分割与二值分割,并将结果图像保存到本地,本示例代码位于/app/cdev_demo/bpu/06_lane_detection_sample/01_lanenet/目录下。
模型说明
-
简介:
LaneNet 是一种用于实时车道线检测的语义分割模型。LaneNet 在图像预处理上采用归一化与标准化方式,适合自动驾驶与 ADAS 系统中的道路场景分析。本示例使用的是量化版本模型 lanenet256x512.hbm,支持 BPU 推理加速。
-
HBM模型名称:lanenet256x512.hbm
-
输入格式:RGB,大小为 256x512,归一化到 [0,1] 后进行标准化
-
输出:
-
instance_seg_logits:用于区分不同车道线的 3 通道图
-
binary_seg_pred:二值分割结果,表示车道区域的位置
-
功能说明
-
模型加载
加载 LaneNet 模型,自动解析模型的部分元数据。
-
输入预处理
将输入图像转换为 RGB 格式,调整到 256x512 尺寸,并使用 ImageNet 均值与标准差进行归一化和标准化处理,最终转为 NCHW 格式并添加 batch 维度。
-
推理执行
使用 .infer() 方法进行推理,输出包括 instance 特征图和二值掩膜图。
-
结果后处理
对输出 tensor 进行 reshape 与归一化:
-
instance_seg_logits:输出三通道图像用于可视化每个车道实例
-
binary_seg_pred:输出单通道二值图,用于提取车道区域
-
环境依赖
在编译运行前,请确保安装以下依赖:
sudo apt update
sudo apt install libgflags-dev
目录结构
.
|-- CMakeLists.txt # CMake 构建脚本:目标/依赖/包含与链接配置
|-- README.md # 使用说明(当前文件)
|-- inc
| `-- lanenet.hpp # LaneNet 推理封装头文件:加载/预处理/推理/后处理接口
`-- src
|-- lanenet.cc # LaneNet 推理实现:前后处理与推理调用
`-- main.cc # 程序入口:解析参数→完整流程→保存 instance/binary 结果