基于matlab的视频和深度学习的手势识别

这篇具有很好参考价值的文章主要介绍了基于matlab的视频和深度学习的手势识别。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

基于matlab的视频和深度学习的手势识别

此示例首先演示如何使用预训练的SlowFast视频分类器执行手势识别,然后演示如何使用迁移学习在自定义手势识别数据集上训练分类器。

基于视觉的人类手势识别涉及使用一组视频帧预测手势,例如挥手打招呼、手语手势或鼓掌。手势识别的一个吸引人的特点是,它们使人类能够与计算机和设备进行通信,而无需外部输入设备,如鼠标或遥控器。来自视频的手势识别有许多应用,例如消费电子和机械系统的控制、机器人学习和计算机游戏。例如,在线预测来自多个摄像头的传入视频的多个动作对于机器人学习非常重要。与图像分类相比,使用视频进行人类手势识别的建模具有挑战性,因为视频数据集的地面实况数据不准确,视频中的演员可以执行的手势种类繁多,数据集严重类不平衡,以及从头开始训练强大的分类器所需的大量数据。深度学习技术,如SlowFast双通路卷积网络,已经显示出使用迁移学习和在大型视频活动识别数据集上预先训练的网络在较小数据集上的性能有所提高。

注意:此示例需要用于慢速视频分类的计算机视觉工具箱模型。可以从加载项资源管理器安装用于慢速视频分类的计算机视觉工具箱模型。

二、使用预训练的视频分类器执行手势识别

下载预训练的 SlowFast 视频分类器以及要在其上执行手势识别的视频文件。下载的zip文件的大小约为245 MB。

加载预训练的慢速视频分类器。显示预训练视频分类器的类标签名称。

选择10个随机选择的视频序列对视频进行分类,以统一覆盖整个文件以找到视频中占主导地位的动作类。使用该函数对视频文件进行分类。该分类也可以应用于流视频。

三、训练用于手势识别的视频分类器

示例的这一部分显示了如何使用迁移学习训练上面显示的视频分类器。将变量设置为 使用预训练的视频分类器,而无需等待训练完成。

下载地面实况训练数据

此示例使用包含四个手势的可下载手势数据集训练 SlowFast 视频分类网络:。数据集包含使用视频标记器标记的视频和相应的真实数。下载数据集。

提取培训视频序列

若要训练视频分类器,需要视频集合及其相应的场景标签集合。

从下载的地面实况数据中提取了总共40个视频场景。

加载数据集

此示例使用数据存储读取从真实数据中提取的视频场景和标注。

指定每次从数据存储读取数据时应将数据存储配置为输出的视频帧数。

此处使用值 16 来平衡内存使用情况和分类时间。要考虑的常见值是 8、16、32、64 或 128。使用更多帧有助于捕获其他时态信息,但需要更多的内存。需要进行实证分析以确定最佳帧数。接下来,指定应将数据存储配置为输出的帧的高度和宽度。数据存储会自动将原始视频帧的大小调整为指定大小,以启用多个视频序列的批处理。

值 [112 112] 用于捕获视频场景中较长的时间关系,这有助于对持续时间较长的手势进行分类。大小的常见值是 [112 112]、[224 224] 或 [256 256]。较小的尺寸允许使用更多的视频帧,但代价是内存使用量、处理时间和空间分辨率。与帧数一样,需要进行实证分析以确定最佳值。将通道数指定为 3,因为视频是 RGB。

使用该函数创建用于迁移学习的慢速视频分类器。该函数创建一个 SlowFast 视频分类器对象,该对象在 Kinetics-400 数据集 上进行了预训练。指定 ResNet-50 作为 SlowFast 分类器的基本网络卷积神经网络 3D 体系结构。

指定慢速视频分类器的输入大小。通过指定手势数据集的类和网络输入大小来创建慢速视频分类器。指定视频分类器的模型名称。

扩充和预处理训练数据

数据增强提供了一种使用有限数据集进行训练的方法。对于基于网络输入大小的帧集合,视频数据的增强必须相同。细微的更改(例如翻译、裁剪或转换图像)可提供新的、独特的和独特的图像,您可以使用这些图像来训练强大的视频分类器。数据存储是读取和扩充数据集合的便捷方式。使用此示例末尾定义的支持函数扩充训练视频数据。

