基于 YOLOv11 的手语检测 | 附数据集+代码

开发
在以往YOLO版本的令人印象深刻的进步基础上,YOLO11在架构和训练方法上引入了重大改进,使其成为广泛计算机视觉任务的多功能选择。

YOLO11是Ultralytics YOLO系列实时目标检测器的最新迭代,它重新定义了尖端精度、速度和效率的可能性。在以往YOLO版本的令人印象深刻的进步基础上,YOLO11在架构和训练方法上引入了重大改进,使其成为广泛计算机视觉任务的多功能选择。

此模型可以做很多很酷的事情,比如:

  • 寻找物体:它可以在图像中定位和识别不同的物体,如汽车、人或树木。
  • 分类事物:它可以告诉你它看到了什么样的物体,如猫或香蕉。
  • 理解物体的形状:它甚至可以勾勒出物体的确切形状,如追踪它。
  • 弄清楚姿势:它可以了解人体的位置,比如他们是站着、坐着还是挥手。

1.主要特点

  • 增强特征提取:YOLO11采用了改进的骨干和颈部架构,增强了特征提取能力,实现了更精确的目标检测和复杂任务的性能。
  • 优化效率和速度:YOLO11引入了精细的架构设计和优化的训练流程,提供了更快的处理速度,并在准确性和性能之间保持了最佳平衡。
  • 参数更少,准确性更高:随着模型设计的进步,YOLO11m在COCO数据集上实现了更高的平均精度均值(mAP),同时比YOLOv8m使用的参数减少了22%,使其在不牺牲准确性的情况下具有计算效率。
  • 适应不同环境:YOLO11可以无缝部署在各种环境中,包括边缘设备、云平台和支持NVIDIA GPU的系统,确保了最大的灵活性。
  • 支持任务范围广泛:无论是目标检测、实例分割、图像分类、姿态估计还是定向目标检测(OBB),YOLO11都旨在应对多样化的计算机视觉挑战。

2.数据集信息

在此项目中使用的美国手语(ASL)数据集来源自Roboflow Universe/duyguj/american-sign-language-letters。所有数据集中的图像都预先标记,确保了准确的训练数据。此外,还在Roboflow中应用了数据增强技术以增加数据集的多样性,提高了模型的泛化能力。采用了翻转、旋转和亮度调整等技术。详细链接:https://app.roboflow.com/duyguj/american-sign-language-letters-vouo0/1

(1) 该数据集包含总共1224张图像,分为三组:

  • 训练集:1008张图像(82%)
  • 验证集:144张图像(12%)
  • 测试集:72张图像(6%)

(2) 预处理:

  • 自动定向:应用以确保图像正确对齐。
  • 调整大小:所有图像都调整大小以适应640x640像素。

(3) 数据增强:

每个训练示例由于增强而有两个输出,包括:

  • 旋转:在-15°和+15°之间以模拟不同的手姿。
  • 曝光:在-10%和+10%之间调整以适应不同的光照条件。
  • 模糊:高达2px以模拟运动或相机模糊。

这种设置旨在通过让模型接触多样化的输入来提高其泛化能力。

(4) 训练过程

YOLO11模型在此ASL数据集上进行了微调,专门用于手语目标检测。这个训练过程包括:

  • 数据集增强:使用Roboflow通过转换来增强数据集。
  • 模型训练:使用这个增强的数据集训练YOLOv11,并使用单独的验证数据集来验证性能。
  • 测试:训练完成后,模型在专用的测试集上进行测试,以评估其预测未见数据的能力。

(5) 性能和观察

最终模型在随机手语图像和视频上进行了测试,以观察其在现实世界中的表现。结果显示了在实时检测不同ASL标志方面的有希望的结果,证明了YOLO11架构在处理复杂、基于手势的任务方面的有效性。

3.设置和初始化

(1) 访问GPU

我们可以使用nvidia-smi命令来做到这一点。如果遇到任何问题,请导航到“编辑”->“笔记本设置”->“硬件加速器”,将其设置为GPU。

# “注意:此设置适用于kaggle”

!pip install ultralytics supervision roboflow

from IPython import display
display.clear_output()

