【手势识别】基于 MediaPipe 的手语接口调用

2024-03-20 08:30

本文主要是介绍【手势识别】基于 MediaPipe 的手语接口调用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

基于 MediaPipe 的手语接口调用

 

图片

 

SignAll SDK:使用 MediaPipe 的手语接口现对开发者开放

 

 

 

当 Google 发布第一个基于 MediaPipe 的设备端手部追踪技术时,它便成为了开发者构建手语识别解决方案应用的基础。Google 之后对这个手部跟踪解决方案的进一步更新,将其准确率提升至其他技术所无法达到的水平(图 1)。

 

图片

图 1 随着时间推移,MediaPipe 的改进:较早版本(2020 年 2 月 10 日)和最新版本(2020 年 12 月 16 日)的手部骨架追踪输出。这种手形经常在手语中使用,但由于缺少表示法的训练数据集而经常被遗漏

 

SignAll 是一家研发手语翻译技术的初创公司,致力于为失聪人士普及手语翻译,让他们能够与听力正常的人群以及计算机进行交流。SignAll 的产品采用了复杂的多摄像头设置和带有彩色标记的手套,广泛用于美国的通信和教育领域。虽然手语的复杂性不仅限于手形(还包括面部特征、肢体、语法等),但准确追踪手部确实已经给预处理程序(即计算机视觉)造成了巨大阻碍。MediaPipe 为 SignAll 的解决方案提供了更多可能性,不仅能够免除手套,还可以使用单摄像头设置。SignAll 已经宣布针对此类型开放首版 SDK,所以开发者现在能够在自己的应用中启用手语输入。

  • SignAll

    https://www.signall.us/

  • 开放首版 SDK

    https://signall.us/sdk

 

近期,该公司在 App Store 上发布了一个互动式教育应用,该应用可以让用户通过即时反馈来练习手语,还能够展现出 SDK 的潜力。

 

SignAll 与 MediaPipe Hands

 

 

我们的系统在手语识别方面采用多个数据层,各层数据的抽象性越来越高。低级数据层从 2D 和 3D 摄像头中提取关键的手部、躯体和面部数据。在我们的第一个实现中,此数据层会检测手套的颜色,并创建 3D 手部数据。将其替换为 MediaPipe Hands(MediaPipe Pose 和 MediaPipe Face Mesh 作为补充)具有颠覆性的重要意义,因为你不再需要手套或特殊光线来使用我们的系统。

  • MediaPipe Hands

    https://google.github.io/mediapipe/solutions/hands.html

  • MediaPipe Pose

    https://google.github.io/mediapipe/solutions/pose.html

  • MediaPipe Face Mesh

    https://google.github.io/mediapipe/solutions/face_mesh.html

 

 

如上文所述,我们使用了多个带有深度传感器的摄像头,并在实际中对这些传感器进行了校准。相较于本地摄像头或张量空间,这种方法能够实现更加准确的 3D 世界空间探测,但每个摄像头都需要进行手部特征点检测。摄像头的位置和屏幕方向各不相同,因此可以实现更高的手部可视频率,因为从一个摄像头的角度来看,手部可能会被另外一只手遮挡,但从另一个摄像头的角度来看,可能并不存在遮挡。

 

图片

图 3 在三个摄像头的基础上纠正 3D 手形。由于其镜头方向的特殊性,正前方的摄像头检测有误,但侧面的摄像头能够纠正结果

 

接下来的步骤是过滤数据,并进行数据平滑处理,以复制彩色手套标记提供的精确测量值。虽然 SignAll 的标记与 MediaPipe 提供的界标不同,但我们使用了手部模型并根据界标生成彩色标记。因此,新的动作捕捉数据与之前的数据完全兼容。

 

虽然我们主要关注手部,但我们同时整合了 MediaPipe Pose 和 MediaPipe Face Mesh。即便在彼此接触,或距离很近的情况下,姿态界标都能提供准确的手部姿态信息。

 

虽然这两个版本的动作捕捉是兼容的,但工件的性质不同:一种是直接测量各个标记,另一种是根据全局检测的手部模拟标记。因为存在差异,所以我们必须在更高层级对参数进行优化。另一方面,我们仍可以利用我们的大型手语数据库来进行无手套配置。我们可以通过替换低级数据,优化高级数据,以无手套形式测试我们的系统。实现无手套化,对于手语识别技术的全球推广具有重要意义。

 

 

使用 MediaPipe 框架的 SignAll 系统

 

将 MediaPipe Hands 整合至系统后,我们还希望能够利用 MediaPipe 框架在多个平台上提供的自定义和扩容机会。这样我们不仅可以用 Python 原型化我们的状态研究方法,而且还可以为 Windows、iOS、Android 甚至 Web 提供最终用户解决方案。由于我们的模块图系统和 MediaPipe 的计算图之间具有相似性,现有的处理单元只需稍作修改就可以在这个新框架中重用。尽管如此,扩展平台组还面临着其他挑战,例如在大多数情况下我们只能使用单个 2D 摄像头而不是经过校准的多摄像头系统。

 

我们开发并使用的模型、算法和技术,主要是为了在 3D 全局世界中处理动作捕捉数据。毫无疑问,从单摄像头设置中提取的数据达不到同样的详细程度。所以我们必须对实现进行一些调整,微调算法并添加一些额外逻辑(例如,动态适应手持摄像头用例导致的空间变化)。幸运的是,MediaPipe 框架让我们能够用 C ++ 实现核心处理单元,因此我们仍然可以从先前开发的运行时优化核心解决方案中受益。

 