通过使用此示例末尾定义的 ,预处理训练视频数据以调整为 SlowFast 视频分类器输入大小。将视频分类器的属性和预处理函数的输入大小指定为结构中的字段值。该属性用于在 0 和 1 之间重新缩放视频帧,然后使用平均值和标准偏差规范化重新缩放的数据。输入大小用于根据结构中的值调整视频帧的大小。或者,您可以使用 或 作为随机裁剪或将输入数据中心裁剪为视频分类器的输入大小的值。

定义模型梯度函数

本示例末尾列出的函数将 SlowFast 视频分类器、一小批输入数据和一小批真实标签数据作为输入。该函数返回训练损失值、相对于分类器可学习参数的损失梯度以及分类器的小批量精度。损失是通过计算视频分类器预测的交叉熵损失来计算的。网络的输出预测是每个类的 0 到 1 之间的概率。

分类器的精度是通过将分类器与输入的地面实况标签进行比较来计算的。

指定训练选项

使用 5 的小批量大小进行训练,进行 600 次迭代。使用该参数指定要保存具有最佳小批量损失的模型的迭代。

指定余弦退火学习速率计划参数:

  • 最低学习率为 1e-4。
  • 最大学习率为 1e-3。
  • 余弦迭代次数为 200、300 和 400,之后学习率计划周期将重新启动。该选项定义每个余弦周期的宽度。

指定 SGDM 优化的参数。在训练开始时初始化 SGDM 优化参数:

  • 动量为0.9。
  • 初始化为 的初始速度参数。
  • L2 正则化因子为 0.0005。

指定使用并行池在后台调度数据。如果设置为 true,则打开具有指定数量的并行工作线程的并行池,并创建一个作为此示例的一部分提供的 ,该 在后台调度数据以使用异步数据加载和预处理加快训练速度。

训练视频分类器

使用视频数据训练慢速视频分类器。

对于每个纪元:

  • 在循环访问小批量数据之前随机排列数据。
  • 用于循环访问小批量。本示例末尾列出的支持函数使用给定的训练数据存储来创建
  • 使用本示例末尾列出的支持函数显示每个时期的损失和精度结果。

对于每个小批量:

  • 将视频数据和标签转换为基础类型为single的对象。
  • 若要使用慢速视频分类器处理视频数据的时间维度,请指定时态序列维度。为视频数据和标签数据指定维度标签(空间、空间、通道、时间、批次)。

该对象使用此示例末尾列出的支持函数来批处理 RGB 视频数据。

四、评估经过训练的视频分类器

要评估经过训练的慢速视频分类器的准确性,请将变量设置为 false 并创建一个 .请注意,数据增强不适用于评估数据。理想情况下,测试和评估数据应代表原始数据,并且不加修改以进行无偏评估。

加载训练期间保存的最佳模型或使用预训练模型。创建一个对象以加载测试数据的批次。对于每批评估数据,使用 SlowFast 视频分类器进行预测,并使用混淆矩阵计算预测准确性。计算经过训练的慢速视频分类器的平均剪辑分类精度。显示混淆矩阵。

在 Kinetics-400 数据集上预训练的 SlowFast 视频分类器为迁移学习中的人类手势识别提供了强大的性能。上述训练在 24GB Titan-X GPU 上运行了大约 60 分钟。在小手势识别视频数据集上从头开始训练时,训练时间和收敛时间比预训练视频分类器要长得多。使用 Kinetics-400 预训练 SlowFast 视频分类器的跨频器学习还可以避免在如此小的手势识别视频数据集上运行大量纪元时过度拟合分类器。文章来源地址https://www.toymoban.com/news/detail-835257.html

