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

相关文章

React+TS前台项目实战(十七)-- 全局常用组件Dropdown封装

文章目录 前言Dropdown组件1. 功能分析2. 代码+详细注释3. 使用方式4. 效果展示 总结 前言 今天这篇主要讲全局Dropdown组件封装,可根据UI设计师要求自定义修改。 Dropdown组件 1. 功能分析 (1)通过position属性,可以控制下拉选项的位置 (2)通过传入width属性, 可以自定义下拉选项的宽度 (3)通过传入classN

YOLO v3 训练速度慢的问题

一天一夜出了两个模型,仅仅迭代了200次   原因:编译之前没有将Makefile 文件里的GPU设置为1,编译的是CPU版本,必须训练慢   解决方案: make clean  vim Makefile make   再次训练 速度快了,5分钟迭代了500次

将一维机械振动信号构造为训练集和测试集(Python)

从如下链接中下载轴承数据集。 https://www.sciencedirect.com/science/article/pii/S2352340918314124 import numpy as npimport scipy.io as sioimport matplotlib.pyplot as pltimport statistics as statsimport pandas

PyTorch模型_trace实战:深入理解与应用

pytorch使用trace模型 1、使用trace生成torchscript模型2、使用trace的模型预测 1、使用trace生成torchscript模型 def save_trace(model, input, save_path):traced_script_model = torch.jit.trace(model, input)<

Deep Learning复习笔记0

Key Concept: Embedding: learned dense, continuous, low-dimensional representations of object 【将难以表示的对象(如图片,文本等)用连续的低维度的方式表示】 RNN: Recurrent Neural Network -> for processing sequential data (time se

MyBatis-Plus常用注解详解与实战应用

MyBatis-Plus 是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。它提供了大量的常用注解,使得开发者能够更方便地进行数据库操作。 MyBatis-Plus 提供的注解可以帮我们解决一些数据库与实体之间相互映射的问题。 @TableName @TableName 用来指定表名 在使用 MyBatis-Plus 实现基本的 C

[大师C语言(第三十六篇)]C语言信号处理:深入解析与实战

引言 在计算机科学中,信号是一种软件中断,它允许进程之间或进程与内核之间进行通信。信号处理是操作系统中的一个重要概念,它允许程序对各种事件做出响应,例如用户中断、硬件异常和系统调用。C语言作为一门接近硬件的编程语言,提供了强大的信号处理能力。本文将深入探讨C语言信号处理的技术和方法,帮助读者掌握C语言处理信号的高级技巧。 第一部分:C语言信号处理基础 1.1 信号的概念 在Unix-lik

6月21日训练 (东北林业大学)(个人题解)

前言:   这次训练是大一大二一起参加的训练,总体来说难度是有的,我和队友在比赛时间内就写出了四道题,之后陆陆续续又补了了三道题,还有一道题看了学长题解后感觉有点超出我的能力范围了,就留给以后的自己吧。话不多说,上正文。 正文:   Problem:A 幸运数字: #include <bits/stdc++.h>using namespace std;int sum,ans;in

MATLAB算法实战应用案例精讲-【数模应用】三因素方差

目录 算法原理 SPSSAU 三因素方差案例 1、背景 2、理论 3、操作 4、SPSSAU输出结果 5、文字分析 6、剖析 疑难解惑 均方平方和类型? 事后多重比较的类型选择说明? 事后多重比较与‘单独进行事后多重比较’结果不一致? 简单效应是指什么? 边际估计均值EMMEANS是什么? 简单简单效应? 关于方差分析时的效应量? SPSSAU-案例 一、案例

[最全]设计模式实战(一)UML六大原则

UML类图 UML类图是学习设计模式的基础,学习设计模式,主要关注六种关系。即:继承、实现、组合、聚合、依赖和关联。 UML类图基本用法 继承关系用空心三角形+实线来表示。实现接口用空心三角形+虚线来表示。eg:大雁是最能飞的,它实现了飞翔接口。 关联关系用实线箭头来表示。当一个类"知道"另一个类时,可以用关联。eg:企鹅需要"知道"气候的变化,需要"了解"气候规律。 聚合关