车道线识别之 tusimple 数据集介绍

车道线识别之 tusimple 数据集介绍Tusimple是一家做自动驾驶的公司,他也公布了一些其在自动驾驶领域积累的数据,其中有一些是和车道线检测相关的。2018年6月份,其举办了一次以摄像头图像数据做车道检测的比赛,公开了一部分数据及

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

 

Tusimple 是一家做自动驾驶的公司,他也公布了一些其在自动驾驶领域积累的数据,其中有一些是和车道线检测相关的。20186 月份,其举办了一次以摄像头图像数据做车道检测的比赛,公开了一部分数据及其标注。数据下载数据是:https://github.com/TuSimple/tusimple-benchmark/issues/3

在其doc中可以发现数据个数的一些说明

车道线识别之 tusimple 数据集介绍

 

标注json 文件中每一行包括三个字段 

raw_file : 每一个数据段的第20帧图像的的 path 路径

lanes h_samples 是数据具体的标注内容,为了压缩,h_sample 是纵坐标(应该是从上到下拍好顺序的),lanes 是每个车道的横坐标,是个二维数组。

-2 表示这个点是无效的点

 

车道线识别之 tusimple 数据集介绍

 

 

上面的数据就有 4 条车道线,第一条车道线的第一个点的坐标是(632280)。 

标注的过程应该是,将图片的下半部分如70%*height 等分成N份。然后取车道线(如论虚实)与该标注线交叉的点

 

车道线识别之 tusimple 数据集介绍

 

 

利用以下脚本可以处理得到标注的数据,这个脚本稍微改动下也可以作为深度学习输入的图像。

 

 

# -*- coding: utf-8 -*-  
import cv2
import json
import numpy as np
 
base_path = "/Users/jcl/workspace/lane_detection/"

file=open(base_path+'test_label.json','r')
image_num=0

for line in file.readlines():
    data=json.loads(line)
    # print data['raw_file']
    # 取第 29 帧 看一下处理的效果
    if image_num == 29:
        image=cv2.imread(base_path+data['raw_file'])
        # 二进制图像数组初始化
        binaryimage=np.zeros((image.shape[0],image.shape[1],1),np.uint8)
        # 实例图像数组初始化
        instanceimage=binaryimage.copy()
        arr_width=data['lanes']
        arr_height=data['h_samples']
        width_num=len(arr_width)
        height_num=len(arr_height)
        # print width_num
        # print height_num
        # 遍历纵坐标
        for i in range(height_num):
            lane_hist=40
            # 遍历各个车道的横坐标
            for j in range(width_num):
                # 端点坐标赋值
                if arr_width[j][i-1]>0 and arr_width[j][i]>0:
                    binaryimage[int(arr_height[i]),int(arr_width[j][i])]=255
                    instanceimage[int(arr_height[i]),int(arr_width[j][i])]=lane_hist
                    if i>0:
                        # 画线,线宽10像素
                        cv2.line(binaryimage, (int(arr_width[j][i-1]),int(arr_height[i-1])), (int(arr_width[j][i]),int(arr_height[i])), 255, 10)
                        cv2.line(instanceimage,(int(arr_width[j][i-1]),int(arr_height[i-1])), (int(arr_width[j][i]),int(arr_height[i])), lane_hist, 10)
                lane_hist+=50
        cv2.imshow('image.jpg',image)
        cv2.waitKey()
        cv2.imshow('binaryimage.jpg',binaryimage)
        cv2.waitKey()
        cv2.imshow('instanceimage.jpg',instanceimage)
        cv2.waitKey()
        break
        # string1=base_path+"gt_image_binary/"+str(image_num)+".png"
        # string2=base_path+"gt_image_instance/"+str(image_num)+".png"
        # string3=base_path+"raw_image/"+str(image_num)+".png"
        # cv2.imwrite(string1,binaryimage)
        # cv2.imwrite(string2,instanceimage)
        # cv2.imwrite(string3,image)
    image_num = image_num + 1
    
file.close()
print "total image_num:"+str(image_num)

 

 

处理完之后图片输出如下所示:

 

 车道线识别之 tusimple 数据集介绍

 

 车道线识别之 tusimple 数据集介绍

 

车道线识别之 tusimple 数据集介绍

 

Tusimple 数据的标注特点:

 

1、车道线实际上不只是道路上的标线,虚线被当作了一种实线做处理的。这里面双实线、白线、黄线这类信息是没有被标注的

2、每条线实际上是点序列的坐标集合,而不是区域集合

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/167033.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 2000数据库置疑怎么处理_msdb数据库置疑的解决方法

    2000数据库置疑怎么处理_msdb数据库置疑的解决方法由于服务器意外的断电,导致SQLSERVER服务器上数据库出现“置疑”而无法使用,通过网上搜索,找到以下方法解决问题,这里记录一下:产生数据库置疑的时侯,数据库文件和日志文件都是存在的,如果数据库文件都不存在了,则要另当处理。1、停止数据库服务器,将数据库MDF文件和LDF文件复制备份一份2、启动数据库服务器,删除置疑的数据库3、仅用备份的数据库MDF文件附加数据库,sp_attach_…

  • 令牌桶的实现_C语言实现栈

    令牌桶的实现_C语言实现栈接上篇。Guava的令牌桶的实现中,包括一条设计哲学,需要大家注意:它允许瞬间的流量波峰超过QPS,但瞬间过后的请求将会等待较长的时间来缓解上次的波峰,以使得平均的QPS等于预定值。RateLimiter类提供了令牌桶的接口,它是一个抽象类,其子类有SmoothRateLimiter(也是个抽象类)以及孙子类SmoothBursty,SmoothWarmingUp。SmoothRateLimite…

  • java向上取整和向下取整,万字长文!

    java向上取整和向下取整,万字长文!一面:70分钟突击电话面试正思考着项目功能模块,阿里面试官打来了电话,开始了阿里一面。阿里面试官自我介绍,介绍了5分钟左右,部门的情况,主要的业务提问开始会哪些操作系统Linux会一点说一下操作指令,怎么看cpu,看进程,看端口操作系统进程间通信追问了一个信号相关的问题,我不知道了。io多路复用,说一说面向切面编程,说一说那些场景说说面向切面编程给一个场景,有很多方法,找出耗时长的方法spring的@autowired的作用mybatis和hibernate的区别C,C

  • get, getline, gets, getchar 用法「建议收藏」

    get, getline, gets, getchar 用法「建议收藏」1、cin  1、cin>>  用法1:最基本,也是最常用的用法,输入一个数字:  #include  usingnamespacestd;  main()  {  inta,b;  cin>>a>>b;  cout<

  • 在纯Windows环境下部署DzzOffice+OnlyOffice协同办公系统

    在纯Windows环境下部署DzzOffice+OnlyOffice协同办公系统老大有个需求,嗯,老大只管提需求,不会IT的业务不算好会计,而且预算为0。WTF…需求:私有云或者简单的OA系统硬件条件:有什么算什么预算:0WTFDouble初步方案:找到一台半闲置

  • 半年学习安排

    半年学习安排

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号