100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > Python实现交通标志牌(GTSRB数据集)解析处理

Python实现交通标志牌(GTSRB数据集)解析处理

时间:2021-06-18 10:11:51

相关推荐

Python实现交通标志牌(GTSRB数据集)解析处理

今天需要用到一个交通标志牌(GTSRB数据集),但是数据都是ppm格式的,虽说用PIL模块也是可以直接打开的,但是不利于直接查看很不方便,所以这里打算做一个转化处理。

首先是从网上下载到所需的数据集,下载地址在这里。截图如下所示:

这里想要先去吐槽一下,找了好几遍才找到了数据集的下载链接,这也太不起眼了吧,我红框标出来了。

点击跳转到了下载页面后就可以进行下载了,下面是需要下载的数据集:

当然了,如果不在乎的话也是可以直接全部下载的。

下载后直接解压缩会得到如下文件结构:

我们简单看下测试数据集:

可以看到:一共有12630张测试图像,除此之外还有一个csv文件,存放没一张图片的ROI数据,训练集也是同样的组成,接下来我们直接来进行数据解析处理,代码实现如下所示:

#!usr/bin/env python#encoding:utf-8from __future__ import division'''__Author__:沂水寒城功能: GTSRB数据集解析处理'''import osimport PILimport numpy as npimport pandas as pdimport matplotlib.pyplot as pltdef convertTrainData(dataDir='data/GTSRB/Final_Training/Images/',saveDir='dataset/train/'):'''训练数据集转化处理'''labelDir=os.listdir(dataDir)for label in labelDir:oneDir=dataDir+label+'/'oneSaveDir=saveDir+label+'/'if not os.path.exists(oneSaveDir):os.makedirs(oneSaveDir)for one_file in os.listdir(oneDir):if one_file.endswith(".csv"):csvFile=os.path.join(oneDir,one_file)csv_data=pd.read_csv(csvFile)csv_data_array=np.array(csv_data)for i in range(csv_data_array.shape[0]):csv_data_list=np.array(csv_data)[i,:].tolist()[0].split(";")one_ppm=os.path.join(oneDir,csv_data_list[0])img=PIL.Image.open(one_ppm)box=[int(csv_data_list[3]),int(csv_data_list[4]),int(csv_data_list[5]),int(csv_data_list[6])]img=img.crop(box)one_save_path=oneSaveDir+str(len(os.listdir(oneSaveDir))+1)+'.png'img.save(one_save_path)def convertTestData(dataDir='data/GTSRB/Final_Test/Images/',saveDir='dataset/test/'):'''测试数据集转化处理'''if not os.path.exists(saveDir):os.makedirs(saveDir)file_list=os.listdir(dataDir)for one_file in file_list:if one_file.endswith(".csv"):csvFile=os.path.join(dataDir,one_file)csv_data=pd.read_csv(csvFile)csv_data_array=np.array(csv_data)for i in range(csv_data_array.shape[0]):csv_data_list=np.array(csv_data)[i,:].tolist()[0].split(";")one_ppm=os.path.join(dataDir,csv_data_list[0])img=PIL.Image.open(one_ppm)box=[int(csv_data_list[3]),int(csv_data_list[4]),int(csv_data_list[5]),int(csv_data_list[6])]img=img.crop(box)one_save_path=saveDir+str(len(os.listdir(saveDir))+1)+'.png'img.save(one_save_path)if __name__ == "__main__":convertTrainData(dataDir='data/GTSRB/Final_Training/Images/',saveDir='dataset/train/')convertTestData(dataDir='data/GTSRB/Final_Test/Images/',saveDir='dataset/test/')

执行,等待一会后,看下处理好的数据集:

首先是【训练集】:

接下来是【测试集】:

完成上述的数据解析存储处理之后就可以进行后续的建模分析了。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。