TENSORFLOW.JS 3D-оценка позы не работает

#javascript #tensorflow2.0 #pose-estimation

Вопрос:

Год назад я провел большую оценку позы на Python, используя OpenCV и Mediapipe. Недавно я прочитал блог Tensorflow(https://blog.tensorflow.org/2021/08/3d-pose-detection-with-mediapipe-blazepose-ghum-tfjs.html) о возможности 3d-оценки позы. Это привело меня в действие, поэтому я немного изучил JavaScript, чтобы начать свое путешествие. Через 3 дня я понял, что мой код действительно работает, Javascript не выдает ошибок, хотя ничего не работает. Я внимательно следил за действиями своего приятеля, который уже месяц использует JavaScript, хотя он не мог мне помочь, потому что никогда не работал с ИИ. Я никогда не работал с ним, поэтому понятия не имею, как работает await в JS. Может быть проблема, лол

     <body>
        <div id="app"></div>
        <video id="video" controls><source src="vid.mp4" type="video/mp4"/></video>
        <script src="https://cdn.jsdelivr.net/npm/@tensorflow-models/pose-detection"></script>
        <script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs-core"></script>
        <script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs-converter"></script>
        <script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs-backend-webgl"></script>
        <script src="https://cdn.jsdelivr.net/npm/@mediapipe/pose"></script>
    <script>
        const model = poseDetection.SupportedModels.BlazePose;
        const detectorConfig = {
          runtime: 'tfjs',
          modelType: 'full'
        };
        const detector = await poseDetection.createDetector(model, detectorConfig);
        const video = document.getElementById('video');
        const poses = await detector.estimatePoses(video);
        document.getElementById("app").innerHTML = str(poses[0].keypoints3D);
    </script>
    </body>
 

Моя цель — «распечатать» массив обнаруженных поз на экране, чтобы я мог видеть, что это сработало. Есть какие-нибудь идеи?

######################################################################### [ПРАВИТЬ]

     import * as poseDetection from '@tensorflow-models/pose-detection';
    import '@mediapipe/pose';
    
    async function estimatePosesOfVideo(videoelement) {
        const model = poseDetection.SupportedModels.BlazePose;
        const detectorConfig = {runtime:'mediapipe',modelType:'full'};
        const detector = await poseDetection.createDetector(model, detectorConfig);
        const poses = await detector.estimatePoses(videoelement);
        return poses
    }
    
    const videoelement = document.getElementById('video');
    const poses = estimatePosesOfVideo(videoelement);
    
    console.log(poses)
 

введите описание изображения здесь

Я понятия не имею, что я могу с этим поделать.

Комментарии:

1. Я сталкиваюсь с той же проблемой, вы нашли, что происходит не так ?

Ответ №1:

Я бы рекомендовал консоль.журнал для целей тестирования. Это выведет то, что вы ввели в Инспектор (Crtl Shift I). В качестве альтернативы вы могли document.innerText бы «распечатать» что-нибудь.

Ответ на редактирование

Во-первых, ваша асинхронная функция estimatePosesOfVideo возвращает обещание, как и все асинхронные функции. При печати результата на консоль вместо этого вы печатаете объект Promise. Я бы посоветовал вместо этого использовать .then объект обещания.

Что касается других вопросов, трудно дать какой-либо осмысленный ответ, поскольку мне не хватает информации о том, в какой строке возникает ваша ошибка. Пожалуйста, добавьте эту информацию в качестве комментария в разделитель кода или другим способом.