车道线识别之 tusimple 数据集介绍
2023-06-13 09:12:59 时间
大家好,又见面了,我是你们的朋友全栈
Tusimple 是一家做自动驾驶的公司,他也公布了一些其在自动驾驶领域积累的数据,其中有一些是和车道线检测相关的。2018年6 月份,其举办了一次以摄像头图像数据做车道检测的比赛,公开了一部分数据及其标注。数据下载数据是:https://github.com/TuSimple/tusimple-benchmark/issues/3
在其doc中可以发现数据个数的一些说明
标注json 文件中每一行包括三个字段
raw_file : 每一个数据段的第20帧图像的的 path 路径
lanes 和 h_samples 是数据具体的标注内容,为了压缩,h_sample 是纵坐标(应该是从上到下拍好顺序的),lanes 是每个车道的横坐标,是个二维数组。
-2 表示这个点是无效的点
上面的数据就有 4 条车道线,第一条车道线的第一个点的坐标是(632,280)。
标注的过程应该是,将图片的下半部分如70%*height 等分成N份。然后取车道线(如论虚实)与该标注线交叉的点
利用以下脚本可以处理得到标注的数据,这个脚本稍微改动下也可以作为深度学习输入的图像。
# -*- 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 数据的标注特点:
1、车道线实际上不只是道路上的标线,虚线被当作了一种实线做处理的。这里面双实线、白线、黄线这类信息也是没有被标注的。
2、每条线实际上是点序列的坐标集合,而不是区域集合
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/167033.html原文链接:https://javaforall.cn
相关文章
- 基于Deep Learning 的视频识别技术「建议收藏」
- 嵌入式语音识别智能家居笔记1
- 基于YOLO分析人员工服识别算法
- 手写数字识别数据集_卷积神经网络分类
- 字节跳动安全Ai挑战赛-基于文本和多模态数据的风险识别总结
- Power Query整理图片识别出来的数据
- 软件方法(下)第8章分析之分析类图—知识篇Part12-识别泛化关系
- Meta AI 的研究人员创建了用于对象识别的“OMNI3D”数据集和可以推广到看不见的图像的“Cube R-CNN”模型
- 基线提升至96.45%:2022 司法杯犯罪事实实体识别+数据蒸馏+主动学习
- Moonlight:一种识别生物标志物在不同肿瘤类型和分期中作为癌基因或肿瘤抑制因子的多种作用的方法
- 伯克利开源首个泊车场景下的高清数据集和预测模型,支持目标识别、轨迹预测
- 推荐一款纯离线OCR识别开源软件
- TensorFlow学习笔记(三)MNIST数字识别问题详解大数据
- Chrome强化数字化办公:新增多页扫描和OCR识别搜索功能
- 公开课 | 如何运用商品识别技术重塑新零售关键节点?
- 不解密数据竟也能识别TLS加密的恶意流量?
- 与数据漏洞说再见 云计算的数据风险识别
- 解决cmd无法识别MySQL的问题(cmd无法识别mysql)
- Oracle 无法识别的用户名问题(oracle中用户名无效)
- Redis中准确识别数据过期时机制(redis过期时询问)
- 利用Oracle OCR设备加快识别效率(oracle ocr设备)
- Oracle 9i乱码问题一句话识别之困(oracle 9i乱码)
- 有人把 iPhone X 面部表情识别数据导入 Maya,结果……
- C#语音识别用法实例