2

我正在创建一个简单的身体分割html

我努力了:

  <body> 
       <!-- Load TensorFlow.js --> 
       <script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@0.13.3"></script> 
       <!-- Load BodyPix -->
       <script src="https://cdn.jsdelivr.net/npm/@tensorflow-models/body-pix"></script> 
           bodypix.load().then(function(net) {
               // BodyPix model loaded
           });
       </script>
   </body>
</html>

使用此脚本:


// load the BodyPix model from a checkpoint
const net = await bodyPix.load();

// arguments for estimating person segmentation.
const outputStride = 16;
const segmentationThreshold = 0.5;

const personSegmentation = await net.estimatePersonSegmentation(imageElement, outputStride, segmentationThreshold);

它工作正常,没有错误,但问题是它甚至无法从简单的图像中检测到人。我已经尝试使用此链接进行演示,使用源代码提供的图像, 但即使在那里它也掩盖了整个图像,没有检测到任何返回 uint8clamped 数组的主体,该数组仅包含零,相同的模型在我的手机中工作。 是不是我电脑的问题。是i7 2600 3.7ghz

注意-我没有 gpu

4

1 回答 1

1

错误

实际上错误是默认情况下 tensorflow 使用 webGL 后端。如果你没有 GPU,那么它会崩溃

解决方案

注意-此解决方案适用于节点 js,但您也可以将类似的概念与脚本标签一起使用

要解决问题,您必须首先导入 @tensorflow/tfjs 或 @tensorflow/tfjs-core 或 @tensorflow/tfjs-node ,然后将其后端设置为 cpu (或 tensorflow,如果您使用的是 @tensorflow/tfjs-node )参考到下面的脚本

//main.js file, works well with webpack
import * as tf from '@tensorflow/tfjs-core'
import * as bodypix from '@tensorflow-models/body-pix'

tf.setBackend('cpu')

//now you can load bodypix or any model

有关文档,请参阅此处

于 2021-01-02T14:10:25.553 回答