Browser TensorflowJS-在非活动选项卡中执行推断
我正在使用TensorflowJS在网络摄像头提要上运行推断。代码可以找到Browser TensorflowJS-在非活动选项卡中执行推断,browser,webcam,tensorflow.js,Browser,Webcam,Tensorflow.js,我正在使用TensorflowJS在网络摄像头提要上运行推断。代码可以找到 let模型、网络摄像头、labelContainer; //加载图像模型并设置网络摄像头 异步函数init(){ constmodelURL=URL+“model.json”; 常量metadataURL=URL+“metadata.json”; //加载模型和元数据 //请参阅API中的tmImage.loadFromFiles(),以支持来自文件选择器的文件 //或本地硬盘上的文件 //注意:姿势库将“tmImag
let模型、网络摄像头、labelContainer;
//加载图像模型并设置网络摄像头
异步函数init(){
constmodelURL=URL+“model.json”;
常量metadataURL=URL+“metadata.json”;
//加载模型和元数据
//请参阅API中的tmImage.loadFromFiles(),以支持来自文件选择器的文件
//或本地硬盘上的文件
//注意:姿势库将“tmImage”对象添加到窗口(window.tmImage)
model=wait tmImage.load(modelURL、metadataURL);
maxPredictions=model.getTotalClass();
//设置网络摄像头的便捷功能
const flip=true;//是否翻转网络摄像头
网络摄像头=新的tmImage.webcam(500500,翻转);//宽度,高度,翻转
等待网络摄像头。setup();//请求访问网络摄像头
等待网络摄像头。播放();
window.requestAnimationFrame(循环);
}
异步函数循环(){
webcam.update();//更新网络摄像头框架
window.requestAnimationFrame(循环);
}
即使浏览器选项卡未处于活动状态,是否也有办法进行预测?我的意思是,该选项卡未被选中,浏览器窗口可能会最小化。问题 在下一次浏览器重新绘制之前调用
requestAnimationFrame
。由于选项卡位于后台,因此不会重新绘制。引用Chrome:
根据,当页面位于后台时,Chrome不会调用requestAnimationFrame()
解决方案
您可以使用函数代替requestAnimationFrame
:
setTimeout(循环,20);//固定20毫秒延迟
然而,Chrome也会在10秒后开始限制背景标签。通过使用标志“禁用后台计时器节流”启动Chrome,可以解决该问题。有关此后台限制的更多信息,请查看有关Chrome开发者的信息。活动选项卡是什么意思?你能通过添加相关代码来缩小你的问题吗?@edkevek没问题,我已经更新了帖子
<script type="text/javascript">
let model, webcam, labelContainer;
// Load the image model and setup the webcam
async function init() {
const modelURL = URL + "model.json";
const metadataURL = URL + "metadata.json";
// load the model and metadata
// Refer to tmImage.loadFromFiles() in the API to support files from a file picker
// or files from your local hard drive
// Note: the pose library adds "tmImage" object to your window (window.tmImage)
model = await tmImage.load(modelURL, metadataURL);
maxPredictions = model.getTotalClasses();
// Convenience function to setup a webcam
const flip = true; // whether to flip the webcam
webcam = new tmImage.Webcam(500, 500, flip); // width, height, flip
await webcam.setup(); // request access to the webcam
await webcam.play();
window.requestAnimationFrame(loop);
}
async function loop() {
webcam.update(); // update the webcam frame
window.requestAnimationFrame(loop);
}
</script>