0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于TensorFlow的开源JS库的网页前端人物动作捕捉的实现

张康康 2019-08-13 20:07 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

作者:极链科技 曾启澔


前言


随着前端生态的发展,Java已经不仅仅局限于作为网页开发,也越来越活跃于服务器端,移动端小程序等应用开发中。甚至通过Electron等打包工具,甚至能够开发多系统的桌面应用。其涉足的领域宽泛也使得能够实现的功能也不再是简单的UI控件制作和内容的展示,在互动娱乐,小游戏领域也有着极大的发展前景。本文以通过Java开发一个基于浏览器摄像头的实时人物动作捕捉小程序为例,介绍一下前端在这一领域的可行性。

什么是TensorFlow

TensorFlow 最初是由Google大脑小组的研究员和工程师们开发出来,采用数据流图(Data Flow Graphs)用于机器学习和深度神经网络方面数值计算的开源软件库。其高度的可移植性和多语言性使得它可以通过各种常用编程语言编写,轻松的运行在多种平台的设备上。是一个集性能,可靠性,通用性,易用性为一体的强大开源库。

本文所使用的开源Java模型库:

l tfjs-models/posenet: 一个机器学习模型,功能为对图像或者视频中的人物进行动作捕捉,输出人体各个部位的keypoints(坐标集)。具有单一人物分析和多人物分析的特点。

l tfjs-models/body-pix: 一个机器学习模型,功能为对图像或者视频中人物和背景进行分析,将人物从背景中剥离出来,输出结果为人体24个部位在画面中的像素位置。具有将人物与背景分离的功能。

实现原理

本文所介绍的基于浏览器和网络摄像头的人物实时动作捕捉方法,其实现原理是通过Java调用

*在基本的原理中并不是必须的组成部分,但在下文中会简单介绍一种通过的图像绘制功能,提升人物捕捉精度的方法。

通过tfjs-models/posenet模型库实现人物动作捕捉

l基本配置

· 导入JS

7675f2c6ea9e411eb9c9f4a422b25b54.png

· HTML

df7c716bcb814e79b1bb2ce4d48390d3.png

· 初始化网络摄像头

3daaf70911944b1982171be31591868f.png

· 生成posenet对象

1c91cb128c464aa1b19d50ccc7471fdf.png

参数说明:

architecture:分为MobileNetV1和ResNet50两个体系,其中ResNet50精度更高但处理速度较慢。

outputStride:输出结果每个像素占用字节数,数字越小结果越精确,但处理的成本和时间更多。

inputResolution:输入图像压缩后的尺寸,数字越大越精确,但处理的成本和时间更多。

multiplier:仅在MobileNetV1体系中使用,卷积运算的深度(通道数),数字越大层数越多越精确,但处理的成本和时间更多。

l执行实时分析

2833e7c75f6e4c68a1248417a053378a.png

l结果

· 多人捕捉:多人捕捉时能够获得画面中人物的keypoints,互相之间有一定的干扰但影响并不是特别大。

· 单人捕捉:很容易被背景及身边人物干扰,导致人体keypoint定位不准确。

l缺点

通过实际的效果可以看到,该模型可以在多人物的时候准确捕捉到各个人物的动作和身体部位的keypoints,虽然存在若干干扰和不稳定但基本能够接受,实时性效果好,但是无法区分主要人物和次要人物,需要开发者对结果数据进行处理。

其score的生成是根据形状准确度来计算,没有场景深度的分析,因此无法判断人物前后位置关系。

由于以上的问题,该方法在单一人物动作捕捉时被周围环境干扰的影响极大。在背景存在其他人物时会因无法判断主次人物关系,极大的降低准确率。对单一人物动作捕效果非常的不理想,需要进行改进。

改进方案

单一人物的动作捕捉被外界干扰的影响太大导致结果并不理想,因此首先要考虑的就是屏蔽掉周围干扰物体,突出主体人物。由此引入了tfjs-models/body-pix模型库。

**tfjs-models/body-pix模型库的主要功能:**实时分析人物结构,将人物从背景中剥离。其作用对象为单一捕捉对象,正好适用于上述单人捕捉结果不理想的情况。

l基本配置

· 导入JS

f97f879121b0461b9654597f91a20dd5.png

· 生成bodyPixNet对象

dca1c4f005984c13b5dc878a7d3c88bd.png

ltfjs-models/body-pix与tfjs-models/posenet的混合使用

298fe16954534859a253e6fb7c148c89.png

l结果

tfjs-models/body-pix与tfjs-models/posenet的混合使用,虽然加大了canvas处理的负担,加大了描绘和图像处理的次数,但是由于tfjs-models/body-pix已经先将人物与背景剥离,在tfjs-models/posenet只使用用最高效但低准确度的参数配置下,也能够产生远高于使用高精确度但消耗处理性能极大的配置所不能达到的准确度。从而实现了高效,高准确度,流畅的实时单人动作捕捉功能。

结论

通过TensorFlow的开源库,能够轻松的在浏览器上通过网络摄像头实现人物动作的实时捕捉。

由于基于图像分析,因此表现能力极大的依赖于对canvas的描绘性能,移动端由于浏览器canvas描绘能力以及硬件性能限制的原因,表现并不出色,无法做到长时间实时捕捉。甚至部分浏览器限制了网络摄像头的调用。在移动端的表现并不出色。

在单一人物的动作捕捉时,tfjs-models/body-pix与tfjs-models/posenet的混合使用能够使精确度大大提升。

