news 2026/4/18 3:28:46

YOLO26手势识别项目实战2-石头剪刀布实时检测系统数据集说明(含训练代码和数据集)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
YOLO26手势识别项目实战2-石头剪刀布实时检测系统数据集说明(含训练代码和数据集)

YOLO26手势识别项目实战2-石头剪刀布实时检测系统,其能识别检测出3种手势手语:names: ['Rock','Paper','Scissors']

具体图片见如下:

第一步:YOLO26介绍

YOLO26采用了端到端无NMS推理,直接生成预测结果,无需非极大值抑制(NMS)后处理。这种设计减少了延迟,简化了集成,并提高了部署效率。此外,YOLO26移除了分布焦点损失(DFL),从而增强了硬件兼容性,特别是在边缘设备上的表现。

模型还引入了ProgLoss小目标感知标签分配(STAL),显著提升了小目标检测的精度。这对于物联网、机器人技术和航空影像等应用至关重要。同时,YOLO26采用了全新的MuSGD优化器,结合了SGD和Muon优化技术,提供更稳定的训练和更快的收敛速度。

第二步:YOLO26网络结构

第三步:代码展示

# Ultralytics YOLO 🚀, AGPL-3.0 license from pathlib import Path from ultralytics.engine.model import Model from ultralytics.models import yolo from ultralytics.nn.tasks import ClassificationModel, DetectionModel, OBBModel, PoseModel, SegmentationModel, WorldModel from ultralytics.utils import ROOT, yaml_load class YOLO(Model): """YOLO (You Only Look Once) object detection model.""" def __init__(self, model="yolo11n.pt", task=None, verbose=False): """Initialize YOLO model, switching to YOLOWorld if model filename contains '-world'.""" path = Path(model) if "-world" in path.stem and path.suffix in {".pt", ".yaml", ".yml"}: # if YOLOWorld PyTorch model new_instance = YOLOWorld(path, verbose=verbose) self.__class__ = type(new_instance) self.__dict__ = new_instance.__dict__ else: # Continue with default YOLO initialization super().__init__(model=model, task=task, verbose=verbose) @property def task_map(self): """Map head to model, trainer, validator, and predictor classes.""" return { "classify": { "model": ClassificationModel, "trainer": yolo.classify.ClassificationTrainer, "validator": yolo.classify.ClassificationValidator, "predictor": yolo.classify.ClassificationPredictor, }, "detect": { "model": DetectionModel, "trainer": yolo.detect.DetectionTrainer, "validator": yolo.detect.DetectionValidator, "predictor": yolo.detect.DetectionPredictor, }, "segment": { "model": SegmentationModel, "trainer": yolo.segment.SegmentationTrainer, "validator": yolo.segment.SegmentationValidator, "predictor": yolo.segment.SegmentationPredictor, }, "pose": { "model": PoseModel, "trainer": yolo.pose.PoseTrainer, "validator": yolo.pose.PoseValidator, "predictor": yolo.pose.PosePredictor, }, "obb": { "model": OBBModel, "trainer": yolo.obb.OBBTrainer, "validator": yolo.obb.OBBValidator, "predictor": yolo.obb.OBBPredictor, }, } class YOLOWorld(Model): """YOLO-World object detection model.""" def __init__(self, model="yolov8s-world.pt", verbose=False) -> None: """ Initialize YOLOv8-World model with a pre-trained model file. Loads a YOLOv8-World model for object detection. If no custom class names are provided, it assigns default COCO class names. Args: model (str | Path): Path to the pre-trained model file. Supports *.pt and *.yaml formats. verbose (bool): If True, prints additional information during initialization. """ super().__init__(model=model, task="detect", verbose=verbose) # Assign default COCO class names when there are no custom names if not hasattr(self.model, "names"): self.model.names = yaml_load(ROOT / "cfg/datasets/coco8.yaml").get("names") @property def task_map(self): """Map head to model, validator, and predictor classes.""" return { "detect": { "model": WorldModel, "validator": yolo.detect.DetectionValidator, "predictor": yolo.detect.DetectionPredictor, "trainer": yolo.world.WorldTrainer, } } def set_classes(self, classes): """ Set classes. Args: classes (List(str)): A list of categories i.e. ["person"]. """ self.model.set_classes(classes) # Remove background if it's given background = " " if background in classes: classes.remove(background) self.model.names = classes # Reset method class names # self.predictor = None # reset predictor otherwise old names remain if self.predictor: self.predictor.model.names = classes

