我正在尝试使用 tensorflow.js body-pix 创建浏览器内背景删除
虽然在线演示在我的计算机上达到每秒约 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