#pose-estimation
#поза-оценка
Вопрос:
Я попытался использовать оценку BlazePose для видео, но это дает мне хороший результат только для первого кадра и не дает никакого результата для других кадров. Я думаю _poses.length
, что должно быть равно количеству кадров, но, к сожалению, в моем коде вывод _poses.length
равен единице. Я был бы признателен вам за помощь.
lt;htmlgt; lt;headgt; lt;script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs-core"gt;lt;/scriptgt; lt;script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs-converter"gt;lt;/scriptgt; lt;script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs-backend-webgl"gt;lt;/scriptgt; lt;script src="https://cdn.jsdelivr.net/npm/@tensorflow-models/pose-detection"gt;lt;/scriptgt; lt;script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs-backend-wasm"gt;lt;/scriptgt; lt;/headgt; lt;bodygt; lt;video id="video" src="./film1.mp4"gt; lt;scriptgt; let detector = null; let _videoElement = null; let _poses = null; async function InitPage() { // Init pose detector const model = poseDetection.SupportedModels.BlazePose; const detectorConfig = { runtime: 'tfjs', enableSmoothing: true, modelType: 'full' }; detector = await poseDetection.createDetector(model, detectorConfig); console.log("Detector created..."); const video = document.getElementById('video'); video.width =1280; video.height =720; _videoElement = video; // cache video element console.log(_videoElement); BeginRefreshingKeypoints(); } let hasHitVideoReady = false; async function BeginRefreshingKeypoints() { // ESTIMATE POSES const estimationConfig = {maxPoses: 1,flipHorizontal: false}; const timestamp = (performance || Date).now(); const warmUpTensor = tf.fill([video.height, video.width, 3], 0, 'float32'); await detector.estimatePoses(warmUpTensor,estimationConfig); warmUpTensor.dispose(); _poses = await detector.estimatePoses(_videoElement, estimationConfig); console.log(_poses) console.log("ok") //if (_poses.lengthgt;0) //{ //for(i=0;i ;poses.length) //{ //var data = "text/json;charset=utf-8," encodeURIComponent(JSON.stringify(_poses[i]["keypoints"])); //console.log(typeof data); //var a = document.createElement('a'); //a.href = 'data:' data; //a.download = 'data.json'; //a.innerHTML = 'download JSON'; //a.click(); //} //} await asyncPause(100); // less console spam for now } window.onload = (event) =gt; { InitPage() }; /* Helper function, simple promise to await x milliseconds */ function asyncPause(delay) { return new Promise(function(resolve) { setTimeout(resolve, delay); }); } lt;/scriptgt; lt;div id="container"gt;lt;/divgt; lt;/bodygt; lt;/htmlgt;
Комментарии:
1. вы можете получить большее влияние, если будете использовать правильные теги для своего вопроса: какой язык вы используете, какие библиотеки?