本文介绍一个专门用于识别羽毛球运动员、裁判和羽毛球的计算机视觉数据集。该数据集包含2879张高质量标注图片,在YOLO系列模型上测试识别率达到84.4%。数据集支持多种格式:YOLO标注格式、COCO JSON格式和PASCAL VOC XML格式,方便不同框架使用。文末还提供了完整的模型训练代码,帮助读者快速上手。
数据集特点:
- 高质量标注:每张图片都经过精细标注,边界框准确
- 多格式支持:YOLO、COCO、VOC三种主流格式
- 真实场景:包含比赛现场、训练场景等多种环境
- 数据增强:包含模糊图片作为正样本,提升模型鲁棒性
模型训练指标参数:

模型训练图:

数据集拆分与预处理
数据分布
- 总图数:2879张
- 训练集:2526张(约87.7%)
- 验证集:236张(约8.2%)
- 测试集:117张(约4.1%)
预处理流程
数据增强策略
- 当前配置:无额外增强(保持原始数据分布)
- 建议增强:可根据需要添加旋转、裁剪、色彩抖动等
应用场景说明:这种标准化的拆分比例(约8:1:1)适用于大多数目标检测任务。训练集充足确保模型充分学习特征,验证集用于调参防止过拟合,测试集提供最终性能评估。640×640的输入尺寸平衡了计算效率和检测精度,适合部署在边缘设备或云端服务器。
数据集标签说明
数据集包含3个类别,覆盖网球比赛中的关键元素:
# 类别标签(英文)
labels = ['referee', 'tennis ball', 'player']
| referee | 裁判 | 比赛中的裁判人员 |
| tennis ball | 网球 | 比赛用球(原文误写为"羽毛球",实际为网球) |
| player | 球员/选手 | 网球运动员 |
应用场景扩展:
数据集图片和标注信息示例
数据质量说明
数据集中包含部分模糊图片,这并非数据缺陷,而是精心设计的数据增强策略。在真实体育场景中,快速运动、相机抖动、光线变化都会导致图像模糊,因此包含模糊样本能显著提升模型在实际应用中的表现。
模糊图片的三大优势
提升模型鲁棒性:现实体育场景中,运动员快速移动、相机跟拍、光线变化都会导致运动模糊和对焦不准。在训练集中引入模糊样本,迫使模型学习更本质的语义特征(如人体姿态、球体形状),而非过度依赖清晰的边缘细节。这显著提升了模型在复杂成像条件下的识别稳定性。
模拟真实世界噪声:体育场馆的监控摄像头、手持摄影设备在低光照或快速变焦时极易产生模糊。包含此类图片让模型提前适应真实噪声,减少在实际部署时因图像质量下降导致的性能衰减。例如,在夜间比赛或室内场馆中,模型仍能保持较高识别率。
防止模型过拟合:如果训练集全是高清摆拍图片,模型容易记住特定场景下的"干净"特征,对新环境泛化能力差。模糊图片作为有效的正则化手段,增加了数据分布的多样性,防止模型过拟合到有限的清晰样本上,提升跨场景迁移能力。
实际应用价值:
- 移动端部署:手机APP实时识别网球比赛,即使拍摄抖动也能准确标注
- 无人机航拍:高空拍摄的模糊图像仍能识别球员和球的位置
- 老旧监控系统:低分辨率摄像头也能用于赛事分析
- 实时转播:高速运动场景下保持稳定的目标跟踪

数据集下载:
yolo26,yolo v12,yolo v11,yolo v9,yolo v8,yolo v7,coco json,pascal voc xml: 下载地址:
YOLO模型训练
下载数据集之后解压到当前文件夹,然后将 我的仓库 https://gitcode.com/pbymw8iwm/YOLOProject 里的训练模型脚本复制到文件夹下,假设你使用的是yolov8来训练你就用python train_yolov8.py 
模型验证测试情况:
验证测试代码:
#需要安装pip install ultralytics
from ultralytics import YOLO
import cv2
# ===================== 1. 加载YOLO模型 =====================
# 自动下载预训练模型(yolov8n最轻量快速),也可换 yolov8s/m/l/x
model = YOLO("best.pt")
# ===================== 2. 推理配置 =====================
image_path = "326_jpg.rf.8ad64cc0668df32c4e5f59b50e899e9c.jpg" # 你的图片路径
save_result = True # 是否保存标注后的图
# ===================== 3. 执行推理 =====================
results = model.predict(
source=image_path,
conf=0.01, # 置信度阈值(低于该值忽略)
save=False, # 关闭默认保存,自定义保存
verbose=False # 关闭冗余日志
)
# ===================== 4. 解析结果:目标区域 + 标注信息 =====================
print("="*50)
print("YOLO 推理结果(目标区域 + 标注信息)")
print("="*50)
# 获取图片(用于绘制框)
img = cv2.imread(image_path)
# 遍历所有检测目标
for idx, result in enumerate(results):
boxes = result.boxes # 所有检测框
for box in boxes:
# ========== 提取目标区域(坐标) ==========
# xyxy: 左上角x, 左上角y, 右下角x, 右下角y
x1, y1, x2, y2 = box.xyxy[0].cpu().numpy()
# 宽高
w = x2 – x1
h = y2 – y1
# ========== 提取标注信息 ==========
cls_id = int(box.cls[0]) # 类别ID
cls_name = model.names[cls_id] # 类别名称
conf = float(box.conf[0]) # 置信度
# ========== 打印信息 ==========
print(f"目标 {idx+1}:")
print(f" 标注类别:{cls_name}")
print(f" 置信度:{conf:.2f}")
print(f" 目标区域坐标:")
print(f" 左上角 ({x1:.1f}, {y1:.1f})")
print(f" 右下角 ({x2:.1f}, {y2:.1f})")
print(f" 宽×高:{w:.1f} × {h:.1f}")
print("-"*30)
# ========== 在图片上绘制检测框 ==========
cv2.rectangle(img, (int(x1), int(y1)), (int(x2), int(y2)), (0, 255, 0), 2)
cv2.putText(img, f"{cls_name} {conf:.2f}",
(int(x1), int(y1)–10),
cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 0), 2)
# ===================== 5. 保存/显示结果 =====================
if save_result:
cv2.imwrite("yolo_result.jpg", img)
print("✅ 标注图片已保存为:yolo_result.jpg")
# 显示图片(可选)
cv2.imshow("YOLO Result", img)
#cv2.waitKey(0)
#cv2.destroyAllWindows()
网硕互联帮助中心
![【LangGraph实战】《LangGraph实战》_154.[第8章 LangGraph平台] langgraph.json配置文件:应用程序格式定义详解-网硕互联帮助中心](https://www.wsisp.com/helps/wp-content/uploads/2026/08/20260808044058-6a76b35a033e9-220x150.png)


评论前必须登录!
注册