YOLO停车位识别 图片数量12416张,xml和txt标签都有; 2类类别:space-empty,space-occupied;
用于yolo,Python,目标检测,机器学习,人工智能,深度学习,停车场空位检测,停车场空位识别,智慧停车场
包含从监控摄像头帧中提取的 12,416 张停车场图像。有晴天、阴天和雨天的图像,并且停车位被标记为已占用或空置
停车位识别数据集介绍
数据集名称
YOLO停车位识别数据集 (YOLO Parking Space Detection Dataset)
数据集概述
本数据集是一个专门用于训练和评估停车位识别模型的数据集,特别适用于基于YOLO(You Only Look Once)系列的目标检测任务。数据集包含12,416张高分辨率的停车场图像,这些图像从监控摄像头帧中提取,并且涵盖了不同天气条件下的场景(晴天、阴天和雨天)。每张图像都标注了停车位的状态,分为"空闲"(space-empty)和"已占用"(space-occupied)两类。数据集提供了XML和TXT两种格式的标注文件,方便用户根据需要选择。
数据集特点
- 大规模:包含12,416张高分辨率图像,适合深度学习模型的训练。
- 多样化天气条件:图像涵盖晴天、阴天和雨天等多种天气条件,提高了模型的鲁棒性。
- 详细标注:每张图像都有详细的标注信息,包括停车位的位置和状态(空闲或已占用)。
- 多种标注格式:提供XML和TXT两种标注格式,便于不同工具和框架的使用。
- 适用广泛:适用于目标检测、机器学习、人工智能、深度学习等领域的研究和应用,特别是停车场空位检测和智慧停车场系统。
数据集结构
parking_space_detection_dataset/
├── images/ # 图像文件
│ ├── 00001.jpg # 示例图像
│ ├── 00002.jpg
│ └── ...
├── labels_xml/ # XML标注文件
│ ├── 00001.xml # 示例标注
│ ├── 00002.xml
│ └── ...
├── labels_txt/ # TXT标注文件
│ ├── 00001.txt # 示例标注
│ ├── 00002.txt
│ └── ...
├── data.yaml # 类别描述文件
└── README.md # 数据集说明
数据集内容
-
images/
- 功能:存放图像文件。
- 内容 :
- 12,416张高分辨率的停车场图像,涵盖不同天气条件下的场景。
-
labels_xml/
- 功能:存放XML格式的标注文件。
- 内容 :
- 每张图像对应的XML标注文件,包含停车位的位置和状态信息。
-
labels_txt/
- 功能:存放TXT格式的标注文件。
- 内容 :
- 每张图像对应的TXT标注文件,适用于YOLO系列模型的训练。
-
data.yaml
-
功能:定义数据集的类别和其他相关信息。
-
内容 :
train: ./images/train val: ./images/val nc: 2 names: ['space-empty', 'space-occupied']
-
-
README.md
- 功能:数据集的详细说明文档。
- 内容 :
- 数据集的来源和用途。
- 数据集的结构和内容。
- 如何使用数据集进行模型训练和评估。
- 其他注意事项和建议。
使用说明
-
环境准备
-
安装依赖库:
pip install -r requirements.txt
-
确保安装了YOLOv8所需的库,例如
ultralytics
。
-
-
数据集路径设置
- 将数据集解压到项目目录下,确保路径正确。
-
转换标注格式(可选)
-
如果需要将XML标注转换为YOLO格式的TXT标注,可以使用以下脚本:
import os import xml.etree.ElementTree as ET from PIL import Image def convert_xml_to_yolo(xml_path, image_path, output_path): tree = ET.parse(xml_path) root = tree.getroot() image = Image.open(image_path) width, height = image.size with open(output_path, 'w') as f: for obj in root.findall('object'): name = obj.find('name').text bbox = obj.find('bndbox') xmin = int(bbox.find('xmin').text) ymin = int(bbox.find('ymin').text) xmax = int(bbox.find('xmax').text) ymax = int(bbox.find('ymax').text) x_center = (xmin + xmax) / 2.0 / width y_center = (ymin + ymax) / 2.0 / height w = (xmax - xmin) / width h = (ymax - ymin) / height if name == 'space-empty': class_id = 0 elif name == 'space-occupied': class_id = 1 else: continue f.write(f"{class_id} {x_center} {y_center} {w} {h}\n") # 批量转换 for filename in os.listdir('labels_xml'): if filename.endswith('.xml'): xml_path = os.path.join('labels_xml', filename) image_path = os.path.join('images', filename.replace('.xml', '.jpg')) output_path = os.path.join('labels_txt', filename.replace('.xml', '.txt')) convert_xml_to_yolo(xml_path, image_path, output_path)
-
-
划分数据集
-
可以使用
train_test_split
函数来划分训练集和验证集:import os import random from sklearn.model_selection import train_test_split images = [f for f in os.listdir('images') if f.endswith('.jpg')] train_images, val_images = train_test_split(images, test_size=0.2, random_state=42) with open('train.txt', 'w') as f: for img in train_images: f.write(f'./images/{img}\n') with open('val.txt', 'w') as f: for img in val_images: f.write(f'./images/{img}\n')
-
-
训练模型
-
使用YOLOv8或其他目标检测模型进行训练。以下是一个示例命令:
python train.py --data data.yaml --weights yolov8n.pt --epochs 100 --img 640 --batch 16
-
-
验证模型
-
使用验证集进行模型验证:
Bash
深色版本
python val.py --data data.yaml --weights runs/train/exp/weights/best.pt --img 640 --batch 16
-
-
推理模型
-
使用训练好的模型进行推理:
Bash
深色版本
python detect.py --source test_images/ --weights runs/train/exp/weights/best.pt --img 640 --conf 0.5
-
注意事项
- 数据格式:确保输入的数据格式正确,特别是图像和标注文件的格式。
- 超参数调整:根据实际情况调整学习率、批大小等超参数,以获得最佳训练效果。
- 硬件要求:建议使用GPU进行训练,以加快训练速度。如果没有足够的计算资源,可以考虑使用云服务提供商的GPU实例。
- 平衡数据:注意数据集中各类别之间的不平衡问题,可以通过过采样、欠采样或使用类别权重等方式来解决。
通过上述步骤,你可以成功地使用这个高质量的停车位识别数据集进行模型训练和评估。这个数据集不仅适用于学术研究,还可以应用于实际的智慧停车场系统中,帮助提升停车场管理的效率和用户体验。希望这个数据集能帮助你更好地理解和应用最新的目标检测技术。