车道线数据集CULane处理

车道线数据集CULane处理裁剪

0.前言

目前使用较多的车道线数据集有2个,tusimple和culane,tusimple数据集图片原始分辨率为720P的,而culane数据集原始分辨率为1640x590,由于SCNN开源时候,使用了等比缩放到288x800分辨率,导致以后绝大部分方法都是使用这个分辨率训练的,首先自己数据集跟culane不同,而且288x800分辨率使用基于分割的方法运算量较大,在板卡上运行太慢,也做了相关试验,更改了backbone和分辨率,在UFLD上使用mbv2和256x512的分辨率训练,模型较resnet18,F1降低了大约3个点,但是在板卡速度为20ms(288x800 rensnet18为70多),提升较大,所以对于图片分辨率,个人感觉可以将原始图片上方天空部分去除,在原图上降低图像分辨率,记录下生成脚本

1.实现

统计了下CULane整个数据集上车道线点最小的纵坐标为250,个人把数据集高裁剪为360,所以在原图590上需要减去230

import os
import cv2
import glob
import numpy as np
# culane datasets ymain = 250
data_dir = ['driver_100_30frame', 'driver_161_90frame', 'driver_182_30frame', 'driver_193_90frame', 'driver_23_30frame', 'driver_37_30frame']
ymin = 590
count = 0
img_num = 0
txt_num = 0
for s in data_dir:
    img_dir = glob.glob(os.path.join(s,'*/*.jpg'))
    txt_dir = glob.glob(os.path.join(s,'*/*.txt'))
    print('{}: img num {} txt num {} total num: {}'.format(s,len(img_dir), len(txt_dir),len(img_dir) + len(txt_dir)))
    for img_path in img_dir:
        img = cv2.imread(img_path)
        img = img[230:,:,:]
        clip_path = os.path.join('/opt/sda5/BL01_Data/Lane_Data/CULane_Clip', img_path)
        if not os.path.exists(os.path.split(clip_path)[0]):
            os.makedirs(os.path.split(clip_path)[0])
        cv2.imwrite(clip_path, img)
        img_num += 1
        txt_path = img_path.replace('.jpg', '.lines.txt')
        if not os.path.exists(txt_path):
            continue
        with open(txt_path, 'r') as f:
            lines = f.readlines()
        #if len(lines) == 0:
        #    print(txt_path)
        lab_path = clip_path.replace('.jpg', '.lines.txt')
        with open(lab_path, 'w') as ff:
            for line in lines:
                points = []
                for index, p in enumerate(line.strip().split(' ')):
                    if index % 2 != 0:
                        p = str(float(p) - 230) + ' '
                    else:
                        p = p + ' '
                    points.append(str(p))
                points.append('\n')
                #points = np.array([int(float(x)) for x in points]).reshape(-1,2)
                #for x_y in points:
                #    cv2.circle(img, tuple(x_y), 2, (255,0,0), -1)
                ff.writelines(points)
            txt_num += 1
    print('{}: img num {} txt num {} total num: {}'.format(s, img_num, txt_num, img_num + txt_num))
  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值