车道线检测CLRNet算法复现在Tusimple数据集测试demo
0 写在前面
分享最近在车道线检测方面的工作,详细跟大家说下我的配置环境和过程,欢迎自动驾驶的朋友来交流学习,助力自动驾驶早日落地。
分享一篇今年CVPR车道线检测方向的新工作——CLRNet: Cross Layer Refinement Network for Lane Detection,是自动驾驶创业公司飞布科技和浙江大学合作完成的。
参考代码:https://github.com/Turoad/clrnet
参考原文:https://arxiv.org/abs/2203.10350
介绍:车道线检测任务是一种高次层次信息都依赖的任务,本篇文章中提出了一种级联优化(从高层次的特征到低层次的特征)的车道线检测算法,极大限度利用了高低维度的特征去优化车道线在高分辨率下的预测准确度。不同与之前的LaneeATT中直接特征index的方案,提出了基于双线性采样的线型RoI提取算子(ROIGather)
车道线检测是无人驾驶系统感知模块的重要功能,主要由搭载在车身上的视觉摄像头来完成,对于车道线检测任务,CNN网络的高层次语义信息具有较强的抽象表达能力,可以更加准确判别是否为车道线。而低层次特征中包含较为丰富的纹理信息,可以帮助车道线进行精确定位。使用不同的特征级别对于准确的车道检测非常重要,但这方面的研究仍然不足,并且在港口、城市道路等真实场景中,车道线经常存在破损、被遮挡等情况。为此,文章提出了跨层优化网络(CLRNet),首先检测具有高级语义特征的车道,然后基于低级特征进行细化,充分利用车道检测中的高级和低级特征,提出了ROIGather来收集全局上下文信息,进一步增强了车道的特征表示。此外,设计了整体维度的Lane IoU loss来约束整体车道线的回归精度。
配置环境
1.Prerequisites Installation:
Only test on Ubuntu18.04 and 20.04 with:
Python >= 3.8 (tested with Python3.8)
PyTorch >= 1.6 (tested with Pytorch1.6)
CUDA (tested with cuda10.2)
Other dependencies described in requirements.txt
2.
Clone this repository:
git clone https://github.com/Turoad/clrnet
3.Create a conda virtual environment and activate it (conda is optional)
conda create -n clrnet python=3.8 -y conda activate clrnet
- 安装pytorch,基于cuda10.2安装1.9.1
conda install pytorch==1.9.1 torchvision==0.10.1 torchaudio==0.9.1 cudatoolkit=10.2 -c pytorch
- python setup.py build develop
报错:ImportError: cannot import name ‘nms_impl’ from partially initialized module ‘lanedet.ops’ (most likely due to a circular import)
分析:没有安装setup.py
4.准备Tusimple数据集
数据目录如下所示:
由于Tusimple数据没有提供语义分割标签,所以需要自己准备
打开终端,执行:
python tools/generate_seg_tusimple.py --root data/Tusimple
生成对应的seg_label
5.Getting Started
For training, run:
python main.py configs/clrnet/clr_resnet34_tusimple.py --gpus 0
For testing, run:
python main.py configs/clrnet/clr_resnet18_tusimple.py --validate --load_from tusimple_r18.pth --gpus 1
6.Visualization
run:
python main.py configs/clrnet/clr_resnet18_tusimple.py --validate --load_from tusimple_r18.pth --gpus 1 --view
生成的result在work_dirs文件夹里面,如下图所示:
效果好的可视化示例:
7.视频demo(自己训练测试的)
动态-哔哩哔哩https://t.bilibili.com/734992612459544576?share_source=pc_native
【CVPR2022车道线检测SOTA工作CLRNet在Tusimple数据集训练测试demo,助力自动驾驶早日落地】https://www.bilibili.com/video/BV1QG4y1G7X9?vd_source=ee36d11fdc4ead2bc0650f7fd81063b1
8.车道线检测相关工作
当前的基于CNN的车道线检测方案主要分为以下三类:基于分割的车道线检测、基于anchor的车道线检测、基于曲线参数化拟合的车道线检测。
- 基于分割的方案由于需要在整张图上进行逐像素的预测且没有将车道线当做一个完整单元,所以往往比较ineffective and time-consuming。
- 基于anchor的方案中,在一些复杂场景中的起点很难识别,这造成相对欠佳的性能表现。
- 基于参数化拟合的方案虽然回归更少的参数,但对于预测的参数较为敏感,如高阶系数的错误预测可能造成车道线形状的变化。尽管基于参数化的方案有更快的推理速度,但在精度上有一定的瓶颈。
最后,写作能力也有限,有不对的地方欢迎大家批评指正!
车道线检测CLRNet算法复现在Tusimple数据集测试demo相关推荐
- 车道线检测相关算法介绍
车道线检测是计算机视觉领域的一个重要应用,常见的车道线检测算法包括以下几种: 1.基于边缘检测的算法 该算法基于边缘检测原理,先对图像进行灰度化处理,然后使用Canny边缘检测算法提取边缘信息.最后, ...
- 车道线检测laneatt算法实战CULane Datasets、Tusimple数据集——安装运行训练步骤
简单记录一下. 1.配置.训练步骤 可以新建一个虚拟环境,专门跑laneatt算法,方便管理. 新建之后切换到该虚拟环境(博主的是叫laneatt)执行: conda instasll pytorch ...
- 一个3D车道线检测方法PersFormer及其开源OpenLane数据集
来源丨计算机视觉深度学习和自动驾驶 arXiv上2022年3月论文"PersFormer: 3D Lane Detection via Perspective Transformer and ...
- 论文解析:基于激光雷达的车道线检测 LLDN-GFC---K-Lane: Lidar Lane Dataset and Benchmark for Urban Roads and Highways
1.摘要 车道检测功能是检测本车道和相邻车道的准确位置和曲率,为路径规划功能提供必要的输入. 出发点: 随着大量的基于图像的车道线检测数据集出现,基于摄像头的车道线检测网络发展迅速,但这些算法依赖于图 ...
- 车道线检测2022新工作整理,2D、3D都有
车道线检测是自动驾驶中一项基础而重要的任务,学术和工业界一直投入了大量的工作.小汤也一直对车道线检测任务感兴趣,并在公司开发过相关功能.也分享过一些相关的文章: 相关链接(点击进入): 车道线检测综述 ...
- 基于边缘检测与Hough变换的车道线检测
基于边缘检测与Hough变换的车道线检测 第一章:绪论 1.1 研究意义及背景 高速公路的通行里程是一个国家发展水平的重要标志之一.高速公路具有车辆通行能力大.交通事故少.经济效益高的特点,它的不断发 ...
- 车道线检测分类--Lane Detection and Classification using Cascaded CNNs
Lane Detection and Classifification using Cascaded CNNs 代码戳 here 作者采用两个级联的CNN网络,完成了车道线的实例分割和分类.第一个CN ...
- Transformer 又立功了!又快(420 fps)又好的车道线检测算法
点击上方↑↑↑"视学算法"关注我 来源:公众号 我爱计算机视觉 授权 分享一篇新出的论文 End-to-end Lane Shape Prediction with Transfo ...
- sift线特征提取代码_Transformer 又立功了!又快(420 fps)又好的车道线检测算法
分享一篇新出的论文 End-to-end Lane Shape Prediction with Transformers,该文为车道线检测问题建立参数模型,使用Transformer捕获道路中细长车道 ...
最新文章
- 基于泛型编程的序列化实现方法
- GHOST系统锁定主页常用软件及解决方案
- Lua-泛型for循环 pairs和ipairs的区别
- sqlmap的篡改绕过WAF
- [转] Android SDK manager 无法获取更新版本列表
- 在Linux下判断系统当前是否开启了超线程
- Android基础入门教程——7.6.3 基于TCP协议的Socket通信(2)
- php提取pdf首页图片,pdf图片怎么提取
- C# Winform设置焦点
- (期末复习)html元素上下左右置中对齐的三种方法
- 自媒体必死 大家不要被马化腾忽悠了
- 博尔顿大学介绍让学生们在9月重返校园的创新措施
- jQuery的文档处理
- 服务器就是一台性能好的电脑吗,科普:什么是服务器? 服务器与普通电脑有何区别?...
- coso全称是什么_京东方全称是什么
- LaTeX插入知网参考文献
- Hadoop学习(1)--Hadoop介绍
- 在计算机科学中 算法这个术语是指什么,algorithm
- hdu 1001 Sum Problem
- 十二小时制和二十四小时制之间的区别