车道线识别之 tusimple 数据集介绍
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、每條線實際上是點序列的坐標集合,而不是區域集合
總結
以上是生活随笔為你收集整理的车道线识别之 tusimple 数据集介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python 时间类型及其互相转换
- 下一篇: 小米手机常见刷机问题汇总及解决方法