GTSRB 德国交通标志识别图数据集有原始整理数据集和YOLO格式数据集已整理好数据集图片ppm已转为png直接可用信息都在csv43个类别每个类别有序列原始数据集Train集39209张Test集12630张yolo格式数据集测试集原始Test集训练集/验证集原始Train集按8:2划train 31367val 7842-用yolov5训练100轮map50为0.947GTSRB 德国交通标志识别数据集与YOLO训练方案下面是GTSRB德国交通标志识别基准数据集的详细信息、整理说明以及基于YOLOv5的训练代码实现。一、数据集信息表项目详情数据集名称GTSRBGerman Traffic Sign Recognition Benchmark任务类型交通标志分类/目标检测类别数量43类不同的交通标志原始数据格式图片ppm格式CSV标注文件整理后格式PNG图片 YOLO TXT标签格式原始数据规模训练集39,209张测试集12,630张YOLO划分训练集31,367张原始训练集按8:2划分验证集7,842张测试集12,630张保持原始模型性能YOLOv5 训练100轮mAP0.5 0.947标注信息CSV文件包含文件名、图像宽高、边界框坐标(x1,y1,x2,y2)、类别ID二、YOLO格式数据集转换与使用1. 数据集目录结构GTSRB-YOLO/ ├── images/ │ ├── train/ # 31367张训练图片 │ ├── val/ # 7842张验证图片 │ └── test/ # 12630张测试图片 ├── labels/ │ ├── train/ # 对应图片的YOLO标签文件 │ ├── val/ │ └── test/ └── dataset.yaml # YOLO配置文件2. 数据集配置文件dataset.yamlpath:./GTSRB-YOLOtrain:images/trainval:images/valtest:images/testnc:43names:0:Speed limit 201:Speed limit 302:Speed limit 503:Speed limit 604:Speed limit 705:Speed limit 806:End of speed limit 807:Speed limit 1008:Speed limit 1209:No overtaking10:No overtaking trucks11:Right-of-way at intersection12:Priority road13:Yield14:Stop15:No vehicles16:No trucks17:No entry18:General caution19:Dangerous curve left20:Dangerous curve right21:Double curve22:Bumpy road23:Slippery road24:Road narrows right25:Road work26:Traffic signals27:Pedestrians28:Children crossing29:Bicycles crossing30:Beware of ice/snow31:Wild animals crossing32:End speed overtaking33:Turn right ahead34:Turn left ahead35:Ahead only36:Go straight or right37:Go straight or left38:Keep right39:Keep left40:Roundabout mandatory41:End of no overtaking42:End of no overtaking trucks3. CSV标注转YOLO格式脚本importosimportcsvimportcv2defconvert_gtsrb_csv_to_yolo(csv_path,img_dir,output_label_dir):os.makedirs(output_label_dir,exist_okTrue)withopen(csv_path,r)asf:readercsv.DictReader(f,delimiter;)forrowinreader:filenamerow[Filename]widthint(row[Width])heightint(row[Height])x1int(row[Roi.x1])y1int(row[Roi.y1])x2int(row[Roi.x2])y2int(row[Roi.y2])class_idint(row[ClassId])# 转换为YOLO格式归一化中心坐标和宽高x_center(x1x2)/2.0/width y_center(y1y2)/2.0/height w(x2-x1)/width h(y2-y1)/height label_filenameos.path.splitext(filename)[0].txtlabel_pathos.path.join(output_label_dir,label_filename)withopen(label_path,w)aslf:lf.write(f{class_id}{x_center:.6f}{y_center:.6f}{w:.6f}{h:.6f}\n)# 使用示例# convert_gtsrb_csv_to_yolo(Train.csv, images/train, labels/train)三、YOLOv5训练代码fromultralyticsimportYOLOdeftrain_gtsrb():# 加载YOLOv5模型modelYOLO(yolov5s.pt)# 训练配置resultsmodel.train(datadataset.yaml,epochs100,batch32,imgsz640,device0,workers8,projectruns/gtsrb,nameyolov5s_train,pretrainedTrue,augmentTrue,mosaic0.7,hsv_h0.015,hsv_s0.7,hsv_v0.4,fliplr0.5,cacheTrue)# 训练完成后评估metricsmodel.val()print(f训练完成mAP0.5:{metrics.box.map50:.3f})print(最优模型路径,results.best)if__name____main__:train_gtsrb()四、训练曲线解读从你提供的训练曲线图可以看出损失函数train/box_loss、train/cls_loss、train/dfl_loss都随着训练轮次下降并趋于稳定说明模型在不断学习边界框和分类特征。验证集损失val/box_loss、val/cls_loss也同步下降没有出现明显过拟合现象。精度指标precision、recall、mAP0.5随着训练轮次上升最终mAP0.5达到0.947说明模型对交通标志的识别效果很好。五、使用说明环境准备conda create-ngtsrbpython3.10-yconda activate gtsrb pipinstallultralytics opencv-python pandas数据准备运行上面的convert_gtsrb_csv_to_yolo脚本将CSV标注转换为YOLO格式。确保dataset.yaml中的路径指向正确的数据集目录。模型训练运行python train.py训练完成后最优模型会保存在runs/gtsrb/yolov5s_train/weights/best.pt。模型推理fromultralyticsimportYOLO modelYOLO(runs/gtsrb/yolov5s_train/weights/best.pt)resultsmodel(test_image.png,conf0.25)results[0].show()
GTSRB(German Traffic Sign Recognition Benchmark) 任务类型 交通标志分类 / 目标检测 德国交通标志识别图数据集
发布时间:2026/7/10 5:24:09
GTSRB 德国交通标志识别图数据集有原始整理数据集和YOLO格式数据集已整理好数据集图片ppm已转为png直接可用信息都在csv43个类别每个类别有序列原始数据集Train集39209张Test集12630张yolo格式数据集测试集原始Test集训练集/验证集原始Train集按8:2划train 31367val 7842-用yolov5训练100轮map50为0.947GTSRB 德国交通标志识别数据集与YOLO训练方案下面是GTSRB德国交通标志识别基准数据集的详细信息、整理说明以及基于YOLOv5的训练代码实现。一、数据集信息表项目详情数据集名称GTSRBGerman Traffic Sign Recognition Benchmark任务类型交通标志分类/目标检测类别数量43类不同的交通标志原始数据格式图片ppm格式CSV标注文件整理后格式PNG图片 YOLO TXT标签格式原始数据规模训练集39,209张测试集12,630张YOLO划分训练集31,367张原始训练集按8:2划分验证集7,842张测试集12,630张保持原始模型性能YOLOv5 训练100轮mAP0.5 0.947标注信息CSV文件包含文件名、图像宽高、边界框坐标(x1,y1,x2,y2)、类别ID二、YOLO格式数据集转换与使用1. 数据集目录结构GTSRB-YOLO/ ├── images/ │ ├── train/ # 31367张训练图片 │ ├── val/ # 7842张验证图片 │ └── test/ # 12630张测试图片 ├── labels/ │ ├── train/ # 对应图片的YOLO标签文件 │ ├── val/ │ └── test/ └── dataset.yaml # YOLO配置文件2. 数据集配置文件dataset.yamlpath:./GTSRB-YOLOtrain:images/trainval:images/valtest:images/testnc:43names:0:Speed limit 201:Speed limit 302:Speed limit 503:Speed limit 604:Speed limit 705:Speed limit 806:End of speed limit 807:Speed limit 1008:Speed limit 1209:No overtaking10:No overtaking trucks11:Right-of-way at intersection12:Priority road13:Yield14:Stop15:No vehicles16:No trucks17:No entry18:General caution19:Dangerous curve left20:Dangerous curve right21:Double curve22:Bumpy road23:Slippery road24:Road narrows right25:Road work26:Traffic signals27:Pedestrians28:Children crossing29:Bicycles crossing30:Beware of ice/snow31:Wild animals crossing32:End speed overtaking33:Turn right ahead34:Turn left ahead35:Ahead only36:Go straight or right37:Go straight or left38:Keep right39:Keep left40:Roundabout mandatory41:End of no overtaking42:End of no overtaking trucks3. CSV标注转YOLO格式脚本importosimportcsvimportcv2defconvert_gtsrb_csv_to_yolo(csv_path,img_dir,output_label_dir):os.makedirs(output_label_dir,exist_okTrue)withopen(csv_path,r)asf:readercsv.DictReader(f,delimiter;)forrowinreader:filenamerow[Filename]widthint(row[Width])heightint(row[Height])x1int(row[Roi.x1])y1int(row[Roi.y1])x2int(row[Roi.x2])y2int(row[Roi.y2])class_idint(row[ClassId])# 转换为YOLO格式归一化中心坐标和宽高x_center(x1x2)/2.0/width y_center(y1y2)/2.0/height w(x2-x1)/width h(y2-y1)/height label_filenameos.path.splitext(filename)[0].txtlabel_pathos.path.join(output_label_dir,label_filename)withopen(label_path,w)aslf:lf.write(f{class_id}{x_center:.6f}{y_center:.6f}{w:.6f}{h:.6f}\n)# 使用示例# convert_gtsrb_csv_to_yolo(Train.csv, images/train, labels/train)三、YOLOv5训练代码fromultralyticsimportYOLOdeftrain_gtsrb():# 加载YOLOv5模型modelYOLO(yolov5s.pt)# 训练配置resultsmodel.train(datadataset.yaml,epochs100,batch32,imgsz640,device0,workers8,projectruns/gtsrb,nameyolov5s_train,pretrainedTrue,augmentTrue,mosaic0.7,hsv_h0.015,hsv_s0.7,hsv_v0.4,fliplr0.5,cacheTrue)# 训练完成后评估metricsmodel.val()print(f训练完成mAP0.5:{metrics.box.map50:.3f})print(最优模型路径,results.best)if__name____main__:train_gtsrb()四、训练曲线解读从你提供的训练曲线图可以看出损失函数train/box_loss、train/cls_loss、train/dfl_loss都随着训练轮次下降并趋于稳定说明模型在不断学习边界框和分类特征。验证集损失val/box_loss、val/cls_loss也同步下降没有出现明显过拟合现象。精度指标precision、recall、mAP0.5随着训练轮次上升最终mAP0.5达到0.947说明模型对交通标志的识别效果很好。五、使用说明环境准备conda create-ngtsrbpython3.10-yconda activate gtsrb pipinstallultralytics opencv-python pandas数据准备运行上面的convert_gtsrb_csv_to_yolo脚本将CSV标注转换为YOLO格式。确保dataset.yaml中的路径指向正确的数据集目录。模型训练运行python train.py训练完成后最优模型会保存在runs/gtsrb/yolov5s_train/weights/best.pt。模型推理fromultralyticsimportYOLO modelYOLO(runs/gtsrb/yolov5s_train/weights/best.pt)resultsmodel(test_image.png,conf0.25)results[0].show()