tusimple车道线检测 处理自己的数据集 用自己的数据集训练模型

标注数据

将自己的数据用labelme(至于如何安装和使用请自查)打开,然后选择线段或者点进行标注,标注完成之后会生成json格式的标注信息。

处理数据

处理得到的json文件,会生成这五个文件

我这里使用的是批量转换.sh命令,代码如下(如你的数据是单个的你可用自带的命令来生成):

单个数据转换

labelme_json_to_dataset <文件名>.json

批量数据转换(我的名字为json_to_png.sh)

#!/bin/bash
let i=1                   
path=./        	# json文件路径,将sh文件放到json同目录下为 ./ 
cd ${path}
for file in *.json                # 依次查找json文件
do
    labelme_json_to_dataset ${file}	 #在当前目录下将json文件转换为图片,
    let i=i+1
done
sh ./json_to_png.sh

会根据json的 名字生成对应的文件夹以及转换之后的文件

 之后进行图片二值化的转变,分别生成对应的文件(根据github代码来看,首先你得先创建对应的文件夹)

创建完成之后,运行转变代码,使用vim 或者 vi 创建一个py文件,文件名自己定义后缀为.py  (我这里定义为data.py)

#data.py
import cv2
from skimage import measure, color
from skimage.measure import regionprops
import numpy as np
import os
import copy
 
def skimageFilter(gray):
 
    binary_warped = copy.copy(gray)
    binary_warped[binary_warped > 0.1] = 255
    gray = (np.dstack((gray, gray, gray))*255).astype('uint8')
    labels = measure.label(gray[:, :, 0], connectivity=1)
    dst = color.label2rgb(labels,bg_label=0, bg_color=(0,0,0))
    gray = cv2.cvtColor(np.uint8(dst*255), cv2.COLOR_RGB2GRAY)
    return binary_warped, gray

def moveImageTodir(path,targetPath,name):
    if os.path.isdir(path):
        image_name = "gt_image/"+str(name)+".png"
        binary_name = "gt_binary_image/"+str(name)+".png"
        instance_name = "gt_instance_image/"+str(name)+".png"
        train_rows = image_name + " " + binary_name + " " + instance_name + "\n"
        origin_img = cv2.imread(path+"/img.png")
        origin_img = cv2.resize(origin_img, (1280,720))
        cv2.imwrite(targetPath+"/"+image_name, origin_img)
        img = cv2.imread(path+'/label.png')
        img = cv2.resize(img, (1280,720))
        gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
        binary_warped, instance = skimageFilter(gray)
        
        cv2.imwrite(targetPath+"/"+binary_name, binary_warped)
        cv2.imwrite(targetPath+"/"+instance_name, instance)
        
        print("success create data name is : ", train_rows)
        return train_rows
    return None
 
 
 
if __name__ == "__main__":
    print('11')
    count = 1
    with open("./train.txt", 'w+') as file:
        for images_dir in os.listdir("./images"):
            dir_name = os.path.join("./images", images_dir + "/annotations")
            for annotations_dir in os.listdir(dir_name):
                json_dir = os.path.join(dir_name, annotations_dir)
                if os.path.isdir(json_dir):
                    train_rows = moveImageTodir(json_dir, "./", str(count).zfill(4))
                    file.write(train_rows)
                    count += 1
 

如果就这样运行这个py文件的话,你会发现运行到循环的时候就会结束,什么都不会生成。步骤

1.创建一个文件夹名字自取(我创建的为images)注意 因为之前转二值化的代码中明确定义了文件夹的名字为images,因此你可以修改代码里面的名字,也可以直接将文件夹取名为images

 2.在你创建的这个文件夹下再创建一个文件夹名字随便(我这里取名为data)

3.在你创建的文件夹下,再创建一个文件夹(我创建的为annotations),和第一个操作一样,代码中指定了文件夹的名字为annotations,你可根据第一个操作来修改

 4.都创建好之后,将.sh执行完生成的文件夹放入annotations文件夹下

之后开始运行转换代码(data.py)运行结束后就可以看到gt_binary_image、gt_image、gt_instance_image这三个文件夹里面已经有图片了,并且会生成一个train.txt!!!!!

接下来根据github上的提示进行数据标注转换,转换成TFRecord

python data_provider/lanenet_data_feed_pipline.py 
--dataset_dir ./data/training_data_example/training/ 
--tfrecords_dir ./data/training_data_example/tfrecords

这里的--dataset_dir的路径就是你的gt_binary_image、gt_image、gt_instance_image这三个文件夹所在的目录。执行完这个操作之后会生成tfrecords、test.txt、val.txt这几个文件,并查看文件是否有数据(val无数据原因可能为你的总数据太少而无法划分,可将数据增加到10个以上)

之后就可以运行GitHub作者的训练代码了。

代码结构

参考

https://blog.csdn.net/qq_40900196/article/details/102840850

https://github.com/MaybeShewill-CV/lanenet-lane-detection

 

  • 8
    点赞
  • 77
    收藏
    觉得还不错? 一键收藏
  • 16
    评论
根据引用\[1\],TuSimple数据集是一个用于车道线检测数据集,但是由于下载速度慢,很多人无法看到原始数据集处理后的样子,因此可能会对自己的数据集产生怀疑。为了解决这个问题,你可以尝试以下几个步骤。 首先,根据引用\[2\],你可以尝试减少CPU线程数或者epoch的数量,以减少线程互锁导致的问题。你可以将batch_size和CPU线程数都修改为1,然后重新运行代码,看看是否能够解决问题。 其次,根据引用\[3\],你还可以检查代码中是否存在路径错误或者文件类型错误。在这个引用中,出现了一个TypeError,提示路径应该是字符串、字节、os.PathLike或整数类型,而不是Config类型。你可以检查代码中的路径是否正确,并确保路径的类型符合要求。 如果以上方法都没有解决问题,你可以尝试重新制作数据集,确保数据集的质量和格式正确。你可以仔细检查数据集的制作过程,确保没有遗漏或错误的步骤。 总之,车道线检测数据集问题可能是由于线程互锁、路径错误或数据集质量问题导致的。你可以根据以上方法逐步排查和解决问题,以获得准确可靠的数据集。 #### 引用[.reference_title] - *1* *2* *3* [详细教程——LaneNet-Lane-Detection车道检测,训练自己的数据集](https://blog.csdn.net/Hellow_RMB/article/details/107201309)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值