TensorflowJS - 在非活动选项卡中执行推理
TensorflowJS - Perform inference in an inactive tab
我正在 运行 使用 TensorflowJS 推断网络摄像头源。可以找到代码 here.
<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>
有没有一种方法可以在您没有激活浏览器选项卡的情况下进行预测?我的意思是,该选项卡未被选中,浏览器 window 可能会被最小化。
问题
requestAnimationFrame
在下一次浏览器重绘之前被调用。由于选项卡在后台,因此不会发生重绘。引用 Chrome Developer updates:
Per the documentation, Chrome does not call requestAnimationFrame()
when a page is in the background.
解决方案
您可以使用 setTimeout
函数代替 requestAnimationFrame
:
setTimeout(loop, 20); // fixed 20ms delay
但是,Chrome 也会在 10 秒后开始限制后台标签页。可以通过使用标志 --disable-background-timer-throttling
启动 Chrome 来解决该问题。有关此后台节流的更多信息,请查看 Chrome 开发人员提供的有关 Budget-based background timer throttling 的信息。
我正在 运行 使用 TensorflowJS 推断网络摄像头源。可以找到代码 here.
<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>
有没有一种方法可以在您没有激活浏览器选项卡的情况下进行预测?我的意思是,该选项卡未被选中,浏览器 window 可能会被最小化。
问题
requestAnimationFrame
在下一次浏览器重绘之前被调用。由于选项卡在后台,因此不会发生重绘。引用 Chrome Developer updates:
Per the documentation, Chrome does not call
requestAnimationFrame()
when a page is in the background.
解决方案
您可以使用 setTimeout
函数代替 requestAnimationFrame
:
setTimeout(loop, 20); // fixed 20ms delay
但是,Chrome 也会在 10 秒后开始限制后台标签页。可以通过使用标志 --disable-background-timer-throttling
启动 Chrome 来解决该问题。有关此后台节流的更多信息,请查看 Chrome 开发人员提供的有关 Budget-based background timer throttling 的信息。