VPGNet交通标志数据集
VPGNet是一个包含了四个场景(晴天,夜间,阴雨等)下的交通路况数据集,其主要是针对地面标志(箭头线,人行道)的任务,该数据集一共包括以下17类地面标注
{
0:'background', 1:'lane_solid_white',
2:'lane_broken_white', 3:'lane_double_white',
4:'lane_solid_yellow', 5:'lane_broken_yellow',
6:'lane_double_yellow', 7:'lane_broken_blue',
8:'lane_slow', 9:'stop_line',
10:'arrow_left', 11:'arrow_right',
12:'arrow_go_straight', 13:'arrow_u_turn',
14:'speed_bump', 15:'crossWalk',
16:'safety_zone', 17:'other_road_markings',
该数据集下载地址为:VPGNet数据集下载
下载解压得到的数据集文件格式为
Scene_x
—%datetime_aaa_xxx
-----id.mat
该数据集的所有有用信息均保存在一个(640×480×5)的mat文件中。
VPGNet数据集内容解析
数据集的关键信息均保存在(6404805)的数组中,前三个通道为图片的rgb三通道信息,第四维通道为图像的17类二值分割图像(像素值为0-17),第五维通道为该论文提出的vanish point信息(我这里不需要用)。为了利用该数据集,我们需要将其信息分为原始图像images和标签文件labels两部分。python中的scipy库提供了loadmat函数能解析.mat文件。
from scipy.io import loadmat
m=loadmat(mat_file)
loadmat函数返回的是字典形式的变量,再继续解析字典m即可分别得到images与labels,完整代码如下:
#取.mat文件,并将其转为图片
import glob
import cv2
import os
import numpy as np
from scipy.io import loadmat
from tqdm import tqdm
root_path='/data/dataset/TrafficMarking/VPGNet/scene_2' #存放mat文件的地址
#save_path='/data/dataset/TrafficMarking/VPGNet/images' #保存原始rgb图像地址
save_path='/data/dataset/TrafficMarking/VPGNet/masks/' #保存原始分割mask图像
datefiles=[os.path.join(root_path,f) for f in os.listdir(root_path)]
pbar=tqdm(datefiles)
for df in pbar: #mat_file='/data/dataset/TrafficMarking/VPGNet/scene_1/20160512_1424_46/000001.mat'
mat_files=glob.glob(df+'/*.mat')
for mat_file in mat_files:
m=loadmat(mat_file) #mat文件的读取格式为dict,按照key,values处理 VPGNet图片信息储存在['rgb_seg_vp']里 (480,640,5)
rgb_img=m['rgb_seg_vp'][:,:,:3]
#修改通道 使之恢复为为原始的rgb图像
b=rgb_img[:,:,0]
g=rgb_img[:,:,1]
r=rgb_img[:,:,2]
rgb_img=cv2.merge((r,g,b))
seg=m['rgb_seg_vp'][:,:,3]*15 #*15为了可视化更清楚
vp=m['rgb_seg_vp'][:,:,4]
file_name=