twtjudy1128
@twtjudy1128 (Juri Tawata)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

Teachable Machineで作成したPoseModelをml5jsで利用したいが、consoleに結果が表示されないです。

質問したいこと

Teachable Machineでモデルを作成し、ml5で利用しようと試みています。
PoseModelで2つのclassを作成し、ウェブカメラで取得した映像を振り分けて、1つ目のclassだった場合は音が出るようにしたいのですが、その前段階で行き詰ってしまいました。

行き詰っている内容としては、consoleに結果が表示されないことです。
コードも調べてみましたが、おかしいところに気づけないので、お知恵をお借りしたく存じます。

下記にソースコードとコンソール画面を共有するので、なにか気づいた方いらっしゃいましたら、コメントいただけますと幸いです。

ソースコード

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Hands Up!!!</title>
  </head>
  <body>
    <h1>Hands Up!!!</h1>
    <video id="video" width="640" height="480" autoplay></video>
    <script src="https://unpkg.com/ml5@latest/dist/ml5.min.js"></script>
    <script>
      // Model URL
      const poseNetModelURL = 'https://teachablemachine.withgoogle.com/models/EyJrXLhjZ/';

      async function main() {
        // カメラからの映像取得
        const stream = await navigator.mediaDevices.getUserMedia({
          audio: false,
          video: true,
        });
        // html内のidがvideoのdomを取得
        const video = document.getElementById('video');
        // videoにカメラ映像を適用
        video.srcObject = stream;

        // 自作モデルのロード
          const poseNet = ml5.poseNet(
          poseNetModelURL + 'model.json',
          video,
          modelLoaded
        );
        // モデルのロード完了時に実行される
        function modelLoaded() {
          console.log('Model Loaded!');
        }
        poseNet.on('pose', function(results) {
        poses = results;
        console.log(results[0].label);
        });
      }
      main();
    </script>
  </body>
</html>

コンソール

Image from Gyazo

▲黄色いアラートは出てますが、赤いエラーはひとつも出てないです。

考えたこと

アラートが問題なのかな?と思い、Google再起動なども行いましたが、変わらずでした。
それ以外の解決策がいま自力では見いだせていないです。。。

よろしくお願い致します。

1

1Answer

https://ml5js.org/reference/api-PoseNet/
ここを見ると、ml5.poseNet の引数にモデルのURL指定するようなことはできず、1つ目にvideoを設定する必要があります。
そのためこのソースコードでは、videoが2番目の引数になっているのでposeNetがvideoを認識できず、onPoseも発動していないのだと思います。

'Model Loaded'とコンソールに出てしまっているのでモデルをロードできた感じにも見えますが、PoseNetのデフォルトのモデルをロードできて、Videoが認識できていない状態だと思います。

1Like

Comments

  1. @twtjudy1128

    Questioner

    ありがとうございます!
    Teachable Machineがまだml5未対応でしたね…
    教えてくれてありがとうございました><

Your answer might help someone💌