【深度学习笔记】自建交通标志分类数据集转换为MNIST数据格式

全新中国交通标志检测数据集2021—CCTSDB 2021: A More Comprehensive Traffic SignDetection Benchmark(全新分类-多算法测评) 我们提出了一个新的中国交通标志检测基准,该基准在CCTSDB 2017的基础上添加了4000多幅真实交通场景图像和相应的详细注释,并用困难的样本替换了许多原始的易检测图像,以适应复杂多变的检测环境。由于困难样本数量的增加,新的基准测试与旧版本相比可以在一定程度上提高检测网络的鲁棒性。同时,我们创建了新的专用测试集,并根据三个方面对其进行分类:类别含义、符号大小和天气条件。最后,我们在新的基准上对九种经典的交通标志检测算法进行了综合评价。 阅读详情


前言

提示:个人分类数据集预处理:

MNIST是经典的手写数字分类数据集,数据集中的图像是灰度图像,图像格式为png,图像尺寸为28*28,最主要的是MNIST数据集格式如下图所示。
红色框为解压后的MNIST数据,原始下载的是压缩包GZ

我们怎么把自己制作的分类数据集中jpg或者png格式的图片及标签转化为上面那种ubyte格式,因为,很多算法用如下代码来加载MNIST数据,所以我们也可以把自己的数据格式转化为MNIST格式,也这样调用。

train_dataset = torchvision.datasets.MNIST(root= data_path, train=True, download=True, transform=transforms.ToTensor())
train_loader = torch.utils.data.DataLoader(train_dataset, batch_size=batch_size, shuffle=True, num_workers=0)

test_set = torchvision.datasets.MNIST(root= data_path, train=False, download=True,  transform=transforms.ToTensor())
test_loader = torch.utils.data.DataLoader(test_set, batch_size=batch_size, shuffle=False, num_workers=0)

提示:以下是本篇文章正文内容,下面案例可供参考

一、自建交通标志分类数据集并做预处理

自建的交通标志分类部分数据如下截图;
右转交通标志
右转交通标志
左转交通标志
在这里插入图片描述

人行道交通标志
在这里插入图片描述

我的分类数据集为10类交通标志图片,类别分别为
[‘ahead’, ‘clearway_no_stopping’, ‘crosswalk’, ‘motorway’, ‘non-motorized_lane’, ‘speed_limit_50’, ‘split-way’, ‘turn_left’, ‘turn_right’, ‘warning_sign’]

10类交通标志分类数据集下载链接---->10类4000张交通标志数据集
有需要的可以下载

1.RGB图像转灰度图像

from PIL import Image
import os

INPUT_PATH = r'F:\DL_xian_data\tools\training-images\9' #原始图像存储路径
OUPUT_PATH = r'F:\DL_xian_data\tools\training-images\9_gray' #转化为灰度图像 存储路径
files_list = os.listdir(INPUT_PATH)  # 读取列表信息,可打印查看

for file in files_list:
    # Version1
    I = Image.open(INPUT_PATH + "/" + file)
    L = I.convert('L')	# Image包内将“L“代表灰度
    L.save(OUPUT_PATH + "/" + file)

2.灰度图像缩放为28*28尺寸

import os
import os.path
from PIL import Image

#准备拉伸的原图片存储路径
infile = r'F:\DL_xian_data\SNN_model\dataset\turn_left'
#拉伸后的图片存储路径
outfile = r'F:\DL_xian_data\SNN_model\dataset_28_28\7'

list_img = os.listdir(infile)
n = 0
l = len(list_img)
for each_img in list_img:   
    # 每个图像全路径
    print(each_img)
    image_input_fullname = infile + '/' + each_img
    resize_img = Image.open(image_input_fullname)
    #可以自定义大小
    out_w = 28  
    out_h = 28
    out_img = resize_img.resize((out_w,out_h), Image.ANTIALIAS)
    
    # 裁剪后每个图像的路径+名称
    image_output_fullname = outfile + "/" + each_img
    out_img.convert('RGB')
    out_img.save(image_output_fullname)
    n += 1
    
    print('%d/%d img has been resized!' %(n,l))

