夜间车辆 信号灯识别检测数据集 共3500张 YOLO数据集
夜间车辆与交通信号识别检测数据集(Nighttime Vehicle & Traffic Signal Recognition Dataset)
数据集概述
这是一个专为夜间环境设计的车辆和交通信号识别检测数据集,共包含3500张高质量的夜间图像,涵盖了多种交通工具和交通标志。数据集采用YOLO格式标注,便于与其他YOLO框架配合使用。该数据集旨在帮助研究人员和开发者开发适用于夜间条件下的自动驾驶、智能交通管理以及安全驾驶辅助系统。
数据集特点
- 夜间环境:数据集中的图像全部拍摄于夜晚,模拟真实世界中的夜间驾驶场景。
- 多样化物体:包含各种车辆类型(汽车、自行车、摩托车、公交车、火车、卡车等)、行人、骑行者、交通信号灯和交通标志等多种对象。
- YOLO格式标注:所有图像都带有YOLO格式的标注,便于与其他YOLO框架配合使用。
- 大样本量:总共有3500张图像,提供了充足的训练数据。
- 数据集划分:数据集可能已经按照一定的比例划分为训练集、验证集和测试集,具体划分方式取决于数据集发布方的设计。
数据集构成
- 图像数量:3500张
- 类别数:
- bicycle:178个实例
- bus:297个实例
- car:30521个实例
- motorcycle:86个实例
- other vehicle:6个实例
- pedestrian:2392个实例
- rider:103个实例
- traffic light:10515个实例
- traffic sign:11042个实例
- train:5个实例
- truck:615个实例
数据集用途
- 夜间自动驾驶:训练和优化夜间环境下自动驾驶系统的感知模块,提高安全性。
- 智能交通管理系统:帮助交通管理部门实时监测和管理夜间交通流量,减少交通事故。
- 安全驾驶辅助系统:为驾驶员提供夜间行驶时的视觉辅助,避免因视线不良导致的安全隐患。
- 性能评估:作为基准数据集,比较不同算法或模型在夜间环境下的性能差异。
- 研究与开发:支持学术界和工业界的夜间物体检测研究,推动技术创新。
- 教育与培训:作为教学材料,帮助学生了解实际应用场景下的机器学习问题解决过程。
示例代码
以下是一个简单的Python脚本示例,用于加载数据集中的一对图像-标签对,并可视化其中的标注信息:
import os
import cv2
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.patches import Rectangle# 数据集目录路径
data_dir = 'path/to/night_vehicle_signal_dataset'
train_image_dir = os.path.join(data_dir, 'images/train')
train_label_dir = os.path.join(data_dir, 'labels/train')# 选取一张训练图像及其对应标签
image_files = os.listdir(train_image_dir)
image_file = image_files[0] # 假设取第一张图
label_file = os.path.splitext(image_file)[0] + '.txt'image_path = os.path.join(train_image_dir, image_file)
label_path = os.path.join(train_label_dir, label_file)# 加载图像
image = cv2.imread(image_path, cv2.IMREAD_COLOR)
height, width, _ = image.shape# 解析YOLO格式标签
def parse_yolo_label(label_path, image_width, image_height):bboxes = []with open(label_path, 'r') as f:lines = f.readlines()for line in lines:class_id, x_center, y_center, box_width, box_height = map(float, line.strip().split())x_min = int((x_center - box_width / 2) * image_width)y_min = int((y_center - box_height / 2) * image_height)box_width = int(box_width * image_width)box_height = int(box_height * image_height)bboxes.append((class_id, x_min, y_min, box_width, box_height))return bboxes# 解析标签
bboxes = parse_yolo_label(label_path, width, height)# 可视化标注
fig, ax = plt.subplots(figsize=(10, 10))
ax.imshow(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))
colors = ['red', 'blue', 'green', 'orange', 'purple', 'yellow', 'pink', 'brown', 'gray', 'black']names = ['bicycle', 'bus', 'car', 'motorcycle', 'other vehicle', 'pedestrian', 'rider', 'traffic light', 'traffic sign', 'train', 'truck']for bbox, color_name in zip(bboxes, colors):class_id, x, y, w, h = bboxrect = Rectangle((x, y), w, h, linewidth=2, edgecolor=color_name, facecolor='none')ax.add_patch(rect)ax.text(x, y - 10, names[int(class_id)], color=color_name, fontsize=8)plt.title('Nighttime Vehicle & Traffic Signal Detection')
plt.axis('off')
plt.show()
数据集结构示例
├── nighttime_vehicle_signal_dataset
│ ├── images
│ │ ├── train
│ │ │ ├── 00000.jpg
│ │ │ ├── 00001.jpg
│ │ │ └── ...
│ │ ├── validation
│ │ │ ├── 00000.jpg
│ │ │ ├── 00001.jpg
│ │ │ └── ...
│ │ └── test
│ │ ├── 00000.jpg
│ │ ├── 00001.jpg
│ │ └── ...
│ ├── labels
│ │ ├── train
│ │ │ ├── 00000.txt
│ │ │ ├── 00001.txt
│ │ │ └── ...
│ │ ├── validation
│ │ │ ├── 00000.txt
│ │ │ ├── 00001.txt
│ │ │ └── ...
│ │ └── test
│ │ ├── 00000.txt
│ │ ├── 00001.txt
│ │ └── ...
│ └── data.yaml # 包含数据集的基本信息如类别数及类别名