Ultra Fast Structure-aware Deep Lane Detection的训练实战

2024-03-14 23:36

本文主要是介绍Ultra Fast Structure-aware Deep Lane Detection的训练实战,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Ultra Fast Structure-aware Deep Lane Detection的训练实战

1、模型介绍

论文
知乎
代码
CULane数据集简介

2、基于CULane数据集格式的训练

2.1、video to img

import glob
import os
import cv2# --------视频转图像-----------------------------------------
def video2image(video_path, save_path, index):if not os.path.exists(save_path): os.makedirs(save_path)cap = cv2.VideoCapture(video_path)img_num = 0while 1:print(index)ret, frame = cap.read()if img_num >2000:breakif ret == False:breaksave_name = os.path.join(save_path, str(index) + ".jpg")cv2.imwrite(save_name, frame)index += 1img_num +=1cap.release()return indexif __name__ == "__main__":video_path = r"Ultra-Fast-Lane-Detection\dataset\video"video_list = os.listdir(video_path)print(video_list)index = 0for i in range(len(video_list)):video_load = os.path.join(video_path, video_list[i])save_path = os.path.join(r"Ultra-Fast-Lane-Detection\dataset\img", video_list[i].split(".")[0])print(save_path)index = video2image(video_load,save_path,index)

2.2 Labelme标注

在这里插入图片描述

2.3 json转label图片

单张图像的代码位于:anaconda2\envs\labelme\Lib\site-packages\labelme\cli\json_to_dataset.py;
批量使用:

import os
import globos.chdir("B:\Anaconda\envs\Lane_Detection\Lib\site-packages\labelme\cli")
path1 = r"conda activate your env"
os.system(path1)json_file = r'your json file'  # 文件路径
json_list = glob.glob("%s/*.json" % (json_file))
for i in json_list:path11 = r"python json_to_dataset.py "path22 = path11 + ios.system(path22)

结果如图所示:
在这里插入图片描述

2.4 基于json生成点坐标的文本文件

import os
import json
import numpy as npdir_json = r'your json path'  # json存储的文件目录
dir_txt = r'your txt save path'  # txt存储目录
if not os.path.exists(dir_txt):os.makedirs(dir_txt)
list_json = os.listdir(dir_json)def json2txt(path_json, path_txt):  # 可修改生成格式with open(path_json, 'r') as path_json:jsonx = json.load(path_json)with open(path_txt, 'w+') as ftxt:for shape in jsonx['shapes']:label = str(shape['label']) + ' 'xy = np.array(shape['points'])strxy = ''for m, n in xy:m = int(m)n = int(n)# print('m:',m)# print('n:',n)strxy += str(m) + ' ' + str(n) + ' 'label = strxyftxt.writelines(label + "\n")for cnt, json_name in enumerate(list_json):path_json = os.path.join(dir_json, json_name)print(path_json)path_txt = os.path.join(dir_txt, json_name.replace('.json', '.lines.txt'))print(path_txt)json2txt(path_json, path_txt)

结果如图所示:
在这里插入图片描述

2.5 train.txt\test.txt\val.txt制作

import osfolder_path = "img/val_img/"  # 文件夹路径
txt_file_path = "list/val.txt"    # 输出txt文件路径with open(txt_file_path, "w") as txt_file:for file_name in os.listdir(folder_path):if file_name.endswith(".jpg"):file_path = "/"+folder_path+file_nametxt_file.write(file_path + "\n")  # 将文件名写入txt文件,每个文件名占一行

效果如图所示:
在这里插入图片描述

2.5 label_Seg文件夹的制作

将2.3步骤生成的文件夹的里的label.png重命名并保存到其它文件夹

import os
import glob
import shutil
save_path = r"D:\pythonFiles\Lane_Detection\2-Ultra-Fast-Lane-Detection\dataset\CULane\laneseg"seg_img_path = r"D:\pythonFiles\Lane_Detection\2-Ultra-Fast-Lane-Detection\dataset\CULane\laneseg\all"img_list = glob.glob("%s/*/*.png" % (seg_img_path))for img_path in img_list:if img_path.split("\\")[-1] == "label.png":num = img_path.split("\\")[-2].split("_")[0]new_name = num + ".png"save_name = os.path.join(save_path, new_name)shutil.copy(img_path, save_name)

效果如图所示:
在这里插入图片描述

2.6 制作train_gt.txt\val_gt.txt

import osfolder_path = "img/train_img/"  # 文件夹路径
txt_file_path = "list/train_gt.txt"    # 输出txt文件路径
seg_path = "laneseg/train_img/"
with open(txt_file_path, "w") as txt_file:for file_name in os.listdir(folder_path):if file_name.endswith(".jpg"):file_path = "/"+folder_path+file_nameprint(file_path)txt_file.write(file_path + " ")  # 将文件名写入txt文件file_gt_path = "/"+seg_path+file_name.split(".")[0]+".png"print(file_gt_path)txt_file.write(file_gt_path + " ")#txt_file.write("1 1 1 1\n")

效果如图所示
在这里插入图片描述

2.7 最终数据集结构

1 CULane
1.1 img
在这里插入图片描述