由于需要对canvas进行描绘,结合其他canvas的JS库可以进行交互UI,交互小游戏等不同场合APP的开发。


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    【上海晶珩睿莓1开发板试用体验】TensorFlow-Lite物体归类(classify)

    目前尚未得知睿莓1开发板上面有NPU或者DPU之类的额外处理器,因此使用树莓派系列使用最广泛的TensorFlow-Lite进行物体归类,使用CPU运行代码,因此占用的是CPU的算力。在
    发表于 09-12 22:43

    飞书富文本组件RichTextVista开源

    近日,飞书正式将其自研的富文本组件 RichTextVista(简称“RTV”)开源,并上线OpenHarmony 三方中心仓。该组件以领先的性能、流畅的渲染体验与高度的开放性,为鸿蒙生态提供了更高效的富文本解决方案。
    的头像 发表于 07-16 16:47 760次阅读

    请问EZ-Serial固件是否使用任何OSS(开源软件)或软件?

    EZ-Serial 固件是否使用任何 OSS(开源软件)或软件?
    发表于 07-02 08:14

    如何用Brower Use WebUI实现网页数据智能抓取与分析?

    数据时,不会被网站反爬机制识别和封禁,能稳定有效地获取数据和执行任务。除了数据采集外,Browser-use还能抓取网页全部交互元素,自动完成设置的动作,如填写表单、内容提取等。 Browser-use已经成为AI 智能体应用首选的操作浏览器的工具,受到AI社区的热烈追捧
    的头像 发表于 04-17 17:48 893次阅读
    如何用Brower Use WebUI<b class='flag-5'>实现</b><b class='flag-5'>网页</b>数据智能抓取与分析?

    用树莓派搞深度学习?TensorFlow启动!

    介绍本页面将指导您在搭载64位Bullseye操作系统的RaspberryPi4上安装TensorFlowTensorFlow是一个专为深度学习开发的大型软件,它消耗大量资源。您可以在
    的头像 发表于 03-25 09:33 963次阅读
    用树莓派搞深度学习?<b class='flag-5'>TensorFlow</b>启动!

    摩尔线程支持DeepSeek开源通信DeepEP和并行算法DualPipe

    DeepSeek开源周第四日,摩尔线程宣布已成功支持DeepSeek开源通信DeepEP和并行算法DualPipe,并发布相关开源代码仓库:MT-DeepEP和MT-DualPipe
    的头像 发表于 02-28 15:58 847次阅读

    摩尔线程完成DeepSeek开源FlashMLA和DeepGEMM适配

    自DeepSeek启动“开源周”以来,已陆续开源三个代码。摩尔线程基于全新MUSA Compute Capability 3.1计算架构,可提供原生FP8计算能力,同时升级了高性能线性代数模板
    的头像 发表于 02-27 14:40 1107次阅读

    沐曦GPU跑通DeepSeek开源代码FlashMLA

    今日,DeepSeek正式启动"开源周"计划,首发代码FlashMLA一经开源即引发全网关注。截至发稿,该项目已在GitHub斩获超7.2K Star!
    的头像 发表于 02-25 16:25 1326次阅读

    AI开源模型有什么用

    AI开源模型作为推动AI技术发展的重要力量,正深刻改变着我们的生产生活方式。接下来,AI部落小编带您了解AI开源模型有什么用。
    的头像 发表于 02-24 11:50 884次阅读

    Bun 1.2震撼发布:全力挑战Node.js生态的JavaScript运行时新星

    了与 Node.js 的兼容性,还为开发者带来了内置的数据支持和云服务集成能力,进一步强化了其“全能工具包”的定位。Node.js 兼容性获得突破性进展在此次更新中,最引人注目的是 Bun 在 Node.
    的头像 发表于 01-24 10:42 1323次阅读
    Bun 1.2震撼发布:全力挑战Node.<b class='flag-5'>js</b>生态的JavaScript运行时新星

    SciChart—高性能的JavaScript图表和图形

    使用 SciChart 的 JavaScript 图表为您的 JS 应用程序发现终极解决方案。 使用 WebGL 创建动态、高速的图表和图形,非常适合实时处理复杂的数据可视化。使用我们强大而灵活
    的头像 发表于 01-22 10:15 2531次阅读
    SciChart—高性能的JavaScript图表和图形<b class='flag-5'>库</b>

    前端性能优化:提升用户体验的关键策略

    在互联网飞速发展的今天,用户对于网页的加载速度和响应性能要求越来越高。前端性能优化成为了提升用户体验、增强网站竞争力的关键策略。一个性能良好的前端应用,能够快速响应用户的操作,减少等待时间,为用户
    的头像 发表于 01-22 10:08 848次阅读

    前端技术的未来趋势:拥抱创新,塑造无限可能

    为未来的重要趋势之一。智能交互将变得更加自然和流畅。例如,通过语音识别和自然语言处理技术,用户可以直接通过语音指令与网页进行交互,实现更加便捷的操作。智能聊天机器人将在网页中得到更广泛的应用,为用户提供实时
    的头像 发表于 01-22 10:07 882次阅读

    AKI跨语言调用神助攻C/C++代码迁移至HarmonyOS NEXT

    跨语言调用,成为开发者和厂商面临的重要挑战。为解决这一痛点,一款名为AKI (Alpha Kernel Interacting)的开源三方应运而生,它通过高效封装跨语言调用接口,帮助开发者将C
    发表于 01-02 17:08

    开源AI模型是干嘛的

    开源AI模型是指那些公开源代码、允许自由访问和使用的AI模型集合。这些模型通常经过训练,能够执行特定的任务。以下,是对开源AI模型的详细
    的头像 发表于 12-14 10:33 1288次阅读