print('total_num is {%d} success resized img!' %len(list_img))

二、转换为MNIST数据格式

1.转换代码如下

import os
from PIL import Image
from array import *
from random import shuffle

# Load from and save to
Names = [['train-images','train'], ['t10k-images','t10k']]  #train-images为训练集存储文件夹   t10k-images为测试集存储文件夹

for name in Names:
	
	data_image = array('B')
	data_label = array('B')

	FileList = []
	for dirname in os.listdir(name[0]):      # [1:] Excludes .DS_Store from Mac OS
		path = os.path.join(name[0],dirname)
		for filename in os.listdir(path):
			if filename.endswith(".png"):
				FileList.append(os.path.join(name[0],dirname,filename))

	shuffle(FileList) # Usefull for further segmenting the validation set

	for filename in FileList:
		print(FileList)
		print(filename)
		label = int(filename.split('\\')[1])
		print(label)
		Im = Image.open(filename)

		pixel = Im.load()


		width, height = Im.size


		for x in range(0,width):
			for y in range(0,height):
				#data_image.append(pixel[y,x]) #使用这个会报错 “IndexError: list index out of range”
				data_image.append(Im.getpixel((x, y)))  # 改动的地方,能够完美运行不同尺寸的图像

		data_label.append(label) # labels start (one unsigned byte each)

	hexval = "{0:#0{1}x}".format(len(FileList),6) # number of files in HEX

	# header for label array

	header = array('B')
	header.extend([0,0,8,1,0,0])
	header.append(int('0x'+hexval[2:][:2],16))
	header.append(int('0x'+hexval[2:][2:],16))
	
	data_label = header + data_label

	# additional header for images array
	
	if max([width,height]) <= 256:
		header.extend([0,0,0,width,0,0,0,height])
	else:
		raise ValueError('Image exceeds maximum size: 256x256 pixels');

	header[3] = 3 # Changing MSB for image data (0x00000803)
	
	data_image = header + data_image

	output_file = open(name[1]+'-images-idx3-ubyte', 'wb')
	data_image.tofile(output_file)
	output_file.close()

	output_file = open(name[1]+'-labels-idx1-ubyte', 'wb')
	data_label.tofile(output_file)
	output_file.close()

# gzip resulting files

for name in Names:
	os.system('gzip '+name[1]+'-images-idx3-ubyte')
	os.system('gzip '+name[1]+'-labels-idx1-ubyte')

2.转换过程打印如下

在这里插入图片描述


3.最终转换结果

在这里插入图片描述
然后就可以用这些转好的MNIST格式的数据开始训练了

MNIST格式的10类交通标志数据集下载链接---->交通标志数据集10类下载链接MNIST格式

总结

以上就是今天要讲的内容,本文仅仅简单介绍了自建分类数据集转换为MNIST格式数据的过程,作者转换过程遇到一些坑,所以特此记录,供需要的人参考。

【开源数据集】交通标志数据集CCTSDB2021 CCTSDB2021交通标志数据集是由长沙理工大学的相关学者及团队制作而成的,其有交通标志样本图片有近 20000 张,共含交通标志近 40000 个,同时包含按尺寸、场景分类区分的图像数据集,含有丰富的道路背景信息 阅读详情

相关推荐

TensorFlow计算图与张量本质:从比利时交通标志实战入门

张量是深度学习的数据基石,计算图则是TensorFlow的执行范式——二者共同构成框架运行的底层逻辑。理解张量的数学定义、内存布局与动态类型变化,是避免reshape错误、dtype不匹配等高频问题的前提;掌握声明式计算图机制(如Session.run、占位符、变量初始化),才能突破‘print不出结果’的认知瓶颈。其技术价值在于支撑跨平台部署、内存优化与分布式训练,广泛应用于图像识别、边缘推理等工业场景。本文以比利时交通标志数据集为载体,深入解析从PPM图像加载、rgb2gray维度变换到28×28标准化

weixin_30231327的博客 287

YOLO5用于交通标志牌(TT100K数据集)的训练预测(包含数据集格式的转换——TT100K-CoCo格式-YOLO格式,数据集比例的重新划分以及对应图片集的重新划分)