第四步:统计训练过程的一些指标,相关指标都有

第五步:运行预测代码

#coding:utf-8 from ultralytics import YOLO import cv2 # 所需加载的模型目录 path = 'models/best.pt' # 需要检测的图片地址 img_path = "TestFiles/000353.jpg" # 加载预训练模型 # conf 0.25 object confidence threshold for detection # iou 0.7 intersection over union (IoU) threshold for NMS model = YOLO(path, task='detect') results = model.predict(img_path, iou=0.5) # 检测图片 res = results[0].plot() cv2.imshow("YOLO26 Detection", res) cv2.waitKey(0)

第六步:整个工程的内容

包含石头剪刀布实时检测数据集、训练代码和预测代码

项目完整文件下载请见演示与介绍视频的简介处给出:➷➷➷

https://www.bilibili.com/video/BV1Bu6gBtEih/

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 15:16:19

人工智能治安管控系统

人工智能治安管控系统 基于大数据平台的人工智能治安管控系统,实现人脸识别和视频行为分析功能。通过人脸识别技术,实现实时监控、路人抓拍、人脸库检索、重点人员布控、路人检索、报警信息查询;采用视频行为分析技术,对非法闯入、…

作者头像 李华
网站建设 2026/4/18 7:57:57

互补自激多谐震荡电路(非稳态)

目录 0 概述 1 互补自激多谐震荡电路(非稳态)原理分析 1.1 不考虑电容 1.2 过程1 1.3 过程2 1.4 Multisim仿真分析 摘要 互补自激多谐振荡电路采用NPN+PNP三极管推挽结构,通过电容充放电实现无稳态翻转输出方波。该电路具有结构简单(仅需2个三极管和RC元件)、带载能…

作者头像 李华
网站建设 2026/4/17 18:01:49

基于五维几何不变性特征融合的机械故障诊断方法(Python)

代码实现了一个基于五维几何理论融合的机械故障诊断模型。 首先系统从振动信号文件中加载数据,对原始振动信号进行去直流分量和标准化预处理,然后将长信号分割成固定长度的样本段。核心创新在于同时运用五种不同的几何理论(仿射几何、共形几…

作者头像 李华
网站建设 2026/4/18 7:51:56

【Java 新手必看】逻辑运算符:从原理到实战,附可运行代码案例

逻辑运算符是 Java 实现 “条件判断、逻辑组合” 的核心工具,也是 if/else、while 等流程控制语句的基础。新手常混淆 “短路与 / 或” 和 “非短路” 的区别,这篇笔记结合可直接运行的代码案例,从概念、用法到避坑指南,帮你彻底吃…

作者头像 李华
网站建设 2026/4/17 16:02:23

测试OK的Android 8.0开机启动方案汇总

测试OK的Android 8.0开机启动方案汇总 在Android 8.0系统中实现自定义脚本的开机自动执行,是嵌入式开发、设备定制和自动化运维中的常见需求。但很多开发者会发现:脚本明明写对了,手动执行也没问题,一到开机就静默失败——背后往…

作者头像 李华
网站建设 2026/4/18 3:34:46

如何利用智能大模型复盘自身失败和贫穷

之前写过代价高昂的免费,没想到智能大模型比我更深刻洞察这一切。 “重新做人” 读完这篇 2018 年的文章,我的批判不仅毫无动摇,反而获得了 “根源性铁证” —— 这篇文章不是他 “早期理想主义的真诚”,而是他后来所有贫困与失败…

作者头像 李华