HighSpeed FullScreen JS面部检测

时间:2016-05-09 15:31:28

标签: javascript html5-video tracking.js

我目前正在研究基于前端实时相机的面部检测解决方案。到目前为止,我已经找到了3个适合我需求的库

1。https://github.com/auduno/clmtrackr

2。https://www.beyond-reality-face.com/overview

3。https://trackingjs.com/

所有3看起来都像是可能的解决方案但是跟踪.js和clmtrackr似乎在较大的播放器尺寸下显着减慢(我喜欢尽可能接近全屏应用程序,即使这意味着我需要硬编码屏幕尺寸)。超越现实面很棒,但不幸的是,相关的价格标签有点超出我的资源。有没有人有过JS全屏幕面部跟踪的经验?我很好奇我在寻找无法使用开源解决方案的东西(不一定是特征检测)。

谢谢!

2 个答案:

答案 0 :(得分:1)

我做了类似的事情。我的第一次尝试是跟踪.js,但正如你所说,大尺寸的性能下降(很多!)只是在Chrome中,但我需要它在Chrome中正常工作,因为我的目标是使其成为一个应用程序NW.js.

这种性能不足是每帧跟踪的结果(我认为),因此我尝试修改tracking.js代码,更改跟踪频率(requestAnimationFrame_内部的函数trackVideo_它在这个网站上显示:http://creativejs.com/resources/requestanimationframe/),但我对结果并不满意。

最后,我使用了一个非常古老的图书馆,在这里解释:http://liuliu.me/eyes/javascript-face-detection-explained(webRTC在他们的示例中使用https://webrtc.github.io/samples/src/content/getusermedia/face)并满足我的需求,使用setTimeout跟踪面孔。< / p>

我还在测试,但结果很有希望!

答案 1 :(得分:0)

这是几年前的一个问题,但由于我严重搞乱了我的客户项目的trackingjs,我想加入。

尽管我在视频的每一帧上做了一些自定义计算,但我有一个2017 MBP并且tracejs苍蝇没有太多问题。

内部trackingjs创建一个画布,并通过将视频的每个帧渲染到画布来完成所有识别。我办公室里的一些人的笔记本电脑比我的3岁以上,我们注意到笔记本电脑的性能下降很大。这让我在试图提高性能方面陷​​入困境,最终比你预期的要容易得多。

在trackingjs的源代码中,找到此函数tracking.trackVideo_。这通过我提到的requestAnimationFrame循环。

在该功能中,您会立即注意到这段代码:

var resizeCanvas_ = function() {
  width = element.offsetWidth;
  height = element.offsetHeight;
  canvas.width = width;
  canvas.height = height;
};

如果将画布高度和宽度设置为小于视频播放器大小的值,则性能将急剧增加。对我来说,我设置了canvas.width = width/2;canvas.height = height/2;,这就是诀窍!