YOLO5用于交通标志牌(TT100K数据集)的训练预测:包含数据集格式的转换——TT100K-CoCo格式-YOLO格式,数据集比例的重新划分以及对应图片集的重新划分、配置文件的书写。。

qq_37346140的博客 2万+

深度学习图像分类中的数据增强:从基础变换到高级策略的完整指南

数据增强是深度学习中的一项核心技术,旨在通过算法扩充训练数据,提升模型泛化能力。其原理在于对原始图像进行一系列变换,模拟真实世界中的视觉变化,从而让模型学习到更鲁棒的特征表示。这项技术的核心价值在于能以极低成本有效缓解过拟合问题,尤其在小样本和不平衡数据集场景下作用显著。在应用层面,数据增强广泛用于图像分类任务,涵盖从基础的几何与色彩变换到高级的混合样本方法。具体实践中,PyTorch等框架提供了丰富的增强工具,而针对不同领域如医学影像和工业质检,需定制化增强策略。本文聚焦于图像分类中的数据增强技术,详细解

weixin_34204722的博客 363

【网上开源的数据集】交通 数据集:【数据集-交通标志 红绿灯】红绿灯 交通标志

文章目录交通标志、信号灯相关的数据集1. 国内数据集1. Chinese Traffic Sign Database (好像是长沙理工大学的)2. Tsinghua-Tencent 100K Tutorial(信号标志,没有灯的)3. 一个游戏中的交通标志数据集;4. 滴滴数据集(没有交通标志)5. 百度 ApolloScape 数据集(只有信号灯、没有交通标志;且信号灯的数据集只能在线使用)2....

轮子去哪儿了 6万+

MNIST手写数字识别

MNIST手写数字识别 作者:禅与计算机程序设计艺术 / Zen and the Art of Computer Programming 关键词 MNIST, 手写数字识别, 卷积神经网络, 深度学习, 数据可视化 1. 背景介绍

AI大模型应用之禅 441

深度学习100例-生成对抗网络(DCGAN)手写数字生成 | 第19天

文章目录深度卷积生成对抗网络(DCGAN)一、前言二、什么是生成对抗网络?1. 设置GPU2. 加载和准备数据集三、创建模型1. 生成器2. 判别器四、定义损失函数和优化器1. 判别器损失2. 生成器损失五、定义训练循环六、训练模型七、创建 GIF八、同系列作品 深度卷积生成对抗网络(DCGAN) 一、前言 ???? 我的环境: 语言环境:Python3.6.5 编译器:jupyter notebook 深度学习环境:TensorFlow2.4.1 ???? 深度学习新人必看: 小白入门深度学习 |

“365天深度学习训练营”报名进行中~ 3846

基于深度学习的多类别目标检测与图像分类系统

标题:基于深度学习的多类别目标检测与图像分类系统内容:1.摘要 随着人工智能技术的飞速发展,深度学习在计算机视觉领域的应用日益广泛。本研究的目的在于开发一套基于深度学习的多类别目标检测与图像分类系统。方法上,采用了先进的卷积神经网络(CNN)架构,如Faster R - CNN用于目标检测,ResNet用于图像分类,并在大规模公开数据集上进行训练和优化。结果表明,该系统在目标检测任务中平均精度均值(mAP)达到了85%,在图像分类任务中的准确率达到了92%。结论是,所开发的系统具有较高的准确性和可靠性,能够

Candy5204的博客 1498

掌握CIFAR-10图像分类数据集:深度学习实践指南

CIFAR-10是一个广泛使用的数据集,由10个不同类别的60,000张32x32彩色图像组成,包含汽车、鸟、猫、鹿、狗、青蛙、马、船和卡车等类别。每个类别有6,000张图像,其中5,000张用作训练,1,000张用作测试。数据集的来源是加拿大高级研究所的机器学习组。CIFAR-10数据集在机器学习和深度学习中的重要性显而易见,因为它是一个实际场景的图像分类问题的标准数据集,被广泛应用于评估各种图像识别算法的性能。

weixin_42613017的博客 805

