有趣的 Handtrack.Js
什么是Handtrack.js?
Handtrack.js 是一个直接在浏览器中设计实时手部检测(边界框)原型的纯JS库。 它将手部跟踪作为一个对象检测问题,并使用经过训练的卷积神经网络来预测图像中手部位置的边界框。
Handtrack.js的核心原理
SSD模型(谷歌TensorFlow 深度学习框架+ EgoHands 数据集),普遍应用于无人机(大疆),机械臂(医疗、流水线、精密零件加工)等
Handtrack.js的优点
- 它可以让开发人员使用经过训练的手部检测模型快速创建手势交互原型;
- 它通过为用户提供有用的函数,允许用户在没有任何经验的情况下检测图像中的手,不需要自己训练模型;
- 用户无需导出任何图或已保存的模型,可以直接在 Web 应用程序中引用Handtrack.js 库,然后调用它提供的方法。
- 不需要使用任何额外的传感器或硬件
- 三行代码,即可使用Handtrack.js
Handtrack.js是如何运作的?
- 使用大量从用户网络摄像头角度捕获的带注释的手部姿势(打开、闭合、指向、捏...)数据集进行训练。早期版本的 Handtrack.js 是使用 egohands 数据集进行训练的。
- 训练好的模型转换为 Tensorflowjs webmodel 格式
- 模型被包装在一个npm包中,可以使用jsdelivr访问,这是一个免费的开源CDN,可让在 Web 应用程序中包含任何npm包。
缺点(模型在第一次打开页面时加载缓慢,但在后续加载(缓存)时变得更快。)
什么是EgoHands?
EgoHands 数据集,是一个包含 48 个 Google Glass 视频,其中包含两个人之间复杂的第一人称交互。该数据集的主要目的是实现更好的数据驱动方法来理解第一人称计算机视觉中的手。数据集提供:
- 高质量、像素级的手部分割
- 在语义上区分观察者的手和其他人的手,以及左手和右手的可能性
- 当演员自由地参与一系列联合活动时,几乎不受约束的手部姿势
- 包含 15,053 个标记为真值的手的大量数据
什么是 TensorFlow ?
是谷歌基于 Python 的机器学习开源框架,tensorflow相当于零件管理系统,铁做成一个一个铁零件(比如螺丝、散热板等),tensorflow(管理系统)就管理这些零件。我们可以在这个系统里选取零件,组装成我们想要的机器(人工智能程序)
国内平替:百度飞桨
如何使用Handtrack.js
****** 1.通过脚本标签导入******
handtrack.js 提供了一个异步load() 方法,该方法返回一个对象检测model对象的promise
****** 2.通过 NPM******
npm install --save handtrackjs
import * as handTrack from 'handtrackjs';
const img = document.getElementById('img');
const model = await handTrack.load();
const predictions = await model.detect(img);
安装过程的问题分享
1.npm i 的时候报错
因为内部有赞助链接,导致npm i运行以后会报错,筛除就可以了
2.npm run start 报错
必须要使用python3启动3005服务
3.启动项目以后插件无法加载
科学上网
缺点总结:
- 必须依赖python3启用http.server
- Handtrack.js 仍然是一个相当重的模型,并且在移动设备上运行时出现了一些不一致的结果。 主要是因为预测边界框所需的神经网络操作 , CenterNets(一种无锚对象检测模型) 作为最小化计算需求的一种方法
- 生态圈不完善,可玩性略低
- 国内未被正式引入,导致访问、使用时需要科学上网
-
Handtrack.Js
-
JavaScript
-
前端
大佬
佬
佬
姥
大姥
佬
姥