为了更好地处理来自单个 2D 源的数据,一些基于 3D 数据训练的高级模型需要重新训练。MediaPipe 界标由 3D 坐标定义,因此可以重复使用现有的训练方法和概念。另一方面,2D 信息的提取比三维坐标更为直接也更为稳定,在修改设计训练时需要考虑到这一点。

 

幸运的是,我们无需为实现此目标而进行全新的数据记录。我们仍然可以使用注释详细的大型视频数据库。预处理的动作捕捉数据可以从我们的记录中提取,并在 3D 世界中解释,从而用来模拟任何虚拟摄像头视图中的手部、骨架或面部界标检测。

 

在虚拟摄像头视图的数据中,我们同时使用传统的 2D 记录,以足够的比例覆盖界标检测的独特噪点特征。由于大多数此类数据已经提前收集了,所以我们可以专注于尝试最新技术并训练新模型。

 

 

总结

 

在 MediaPipe 助力的改进,让 SignAll 可以更改其模型。除了提供用于手语教学和翻译的多合一产品之外,SignAll 现在也开始提供面向开发者的 SDK。此 SDK 的功能取决于摄像头的类型和可用的算力。SDK 可以启用的功能包括:

  • 面向开发者的 SDK

    https://signall.us/sdk

 

  • 通过用手语表示联系人的姓名来发起视频通话

  • 通过手语(与语音输入相对应)在导航中添加地址,或在快餐店的信息亭或直通车道中进行点餐。

SignAll 的使命是让手语能够全方位替代语音,而我们非常高兴看到越来越多的应用实现了此功能。

 

我们十分期待 MediaPipe 未来的更新,这些更新能够帮助我们进一步实现终极目标——让所有人在任何设备上都能使用我们的解决方案。最值得期待的更新是能够建立自定义的 MediaPipe 图,并添加我们自己的计算器,从而在 WebAssembly 技术的辅助下实现基于网络的解决方案,这样网站就能够为失聪访问者提供全新水平的无障碍功能。

 

这篇关于【手势识别】基于 MediaPipe 的手语接口调用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/828863

相关文章

阿里开源语音识别SenseVoiceWindows环境部署

SenseVoice介绍 SenseVoice 专注于高精度多语言语音识别、情感辨识和音频事件检测多语言识别: 采用超过 40 万小时数据训练,支持超过 50 种语言,识别效果上优于 Whisper 模型。富文本识别:具备优秀的情感识别,能够在测试数据上达到和超过目前最佳情感识别模型的效果。支持声音事件检测能力,支持音乐、掌声、笑声、哭声、咳嗽、喷嚏等多种常见人机交互事件进行检测。高效推

如何在页面调用utility bar并传递参数至lwc组件

1.在app的utility item中添加lwc组件: 2.调用utility bar api的方式有两种: 方法一,通过lwc调用: import {LightningElement,api ,wire } from 'lwc';import { publish, MessageContext } from 'lightning/messageService';import Ca

Java 后端接口入参 - 联合前端VUE 使用AES完成入参出参加密解密

加密效果: 解密后的数据就是正常数据: 后端:使用的是spring-cloud框架,在gateway模块进行操作 <dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>30.0-jre</version></dependency> 编写一个AES加密

【LabVIEW学习篇 - 21】:DLL与API的调用

文章目录 DLL与API调用DLLAPIDLL的调用 DLL与API调用 LabVIEW虽然已经足够强大,但不同的语言在不同领域都有着自己的优势,为了强强联合,LabVIEW提供了强大的外部程序接口能力,包括DLL、CIN(C语言接口)、ActiveX、.NET、MATLAB等等。通过DLL可以使用户很方便地调用C、C++、C#、VB等编程语言写的程序以及windows自带的大

java线程深度解析(一)——java new 接口?匿名内部类给你答案

http://blog.csdn.net/daybreak1209/article/details/51305477 一、内部类 1、内部类初识 一般,一个类里主要包含类的方法和属性,但在Java中还提出在类中继续定义类(内部类)的概念。 内部类的定义:类的内部定义类 先来看一个实例 [html]  view plain copy pu

模拟实现vector中的常见接口

insert void insert(iterator pos, const T& x){if (_finish == _endofstorage){int n = pos - _start;size_t newcapacity = capacity() == 0 ? 2 : capacity() * 2;reserve(newcapacity);pos = _start + n;//防止迭代

string字符会调用new分配堆内存吗

gcc的string默认大小是32个字节,字符串小于等于15直接保存在栈上,超过之后才会使用new分配。

京东物流查询|开发者调用API接口实现

快递聚合查询的优势 1、高效整合多种快递信息。2、实时动态更新。3、自动化管理流程。 聚合国内外1500家快递公司的物流信息查询服务,使用API接口查询京东物流的便捷步骤,首先选择专业的数据平台的快递API接口:物流快递查询API接口-单号查询API - 探数数据 以下示例是参考的示例代码: import requestsurl = "http://api.tanshuapi.com/a

vue 父组件调用子组件的方法报错,“TypeError: Cannot read property ‘subDialogRef‘ of undefined“

vue 父组件调用子组件的方法报错,“TypeError: Cannot read property ‘subDialogRef’ of undefined” 最近用vue做的一个界面,引入了一个子组件,在父组件中调用子组件的方法时,报错提示: [Vue warn]: Error in v-on handler: “TypeError: Cannot read property ‘methods

股票数据接口-陈科肇

陈科肇 新浪财经 sz-深圳sh-上海历史分价表:http://market.finance.sina.com.cn/pricehis.php?symbol=sz000506&startdate=2016-12-27&enddate=2016-12-27历史成交明细(当日成交明细):http://vip.stock.finance.sina.com.cn/quotes_service/v