xml文件 卷积神经网络_《深度学习:卷积神经网络从入门到精通》——1.7.2 案例数据...

1.7.2 案例数据各章在介绍卷积神经网络的变种模型时,一般还给出了有关的应用案例。这些案例可能重复用到13个不同的数据集(大小信息和下载网址详见表1.2),分别是:MNIST(Mixed National Institute of Standard and Technology)、GTSRB(German Traff?ic Sign Recognition Benchmark)、RRSI(Roa...

weixin_39720865的博客 315

MNIST手写数字识别模型实战指南:3万轮训练结果展示

MNIST数据集是机器学习领域中非常经典的一个数据集,由0至9的手写数字图片组成,每张图片都是28*28像素的灰度图。它在学习深度学习、神经网络的初学者和研究者中被广泛使用。图像识别是计算机视觉的一个核心领域,它使机器能够通过分析数字图像或视频,自动识别出其中的内容。图像识别在诸如安全监控、医疗诊断、自动驾驶、无人机航拍和社交媒体等多个领域有着广泛的应用。随着深度学习技术的不断进步,图像识别的准确性得到了显著提升,为上述领域带来了革命性的变化。

weixin_36474966的博客 1112

Python 图像分类入门

图像分类作为深度学习的基础任务,旨在将输入图像划分到预定义的类别集合中。在实际的业务中,图像分类技术是比较常用的一种技术技能。例如,在安防监控中,可通过图像分类识别异常行为;在智能交通系统中,实现对交通标志和车辆类型的快速识别等。本文将通过安装包已有数据带你逐步了解使用 Python 进行图像分类的全过程。​。

这里是一位在代码世界深耕多年的 “老江湖” 的自留地。​ 岁月在履历上添了厚度,却没磨掉敲代码时眼里的光。从调试第一行 hello world 的生涩,到架构复杂系统的从容,那些在键盘敲击声里流过的日夜,都想在这里慢慢梳理 1565

TensorFlow 图像分类、目标检测、语义分割:全面解析与实战教程

图像分类是计算机视觉中的基本任务之一,目标是将输入的图像分类到预定义的类别中。每个图像只能属于一个类别,模型的输出通常是一个表示类别的标签。应用场景物体识别:例如识别猫、狗等动物,识别不同种类的水果。人脸识别:通过图像判断个人身份。手写数字识别:MNIST数据集中的数字分类。任务输入数据输出常用网络结构图像分类图像(通常为RGB或灰度图)类别标签(例如,0-9的数字或动物种类)目标检测的目标是识别图像中多个物体的位置和类别。

一碗黄焖鸡三碗米饭的博客 1407

基于5种机器学习方法的图像分类器项目实战

图像分类是计算机视觉中最基础且核心的任务之一,其目标是将输入图像自动分配到一个或多个预定义类别中。早期方法依赖人工设计特征(如颜色、纹理、形状),结合传统机器学习分类器进行判别;随着深度学习兴起,尤其是卷积神经网络(CNN)的发展,模型能够从原始像素中自动学习层次化特征表示,显著提升了分类精度。典型数据集推动了技术演进:MNIST(手写数字)用于初步验证,CIFAR-10 引入更复杂的小尺寸自然图像,而 ImageNet 大规模挑战则催生了深度模型的革命性突破。

weixin_42596011的博客 708

Folia 歌词动画上手机:把 1 个 PWA 图标装进主屏幕

Folia 这个歌词动画播放器没有原生 App,但 PWA 能把它装进手机主屏幕:一个独立图标,点开就是全屏、无地址栏的沉浸式播放窗口,核心资源还预缓存在本地,下次打开几乎秒进。下次通勤再打开它,整块屏幕都属于歌词动画。 ## 它凭什么像 App PWA(渐进式 Web 应用)本质是"装进主屏幕的网页":manifest 声明让它获得独立图标与全屏窗口,Service Worker 则把核心资

gitblog_00182的博客 504

交通标志 交通标志识别数据集

交通标志识别数据集

中国交通标志数据集.zip

中国交通标志数据集中国交通标志数据集中国交通标志数据中国交通标志数据集中国交通标志数据集中国交通标志数据集中国交通标志数据集中国交通标志数据集中国交通标志数据集中国交通标志数据中国交通标志数据集中国交通标志数据集中国交通标志数据集中国交通标志数据集中国交通标志数据集中国交通标志数据集中国交通标志数据中国交通标志数据集中国交通标志数据集中国交通标志数据集中国交通标志数据集中国交通标志数据集中国交通标志数据集中国交通标志数据中国交通标志数据集中国交通标志数据集中国交通标志数据集中国交通标志数据集中国交通标志数据集中国交通标志数据集中国交通标志数据中国交通标志数据集中国交通标志数据集中国交通标志数据集中国交通标志数据集中国交通标志数据集中国交通标志数据集中国交通标志数据中国交通标志数据集中国交通标志数据集中国交通标志数据集中国交通标志数据集中国交通标志数据集中国交通标志数据集中国交通标志数据中国交通标志数据集中国交通标志数据集中国交通标志数据集中国交通标志数据集

【机器学习入门】第16讲:深度学习框架入门(PyTorch)——从张量到智能创造的钥匙

作为最受欢迎的深度学习框架之一,提供了灵活的张量操作与自动求导机制,让研究者专注于模型设计而非底层实现。本文将带你从零掌握PyTorch核心功能,开启高效深度学习开发之旅。链接:https://pan.quark.cn/s/fe4976448ca1。链接:https://pan.quark.cn/s/4598337f6b3e。链接:https://pan.quark.cn/s/5180c62aacf7。复制整段内容,打开最新版「夸克APP」即可获取。伏脂撺掇蒌葶苘洞座 /

工宗浩生财指南针 306

uniapp+openlayers集成天地图实战:renderjs通信陷阱与性能优化避坑指南

本文深入探讨了uniapp与openlayers集成天地图时的renderjs通信陷阱与性能优化策略。通过实战案例解析了renderjs的特殊通信机制、地图实例生命周期管理、图层懒加载等关键技巧,帮助开发者避免常见坑点,提升应用流畅度。特别针对多语言切换、热重载偏移等疑难问题提供了解决方案,是uniapp+openlayers开发者的实用避坑指南。

weixin_30872157的博客 362

深度学习者的入门福利-Keras深度学习笔记

Keras深度学习笔记最近本人在github上发现一个不错的资源,是利用keras来学习深度学习的笔记,笔记内容充实,数据完善,本人亲自实操了里面的所有例子,深感收获颇丰,今天特意推荐给...

fengdu78的博客 334

C++/WinRT入门指南:现代Windows原生开发的核心技术

Windows运行时(WinRT)是微软为现代Windows应用开发设计的一套跨语言API框架,它基于COM技术原理构建,提供了统一的二进制接口标准。这项技术的核心价值在于让开发者能够以原生性能调用系统级功能,同时保持跨语言兼容性。在工程实践中,C++/WinRT作为官方推荐的C++语言投影,通过标准C++语法封装WinRT API,显著降低了开发复杂度。特别是在异步编程场景中,结合C++20协程特性,能够大幅提升代码可读性和维护性。对于需要高性能图形处理、系统集成或跨平台兼容的桌面应用开发,掌握C++/W

weixin_33910191的博客 1198

MATLAB算法实战应用案例精讲-【数模应用】校准曲线(附MATLAB、python和R语言代码实现)

模型校准曲线(Calibration Curve),也称为可靠性曲线(Reliability Curve)或概率校准曲线(Probability Calibration Curve),是一种评估分类模型输出概率准确性的图形工具。它可以帮助我们理解模型的预测概率是否与实际标签的分布一致。校准曲线通常包括以下步骤:计算模型预测概率:对于测试集中的每个样本,模型会输出一个概率值,表示样本属于正类的概率。将数据分桶:将这些概率值分成若干个等宽的桶(例如10个桶),每个桶中的样本具有相似的预测概率。

qq_36130719的博客 559
上一篇: 【深度学习笔记】目标检测之区域入侵判断代码
下一篇: YOLOv6算法新鲜出炉--训练自己数据集过程
onnx
博客等级 码龄5年 1万+粉丝 416原创
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

onnx

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值