1.2 laneseg
在这里插入图片描述

1.3 list
在这里插入图片描述

3 开始训练

3.1 configs/culane.py

在这里插入图片描述在这里插入图片描述

3.2 开始训练

python train.py configs/culane.py 

3.3 测试

把之前生成的test.txt复制到CULane数据集的一级目录下

python test.py configs/culane.py --test_model weights/ep048.pth --test_work_dir ./tmp

4 参考

CSDN博客1

CSDN博客2

CSDN博客3

CULane数据集介绍

CSDN博客4

这篇关于Ultra Fast Structure-aware Deep Lane Detection的训练实战的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/810073

相关文章

Golang操作DuckDB实战案例分享

《Golang操作DuckDB实战案例分享》DuckDB是一个嵌入式SQL数据库引擎,它与众所周知的SQLite非常相似,但它是为olap风格的工作负载设计的,DuckDB支持各种数据类型和SQL特性... 目录DuckDB的主要优点环境准备初始化表和数据查询单行或多行错误处理和事务完整代码最后总结Duck

Python中的随机森林算法与实战

《Python中的随机森林算法与实战》本文详细介绍了随机森林算法,包括其原理、实现步骤、分类和回归案例,并讨论了其优点和缺点,通过面向对象编程实现了一个简单的随机森林模型,并应用于鸢尾花分类和波士顿房... 目录1、随机森林算法概述2、随机森林的原理3、实现步骤4、分类案例:使用随机森林预测鸢尾花品种4.1

vue解决子组件样式覆盖问题scoped deep

《vue解决子组件样式覆盖问题scopeddeep》文章主要介绍了在Vue项目中处理全局样式和局部样式的方法,包括使用scoped属性和深度选择器(/deep/)来覆盖子组件的样式,作者建议所有组件... 目录前言scoped分析deep分析使用总结所有组件必须加scoped父组件覆盖子组件使用deep前言

Golang使用minio替代文件系统的实战教程

《Golang使用minio替代文件系统的实战教程》本文讨论项目开发中直接文件系统的限制或不足,接着介绍Minio对象存储的优势,同时给出Golang的实际示例代码,包括初始化客户端、读取minio对... 目录文件系统 vs Minio文件系统不足:对象存储:miniogolang连接Minio配置Min

Node.js 中 http 模块的深度剖析与实战应用小结

《Node.js中http模块的深度剖析与实战应用小结》本文详细介绍了Node.js中的http模块,从创建HTTP服务器、处理请求与响应,到获取请求参数,每个环节都通过代码示例进行解析,旨在帮... 目录Node.js 中 http 模块的深度剖析与实战应用一、引言二、创建 HTTP 服务器:基石搭建(一

网页解析 lxml 库--实战

lxml库使用流程 lxml 是 Python 的第三方解析库,完全使用 Python 语言编写,它对 XPath表达式提供了良好的支 持,因此能够了高效地解析 HTML/XML 文档。本节讲解如何通过 lxml 库解析 HTML 文档。 pip install lxml lxm| 库提供了一个 etree 模块,该模块专门用来解析 HTML/XML 文档,下面来介绍一下 lxml 库

性能分析之MySQL索引实战案例

文章目录 一、前言二、准备三、MySQL索引优化四、MySQL 索引知识回顾五、总结 一、前言 在上一讲性能工具之 JProfiler 简单登录案例分析实战中已经发现SQL没有建立索引问题,本文将一起从代码层去分析为什么没有建立索引? 开源ERP项目地址:https://gitee.com/jishenghua/JSH_ERP 二、准备 打开IDEA找到登录请求资源路径位置

C#实战|大乐透选号器[6]:实现实时显示已选择的红蓝球数量

哈喽,你好啊,我是雷工。 关于大乐透选号器在前面已经记录了5篇笔记,这是第6篇; 接下来实现实时显示当前选中红球数量,蓝球数量; 以下为练习笔记。 01 效果演示 当选择和取消选择红球或蓝球时,在对应的位置显示实时已选择的红球、蓝球的数量; 02 标签名称 分别设置Label标签名称为:lblRedCount、lblBlueCount

滚雪球学Java(87):Java事务处理:JDBC的ACID属性与实战技巧!真有两下子!

咦咦咦,各位小可爱,我是你们的好伙伴——bug菌,今天又来给大家普及Java SE啦,别躲起来啊,听我讲干货还不快点赞,赞多了我就有动力讲得更嗨啦!所以呀,养成先点赞后阅读的好习惯,别被干货淹没了哦~ 🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,助你一臂之力,带你早日登顶🚀,欢迎大家关注&&收藏!持续更新中,up!up!up!! 环境说明:Windows 10

MiniGPT-3D, 首个高效的3D点云大语言模型,仅需一张RTX3090显卡,训练一天时间,已开源

项目主页:https://tangyuan96.github.io/minigpt_3d_project_page/ 代码:https://github.com/TangYuan96/MiniGPT-3D 论文:https://arxiv.org/pdf/2405.01413 MiniGPT-3D在多个任务上取得了SoTA,被ACM MM2024接收,只拥有47.8M的可训练参数,在一张RTX