手势手语识别数据集,YOLOv5目标检测
两个数据集,图大量,模型精度高分别为近100类
手势手语识别数据集(Sign Language Gesture Recognition Dataset)
数据集概述
该数据集专为手势手语识别设计,包含大量的图像样本,涵盖了80种不同的手势类别。这些手势包括日常生活中常见的动作和表达,如食物、饮料、问候、支付方式等。数据集采用YOLOv5格式进行标注,适用于基于YOLOv5的目标检测任务。该数据集已经划分好训练集、验证集和测试集,并且应用了多种数据增强技术,以提高模型的泛化能力。
数据集特点
- 大量图像:数据集中包含数千张高分辨率的手势图像,确保模型能够学习到丰富的特征。
- 多样化手势:涵盖80种不同的手势类别,包括但不限于食物、饮料、问候、支付方式等。
- 详细标注:每张图像都附有精确的边界框以及类别标签,便于训练目标检测模型。
- 标准化格式:图像采用JPG格式存储,标签则按照YOLOv5格式组织,方便与主流框架结合使用。
- 数据增强:数据集已应用多种数据增强策略,如旋转、翻转、亮度调整等,以增加样本多样性。
- 高精度模型:提供了预训练的YOLOv5模型,具有较高的识别精度。
数据集构成
- 图像数量:数千张高分辨率图像
- 图像格式:JPG
- 标签数量:对应每张图像各有一个YOLOv5格式的文本文件
- 类别数:80类
- 类别名称:
- additional, alcohol, allergy, bacon, bag, barbecue, bill, biscuit, bitter, bread, burger, bye, cake, cash, cheese,
- chicken, coke, cold, cost, coupon, credit card, cup, dessert, drink, drive, eat, eggs, enjoy, fork, french fries, fresh,
- hello, hot, icecream, ingredients, juicy, ketchup, lactose, lettuce, lid, manager, menu, milk, mustard, napkin, no, order,
- pepper, pickle, pizza, please, ready, receipt, refill, repeat, 等
- 数据集划分:
- 训练集
- 验证集
- 测试集
- 数据增强:应用了多种数据增强技术
数据集用途
- 手势识别:用于开发高效准确的手势识别算法,识别并分类各种手势。
- 手语翻译:结合手语翻译系统,帮助聋哑人与他人进行沟通。
- 交互界面:用于开发基于手势的用户交互界面,如智能家居控制、虚拟现实等。
- 性能评估:作为基准数据集,可以用来比较不同算法或模型之间的性能差异。
- 研究与开发:支持学术界和工业界的研究人员探索新的计算机视觉技术和方法。
- 教育与培训:适合作为教材内容,帮助学生理解实际应用场景下的机器学习问题解决流程。
- 预训练:可以用作预训练数据集,帮助用户在自己的特定数据集上快速启动训练过程。
示例代码
以下是一个简单的Python脚本示例,用于加载数据集中的一对图像-标签对,并可视化其中的标注信息:
import os
import cv2
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.patches import Rectangle
# 数据集目录路径
data_dir = 'path/to/sign_language_gesture_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
# 解析YOLOv5格式标签
with open(label_path, 'r') as f:
lines = f.readlines()
bboxes = []
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) * width)
y_min = int((y_center - box_height / 2) * height)
box_width = int(box_width * width)
box_height = int(box_height * height)
bboxes.append((class_id, x_min, y_min, box_width, box_height))
# 可视化标注
fig, ax = plt.subplots(figsize=(10, 10))
ax.imshow(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))
colors = ['red', 'green', 'blue', 'yellow', 'cyan', 'magenta'] # 分别代表不同颜色
names = [
'additional', 'alcohol', 'allergy', 'bacon', 'bag', 'barbecue', 'bill', 'biscuit', 'bitter', 'bread', 'burger', 'bye',
'cake', 'cash', 'cheese', 'chicken', 'coke', 'cold', 'cost', 'coupon', 'credit card', 'cup', 'dessert', 'drink',
'drive', 'eat', 'eggs', 'enjoy', 'fork', 'french fries', 'fresh', 'hello', 'hot', 'icecream', 'ingredients', 'juicy',
'ketchup', 'lactose', 'lettuce', 'lid', 'manager', 'menu', 'milk', 'mustard', 'napkin', 'no', 'order', 'pepper',
'pickle', 'pizza', 'please', 'ready', 'receipt', 'refill', 'repeat'
]
for bbox in bboxes:
class_id, x, y, w, h = bbox
rect = Rectangle((x, y), w, h, linewidth=2, edgecolor=colors[int(class_id) % len(colors)], facecolor='none')
ax.add_patch(rect)
ax.text(x, y - 10, names[int(class_id)], color=colors[int(class_id) % len(colors)], fontsize=8)
plt.title('Gesture Detection')
plt.axis('off')
plt.show()
数据集结构示例
├── sign_language_gesture_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 # 包含数据集的基本信息如类别数及类别名
数据集使用指南
- 数据准备:确认数据集路径是否正确,并且图像和标签文件均存在指定的目录下。
- 数据划分:数据集已经划分为训练集、验证集和测试集,可以直接使用。
- 配置文件:根据所使用的深度学习框架创建相应的配置文件,比如YOLOv5需要一个
data.yaml
文件来描述数据集路径和类别信息。 - 模型训练:利用选定的深度学习框架开始训练目标检测模型。注意要合理设置超参数以优化训练效果。
- 结果分析:完成训练后,对模型预测结果进行详细分析,必要时调整模型架构或训练策略以进一步提高准确性。
总结
这个专门为手势手语识别设计的数据集不仅包含了丰富的手势类别,还通过数据增强技术增强了其多样性和实用性。无论是对于希望改善现有系统还是尝试新方法的研究者来说,它都是一个宝贵的资源。此外,由于其标准化的格式和支持主流框架的特点,使得用户能够轻松地将其集成到自己的项目中去。该数据集特别适合于手势识别、手语翻译和其他相关领域的研究和应用。