热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

手语识别机器学习_用JetsonNANO实现手语识别案例

目前,云计算的经济利益偏向于短暂的工作负载而非永远在线的工作负载。一个短暂的例子是云功能,例如AmazonLambda或GCP云功能或Azure功能。短

目前,云计算的经济利益偏向于短暂的工作负载而非永远在线的工作负载。一个短暂的例子是云功能,例如Amazon Lambda或GCP云功能或Azure功能。短期云功能比始终在线的云VM或永远在线的本地VM更具成本效益。另一个短暂的例子是临时使用云计算进行灾难恢复或机器学习(ML)模型培训。通常不需要D/R资源,也不需要ML GPU资源池。如果您的企业需要持续不断地拥有大量GPU资源,那么肯定是在内部而不是在云中构建。

我花了很多时间使用99美元的Jetson Nano IoT设备,并发现使用临时云GPU是一种加速ML模型创建的经济有效的方法。

教我的Nano识别手语

GitHub上有一套优秀的手语训练图像(点击这里)。 我认为通过Jetson NANO相机的实时视频输入教NANO识别手语会很有趣.

NVIDIA DIGITS

NVIDIA提供名为DIGITS的免费机器学习培训环境。 DIGITS可以消除构建和测试机器学习模型带来了所有编程上的痛苦。 DIGITS可以从源代码编译,在容器中运行,也可以作为AWS VM使用。 为了熟悉DIGITS,我一直在Mac上的Ubuntu VM中从编译源运行它。 NVIDIA DIGITS具有GPU感知功能(自然而然)。 我的Ubuntu VM无法访问GPU,因此我的所有训练都是在vCPU上运行的,并没有尽可能高的性能。

图像加载比较

在我的笔记本电脑VM和我的云VM中将87,000个手语手的小图像加载到DIGITS数据集中并没有花那么长时间。 在笔记本电脑VM中加载大约需要4分钟,在云VM中大约需要2分钟。

模型创建比较

模型创建是云VM(可访问NVIDIA GPU)的亮点。 在模型创建期间,运行机器学习python代码,分析75%的图像以查找模式,然后针对其他25%的图像连续测试这些模式以进行验证,直到准确性最大化并且损失最小化。

在我的笔记本电脑VM上运行此模型创建估计完成时间为11天(!)。 我放弃了那次运行并开始研究使用云虚拟机所需的时间和费用。 推荐的NVIDIA DIGITS EC2实例类型为p2.xlarge,每小时费用约为0.90美元。 我估计Cloud VM上的运行时间是8小时。 与我购买一张价值几千美元的NVIDIA GPU卡相比,8美元对我来说是一个很好的经济价值。

云端训练,边缘部署

一旦模型被训练,我可以将模型下载到我的Nano并关闭云VM以停止计费。 值得庆幸的是,DIGITS使得下载模型变得简单。 只需单击下载模型。

该文件被格式化为gzipped tar文件,其命名约定为20190514-175338-623c_epoch_30.0.tar.gz。我将文件(tar xzvf)扩展为Nano上的“sign-language-model”目录。 Nano开发套件包括用于文件识别的工作源代码以及使用由DIGITS创建的Caffe模型的实时相机识别。你可以在这里找到关于GitHub的代码和说明。

我所需要做的就是将一些参数传递给实时相机识别程序(imagenet-camera),以便加载下载的机器学习模型。

NET=sign-language-model

~/jetson-inference/build/aarch64/bin/imagenet-camera \

--prototxt=$NET/deploy.prototxt \

--model=$NET/snapshot_iter_15300.caffemodel \

--labels=$NET/labels.txt \

--input_blob=data \

--output_blob=softmax

Jetson Nano将此模型缓存到内存中,并使用其128核GPU开始以每秒60帧的速度识别实时图像。 高fps实时识别是Nano与其他物联网设备(如Raspberry Pi和Google Coral)的不同之处。

总结

并非所有在公共云中的工作负载都是最具成本效益或性能最高的, 有些是。 需要定义每个工作负载的要求以及内部部署和云数据中心的功能,以确定每个工作负载的正确位置。 在我的项目里,我几个小时都无法访问本地NVIDIA GPU,因此在云VM中租用NVIDIA GPU是有道理的。 我也听到过“在云中训练,在边缘部署”的建议,这似乎是测试这个概念的一个很好的理由。 任务完成!



推荐阅读
  • 本文介绍了操作系统的定义和功能,包括操作系统的本质、用户界面以及系统调用的分类。同时还介绍了进程和线程的区别,包括进程和线程的定义和作用。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • 基于事件驱动的并发编程及其消息通信机制的同步与异步、阻塞与非阻塞、IO模型的分类
    本文介绍了基于事件驱动的并发编程中的消息通信机制,包括同步和异步的概念及其区别,阻塞和非阻塞的状态,以及IO模型的分类。同步阻塞IO、同步非阻塞IO、异步阻塞IO和异步非阻塞IO等不同的IO模型被详细解释。这些概念和模型对于理解并发编程中的消息通信和IO操作具有重要意义。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 本文介绍了在Docker容器技术中限制容器对CPU的使用的方法,包括使用-c参数设置容器的内存限额,以及通过设置工作线程数量来充分利用CPU资源。同时,还介绍了容器权重分配的情况,以及如何通过top命令查看容器在CPU资源紧张情况下的使用情况。 ... [详细]
  • Vagrant虚拟化工具的安装和使用教程
    本文介绍了Vagrant虚拟化工具的安装和使用教程。首先介绍了安装virtualBox和Vagrant的步骤。然后详细说明了Vagrant的安装和使用方法,包括如何检查安装是否成功。最后介绍了下载虚拟机镜像的步骤,以及Vagrant镜像网站的相关信息。 ... [详细]
  • 阿,里,云,物,联网,net,core,客户端,czgl,aliiotclient, ... [详细]
  • 海马s5近光灯能否直接更换为H7?
    本文主要介绍了海马s5车型的近光灯是否可以直接更换为H7灯泡,并提供了完整的教程下载地址。此外,还详细讲解了DSP功能函数中的数据拷贝、数据填充和浮点数转换为定点数的相关内容。 ... [详细]
  • Spring常用注解(绝对经典),全靠这份Java知识点PDF大全
    本文介绍了Spring常用注解和注入bean的注解,包括@Bean、@Autowired、@Inject等,同时提供了一个Java知识点PDF大全的资源链接。其中详细介绍了ColorFactoryBean的使用,以及@Autowired和@Inject的区别和用法。此外,还提到了@Required属性的配置和使用。 ... [详细]
author-avatar
回音爱Fred
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有