# Ultra-Fast-Lane-Detection-Mindspore **Repository Path**: wed735459986/ultra-fast-lane-detection-mindspore ## Basic Information - **Project Name**: Ultra-Fast-Lane-Detection-Mindspore - **Description**: 此仓库为Ultra-Fast-Lane-Detection的mindspore1.5.1/1.8.1复现版本,实现了在Ascend modelarts、GPU上的训练、测试和预测(DEMO)功能。 参考仓库:Ultra-Fast-Lane-Detection 作者:王恩东、杨茂(eval部分) - **Primary Language**: Python - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-08-29 - **Last Updated**: 2022-10-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 目录 - [目录](#目录) - [介绍](#介绍) - [Ultra-Fast-Lane-Detection描述](#Ultra-Fast-Lane-Detection描述) - [模型架构](#模型架构) - [数据集](#数据集) - [环境要求](#环境要求) - [快速入门](#快速入门) - [ModelZoo主页](#modelzoo主页) # 介绍 此仓库为[Ultra-Fast-Lane-Detection](https://arxiv.org/abs/2004.11757)的mindspore1.5.1/1.8.1复现版本,实现了在Ascend modelarts、GPU上的训练、测试和预测(DEMO)功能。 - 参考仓库:[Ultra-Fast-Lane-Detection](https://github.com/cfzd/Ultra-Fast-Lane-Detection) - 作者:王恩东、杨茂(eval部分) # Ultra-Fast-Lane-Detection描述 现有很多车道线检测方法都是基于分割网络去做的,这就导致了其在车道线检测困难场景(严重遮挡和极限光照条件下)下的适应性和infer速度上存在问题。在困难场景下车道线的检测往往很依赖车道线区域的上下文和全局信息的获取,但传统的分割网络却很难去获取这样的信息,对此文章提出了一种基于行切分的车道线检测算法,其在特征图的H维度进行展开,并通过全链接(使得其具有全局视野,不同于卷积的局部相关性)的方式在W维度去预测车道线(这里确切应该叫对应切片上的“点”了)可能存在的位置。且相对于传统的语义分割方法,文章基于在特征图上进行切分展开可以极大减少计算量,从而其速度可以在1080 TI GPU上跑到300+ FPS。由于车道线存在其固有的几何特征,文章对此提出了对于行车道线预测的结构性约束(通过行间的相似性与形状约束),从而建立不同行间车道线(“点”)之间的关联。 [论文:Ultra Fast Structure-aware Deep Lane Detection](https://arxiv.org/abs/2004.11757): Qin Z , Wang H , Li X . Ultra Fast Structure-aware Deep Lane Detection[J]. Springer, Cham, 2020. # 模型架构 整体架构如下图所示: ![](model.png) # 数据集 使用的数据集: 1. [CULane]() - 数据集大小:43G - 训练集:88880个图像 - 验证集:9675个图像 - 测试集:34680个图像 - 数据格式:图像和txt文件 2. [Tusimple]() - 数据集大小:23G - 训练集:3626个图像 - 测试集:2782个图像 - 数据格式:图像和json文件 # 环境要求 - 硬件(Ascend/GPU/CPU) 本代码可使用在Ascend处理器、GPU或CPU的硬件环境下。 - 安装[MindSpore](https://www.mindspore.cn/install)。 代码支持mindspore1.5.1、mindspore1.8.1版本,运行代码需要在`default_config.yaml`文件中手动设置ms_version。 - Tusimple数据集目录结构:(需要将原始数据集用src/scripts/convert_tusimple.py转换成所需格式) ```path └─Tusimple ├─train ├─clips ... └─test ``` - CULane数据集目录结构: ```path └─CULane ├─driver_23_30frame ... └─list ``` - 根据模型运行需要,对应地在`default_config.yaml`中更改dataset和其他需要的设置。 # 快速入门 通过官方网站安装MindSpore后,您可以按照如下步骤进行训练和评估: 注意: 1. 预训练模型是在ImageNet2012上训练的ResNet-18检查点。你可以使用ModelZoo中的 [resnet18](https://www.mindspore.cn/resources/hub/details?MindSpore/1.8/resnet18_imagenet2012) 来训练。 ## 运行训练程序 - 在 ModelArts 进行训练 (如果你想在modelarts上运行,可以参考以下文档 [modelarts](https://support.huaweicloud.com/modelarts/)) ```python # 在 ModelArts 上使用单卡训练 # 1. 在 default_config.yaml 文件中设置 : # ms_version: "1.5.1" # mindspore版本 可选1.8.1或1.5.1 # device_target: "Ascend" #Ascend设备 # is_modelArts: 1 # enable_modelarts: True # dataset: "Tusimple" #数据集类型"Tusimple" or "CULane"(注意区分大小写) # data_url: "obs:" #数据集地址 # data_path: "/cache/data" #数据集拷贝并解压至data_path # train_url: "obs://mx-wed/ckptNo5" #ckpt模型文件保存地址 # output_path: "/cache/train" #训练完成后,ckpt模型文件生成在output_path # 并在 default_config.yaml 文件中设置 其他参数(可保持默认设置) # 2. 运行train_ascend.py ``` - 在本地进行训练 ```python # 在本地使用GPU训练 # 1. 在 default_config.yaml 文件中设置 : # ms_version: "1.5.1" # mindspore版本 可选1.8.1或1.5.1 # dataset: "Tusimple" #数据集类型"Tusimple" or "CULane"(注意区分大小写) # local_data_path:"" #本地数据集地址 # 并在 default_config.yaml 文件中设置 其他参数(可保持默认设置) # 2. 运行train.py ``` ## 运行评估程序 - 在本地评估 - 对于CULane数据集的评估,需要使用官方的评估工具,此工具需要安装OpenCV C++,请参考 [here](https://docs.opencv.org/master/d7/d9f/tutorial_linux_install.html) 去安装 OpenCV C++。 ```Shell # First you need to install OpenCV C++. # After installation, make a soft link of OpenCV include path. ln -s /usr/local/include/opencv4/opencv2 /usr/local/include/opencv2 ``` - 三种方法来创建CULane评估工具 - Option 1: ```Shell cd evaluation/culane make ``` - Option 2: ```Shell cd evaluation/culane mkdir build && cd build cmake .. make mv culane_evaluator ../evaluate ``` - For Windows user: ```Shell mkdir build-vs2017 cd build-vs2017 cmake .. -G "Visual Studio 15 2017 Win64" cmake --build . --config Release # or, open the "xxx.sln" file by Visual Studio and click build button move culane_evaluator ../evaluate ``` - 运行程序 ```python # 1. 在 default_config.yaml 文件中设置 : # ms_version: "1.5.1" # mindspore版本 可选1.8.1或1.5.1 # dataset: "Tusimple" #数据集类型"Tusimple" or "CULane"(注意区分大小写) # local_data_path: "" #本地数据集地址 # test_model: "" #ckpt模型文件地址 # test_work_dir: "" #eval结果保存地址 # 2. 运行eval.py ``` ## 预测程序(DEMO) - 对测试集图片进行检测,并可视化结果 ```python # 1. 在 default_config.yaml 文件中设置 : # ms_version: "1.5.1" # mindspore版本 可选1.8.1或1.5.1 # dataset: "Tusimple" #数据集类型"Tusimple" or "CULane"(注意区分大小写) # local_data_path: "" #本地数据集地址 # use_aux: False #改为False # test_model: "" #ckpt模型文件地址 # 2. 运行predict.py # 结果图片存放在当前目录下pred_results文件夹中 ``` # ModelZoo主页 请浏览官网[主页](https://gitee.com/mindspore/models)。