到了这里,关于基于matlab的视频和深度学习的手势识别的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 软件工程毕设 基于机器视觉opencv的手势检测 手势识别 算法 - 深度学习 卷积神经网络 opencv python

    今天学长向大家介绍一个机器视觉项目 基于机器视觉opencv的手势检测 手势识别 算法 普通机器视觉手势检测的基本流程如下: 其中轮廓的提取,多边形拟合曲线的求法,凸包集和凹陷集的求法都是采用opencv中自带的函数。手势数字的识别是利用凸包点以及凹陷点和手部中心

    2024年01月17日
    浏览(78)
  • MATLAB基于卷积神经网络的手势识别

    目录 1. 数据集介绍  2. 训练、保存网络 3. 手势识别 4. 识别结果 5. 总结 本实验所用数据集为从Kaggle平台下载的手语数据集(sign_mnist)中选取的部分数据。 sign_mnist 数据集格式的模式化与经典 MNIST 紧密匹配。每个训练和测试用例表示一个标签 (0-25),作为每个字母 A-Z 的一

    2024年02月06日
    浏览(109)
  • AI:152- 利用深度学习进行手势识别与控制

    本文收录于专栏:精通AI实战千例专栏合集 从基础到实践,深入学习。无论你是初学者还是经验丰富的老手,对于本专栏案例和项目实践都有参考学习意义。 每一个案例都附带关键代码,详细讲解供大家学习,希望可以帮到大家。正在不断更新中~ 随着人工智能技术的不断发

    2024年04月15日
    浏览(73)
  • 竞赛项目 深度学习手势识别算法实现 - opencv python

    🔥 优质竞赛项目系列,今天要分享的是 🚩 深度学习手势识别算法实现 - opencv python 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:3分 工作量:3分 创新点:4分 🧿 更多资料, 项目分享: https://gitee.com/

    2024年02月13日
    浏览(103)
  • 竞赛选题 深度学习手势检测与识别算法 - opencv python

    🔥 优质竞赛项目系列,今天要分享的是 🚩 深度学习图像识别手势检测识别系统 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:3分 工作量:3分 创新点:4分 🧿 更多资料, 项目分享: https://gitee.com/danc

    2024年02月05日
    浏览(70)
  • 基于yolov2深度学习网络的人员跌倒检测识别matlab仿真

    目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1 YOLOv2深度学习网络 4.2 人员跌倒检测识别原理 5.算法完整程序工程 matlab2022a        跌倒是一种常见的健康风险,特别是在老年人和患有某些疾病的人群中。及时检测跌倒并采取相应措施对于降

    2024年02月05日
    浏览(67)
  • Python基于深度学习的人脸识别项目源码+演示视频,利用OpenCV进行人脸检测与识别 preview

    ​ 该人脸识别实例是一个基于深度学习和计算机视觉技术的应用,主要利用OpenCV和Python作为开发工具。系统采用了一系列算法和技术,其中包括以下几个关键步骤: 图像预处理 :首先,对输入图像进行预处理,包括读取图片、将图片灰度转换、修改图片的尺寸、绘制矩形

    2024年04月13日
    浏览(70)
  • 计算机毕设 深度学习手势识别 - yolo python opencv cnn 机器视觉

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月14日
    浏览(67)
  • OpenCV与AI深度学习 | 实战 | YOLOv8自定义数据集训练实现手势识别 (标注+训练+预测 保姆级教程)

    本文来源公众号 “OpenCV与AI深度学习” ,仅用于学术分享,侵权删,干货满满。 原文链接:实战 | YOLOv8自定义数据集训练实现手势识别 (标注+训练+预测 保姆级教程)     本文将手把手教你用YoloV8训练自己的数据集并实现手势识别。 【1】安装torch, torchvision对应版本,这里先

    2024年04月23日
    浏览(86)
  • 手势识别MATLAB代码

    手势识别是智能设备常用的需求, 下面我们用MATLAB来识别手部的形态: 主程序main.m clc;clear all;close all;%清除命令行和窗口 im=imread(\\\'DSC05815.JPG\\\'); [skin,bwycbcr,w,h] = hand_segmentation(im); im1=bwycbcr; %  se = strel(\\\'ball\\\',[1 1 1;1 1 1;1 1 1]);  im1 = imdilate(im1,[1 1 1;1 1 1;1 1 1]);  figure;  imshow(im1);  titl

    2024年01月24日
    浏览(87)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包