!pip install ultralytics --quiet
import ultralytics
ultralytics.checks()

(2) 加载数据集

① 配置API密钥以加载数据集

为了微调YOLO11,你需要提供你的Roboflow API密钥。请按照以下步骤操作:

  • 前往你的Roboflow设置页面,点击复制,这将把你的私有密钥放在剪贴板中。 
  • 在Colab中,转到左侧面板并点击“秘密”(🔑)。
  • 在名称为ROBOFLOW_API_KEY下存储Roboflow API密钥。Roboflow:转到你的Roboflow数据集下载 -> 选择YOLO模型 -> 选择显示下载代码 -> 点击复制。在Colab中:转到左侧面板并点击“秘密”(🔑)。
  • 在一个用户名下存储Roboflow API密钥。 
  • 在Kaggle中:转到“插件”→“秘密”→“添加秘密”(🔑),并存储你的Kaggle API密钥和用户名。
# Save the API key in Kaggle
from kaggle_secrets import UserSecretsClient

user_secrets = UserSecretsClient()
secret_value_0 = user_secrets.get_secret("my_api_key")
# Roboflow Dataset API Code
!pip install roboflow --quiet
from roboflow import Roboflow

rf = Roboflow(secret_value_0)

project = rf.workspace("duyguj").project("american-sign-language-letters-vouo0")
version = project.version(1)
dataset = version.download("yolov11")

② 模型训练

# Changing to the working directory in Kaggle
%cd /kaggle/working

# Training the YOLO model
!yolo task=detect mode=train model=yolo11n.pt data=/kaggle/working/American-Sign-Language-Letters-1/data.yaml epochs=10 imgsz=640 plots=True

#Results saved to runs/detect/train
#Learn more at https://docs.ultralytics.com/modes/train
from IPython.display import Image as IPyImage

# Display the confusion matrix image from the specified directory in Kaggle
IPyImage(filename='/kaggle/working/runs/detect/train/confusion_matrix.png', width=1000)

IPyImage(filename=f'/kaggle/working/runs/detect/train/results.png', width=1000)

IPyImage(filename=f'/kaggle/working/runs/detect/train/val_batch0_pred.jpg', width=1000)

③预测

# Run the prediction task on Test Data
!yolo task=detect mode=predict model=/kaggle/working/runs/detect/train/weights/best.pt conf=0.25 source=/kaggle/working/American-Sign-Language-Letters-1/test/images save=True

#Results saved to runs/detect/predict
#💡 Learn more at https://docs.ultralytics.com/modes/predict
import glob
import os
from IPython.display import Image as IPyImage, display

# Get the latest prediction folder for detection in Kaggle
latest_folder = max(glob.glob('/kaggle/working/runs/detect/predict*/'), key=os.path.getmtime)

# Display images from the prediction folder
for img in glob.glob(f'{latest_folder}/*.jpg')[15:18]:
    display(IPyImage(filename=img, width=300))

完整代码:https://www.kaggle.com/code/duygujones/sign-language-detection-using-yolo11

责任编辑:赵宁宁 来源: 小白玩转Python
相关推荐

2024-10-28 16:12:26

2024-10-07 11:12:55

2024-10-30 16:34:56

2024-10-24 20:56:36

2024-10-25 08:30:57

计算机视觉神经网络YOLOv8模型

2024-07-22 13:49:38

YOLOv8目标检测开发

2020-10-26 14:14:36

YOLOv5数据科学 技术

2024-05-28 10:04:00

2024-08-06 11:01:03

2023-11-09 23:45:01

Pytorch目标检测

2024-11-06 16:56:51

2013-07-27 21:04:58

2011-07-20 17:29:12

iPhone 网络

2024-11-20 16:51:00

目标检测模型

2024-04-19 08:00:00

2022-09-23 14:44:31

前端huskyeslint

2024-01-29 09:29:02

计算机视觉模型

2020-03-09 14:08:25

Python目标检测视觉识别

2024-10-16 16:49:44

定向边界框目标检测YOLOv8

2022-08-22 11:34:42

开源数据
点赞
收藏

51CTO技术栈公众号