Я создаю простой сегментирующий тело html следуя этому

.

Я пробовал:

   
        
        
       
        
           bodypix.load().then(function(net) {
               // BodyPix model loaded
           });
       
   

С помощью этого сценария:


// 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

NOTE- у меня нет gpu

Ответы (1)

Ошибка

На самом деле ошибка заключается в том, что по умолчанию tensorflow использует бэкенд webGL. Если у вас нет GPU, то произойдет сбой

Решение

примечание: данное решение предназначено для node 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

Для получения документации обратитесь здесь

.

2022 WebDevInsider