【发布时间】:2021-05-20 08:30:17
【问题描述】:
我正在尝试使用 tensorflow.js body-pix 创建浏览器内背景删除
虽然在线demo 在我的计算机上达到每秒约 10 帧,但我的代码每帧需要约 3 秒。
我主要是按照官方github上的例子来的
这是我的代码:
const remove_background = async (img) => {
console.time("ML");
console.time("loadModel");
const net = await bodyPix.load({
architecture: 'MobileNetV1',
outputStride: 16,
multiplier: 0.5,
quantBytes: 2
});
console.timeEnd("loadModel");
console.time("segmentPerson");
const segmentation = await net.segmentPerson(img.imageData, {
segmentationThreshold: 0.7,
internalResolution: 0.25
});
console.timeEnd("segmentPerson");
console.time("ApplyMask");
for (var i=0;i<segmentation.data.length;i++) {
if(segmentation.data[i] === 0) {
img.imageData.data[i*4] = 255;
img.imageData.data[i*4+1] = 0;
img.imageData.data[i*4+2] = 0;
}
}
console.timeEnd("ApplyMask");
console.timeEnd("ML");
return img;
}
以下是时间:
loadModel: 129.35498046875 ms
segmentPerson: 2755.817138671875 ms
ApplyMask: 4.910888671875 ms
ML: 2890.7060546875 ms
我从内部分辨率为 0.1 的 1700x1700 图像开始,逐渐缩小到分辨率为 0.25 的 200x200 图像,但没有显着改善。
我做错了什么?
我正在使用 tfjs@1.2 & body-pix@2.0
【问题讨论】:
-
可能是您使用的后端类型运行
import {getBackend} from '@tensorflow/tfjs-core';并告诉我console.log(getBackend())的结果是什么。 -
我正在浏览器中运行它
<script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@1.2"></script> -
添加此评论是为了让遇到此消息的其他人受益,我相信 yudiesh 指的是他们在此处的文档中讨论的 tensorflow 后端 - tensorflow.org/js/guide/platform_environment 在 CPU 与 GPU 上运行它与 WASM 相比,可能会对性能产生巨大影响。
标签: tensorflow.js bodypix