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

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

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

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

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

主要特点

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

数据集信息

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

详细链接:https://app.roboflow.com/duyguj/american-sign-language-letters-vouo0/1

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

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

(1) 预处理:

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

(2) 数据增强:

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

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

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

(3) 训练过程

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

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

(4) 性能和观察

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

设置和初始化

(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-10 14:56:39

2024-10-15 10:47:12

2024-10-10 16:02:34

2024-10-30 16:34:56

2024-10-07 11:12:55

2024-06-19 09:54:58

2023-11-09 23:45:01

Pytorch目标检测

2024-06-24 05:00:00

YOLO模型人工智能

2024-08-20 09:30:00

2023-11-20 09:47:14

自动驾驶视觉

2024-10-09 17:02:34

2013-07-27 21:04:58

2024-10-29 16:18:32

YOLOOpenCV

2011-07-20 17:29:12

iPhone 网络

2024-04-19 08:00:00

2022-09-23 14:44:31

前端huskyeslint

2022-08-22 11:34:42

开源数据

2024-07-30 09:50:00

深度学习目标检测

2020-03-09 14:08:25

Python目标检测视觉识别

2024-06-21 10:40:00

计算机视觉
点赞
收藏

51CTO技术栈公众号