tusimple车道线检测 标注自己的数据集

一、打开labelme工具进行数据标注


二、数据格式转换

2.1 标签转换

运行Anaconda Prompt,进入json标签文件所在目录,逐个转换,分布运行

cpp 复制代码
labelme_json_to_dataset 0000.json
labelme_json_to_dataset 0001.json
labelme_json_to_dataset 0002.json
labelme_json_to_dataset 0003.json
labelme_json_to_dataset 0004.json
labelme_json_to_dataset 0005.json

结束后,会得到这些文件夹

看看里面是什么内容。。

2.2 生成二值图标签和train.py

  1. 创建一个data_json_train空文件夹

  2. 在data_json_train下,创建images、clips、gt_image、gt_binary_image、gt_instance_image 共5个文件夹

  3. 在images下创建data空文件夹

  4. 在data下创建annotations空文件夹

  5. 将2.1节的生成的文件复制到annotations文件夹下

  6. 在data_json_train下,创建data.py,代码如下:

cpp 复制代码
# data.py
import cv2
from skimage import measure, color
from skimage.measure import regionprops
import numpy as np
import os
import copy

# 优化的地方:应该用文件的名字来命名新的文件,而不是简单的进行 +1 操作就进行对图片文件的命名
# BUG 已解决
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('--------------开始执行----------------')
    #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))
                    # 利用 json 文件夹的名字来对生成的图片进行命名,比较好对应
                    train_rows = moveImageTodir(json_dir, "./", json_dir.split('\\')[-1])
                    file.write(train_rows)
                    #count += 1
  1. 运行data.py,会生成train.txt,以及gt_image,gt_binary_image,gt_instance_image下会生成转换后的标签
    看下gt_binary_image下的东西。。

由于标注的数据少,所有val.txt复制train.txtx的内容。

使用train.txt,gt_image,gt_binary_image,gt_instance_image就可以进行训练了

大功告成!

相关推荐
Coovally AI模型快速验证13 小时前
深度学习驱动的视频异常检测(VAD),AI如何让监控更智能?
人工智能·深度学习·目标检测·机器学习·自动驾驶·无人机
容智信息13 小时前
容智信息加入大模型产业联盟,Hyper Agent推动企业级智能体规模化落地
大数据·人工智能·自然语言处理·自动驾驶
车企求职辅导15 小时前
新能源汽车零部件全品类汇总
人工智能·算法·车载系统·自动驾驶·汽车·智能驾驶·智能座舱
Godspeed Zhao15 小时前
自动驾驶中的传感器技术82——Sensor Fusion(5)
人工智能·机器学习·自动驾驶
程序员龙一16 小时前
百度Apollo Cyber RT底层原理解析
自动驾驶·ros·apollo·cyber rt
Godspeed Zhao17 小时前
自动驾驶中的传感器技术79——Sensor Fusion(2)
人工智能·fpga开发·自动驾驶
milan-xiao-tiejiang17 小时前
ROS2面试准备
c++·面试·自动驾驶
卡奥斯开源社区官方18 小时前
技术落地里程碑:北京发放全国首批L3自动驾驶号牌,智驾商业化闭环正式打通
人工智能·机器学习·自动驾驶
Godspeed Zhao18 小时前
自动驾驶中的传感器技术81——Sensor Fusion(4)
人工智能·机器学习·自动驾驶
容智信息1 天前
荣膺ISC.AI 2025创新百强!容智信息HyperAgent超级智能体,引领企业级智能体落地新范式
人工智能·自然语言处理·金融·自动驾驶