TM TMPose

TurboWarp 拡張機能 · 利用者ガイド

体の動きをプロジェクトの入力に。

TMPose は Teachable Machine Pose モデルを TurboWarp に接続します。カメラ映像がポーズごとの確率になり、ラベル、スコア、真偽値としてスクリプトから利用できます。

カメラプレビュー認識中
映像

ポーズ確率
現在のポーズ
jump0.91

クイックスタート

モデルから動きまで、4ステップ

公開済みの Teachable Machine Pose モデル、カメラ、ネットワーク接続が必要です。TMPose をカスタム拡張機能として読み込み、サンドボックス化せずに拡張機能を実行するを有効にしてから、次の順番でブロックを置きます。

1

学習して公開する

Teachable Machine で各ポーズに jumpstand などのわかりやすいクラス名を付けます。モデルをエクスポートし、共有 URL をコピーします。

2

モデル URL を設定する

モデルフォルダーの URL を貼り付けます。末尾のスラッシュがなくても自動で追加されます。

3

認識を開始する

カメラの利用を許可します。必要なら TMPose がカメラを起動し、モデルも自動で読み込みます。

4

結果を使う

最上位のラベルを読む、特定のポーズを判定する、信頼度でプロジェクトを制御する、といった使い方ができます。

緑の旗が押されたとき
set model URL tohttps://teachablemachine.withgoogle.com/models/…/
start recognition
ずっと
if pose is jump with confidence at least0.75

動作のしくみ

1枚の映像から、複数の答えへ

認識中、TMPose はカメラ映像を繰り返し取得し、ブラウザー内でモデルを実行します。そして、モデルに含まれるすべてのクラスについて確率を保存します。

current pose は確率が最も高いクラスです。confidence はそのクラスのスコアを小数第2位に丸めた値です。confidence of [NAME] は指定したクラスの値を返します。

プレビューはステージ上に表示

カメラのキャンバスを TurboWarp のステージ上に重ねて表示します。スプライトにはなりません。また、非表示にしてもモデルへの入力は変わりません。

カメラ
左上右上左下右下中央ステージ全体

開始と停止を使い分ける

  • start camera はカメラを起動してプレビューを表示します。
  • start recognition は、必要ならカメラ起動とモデル読込も行います。
  • stop recognition は認識結果を消しますが、カメラはそのまま利用できます。
  • stop camera は認識を止め、メディアトラックを解放し、プレビューも取り除きます。
  • hide camera preview は表示だけを変えます。認識は続けられます。

結果の選び方

すぐ反応するか、時間でなめらかにするか

通常のビルドでは、現在フレームの確率を利用できます。オプションの temporalPoseScoring 機能が有効なビルドでは、より安定した判定に使える蓄積スコアも利用できます。

標準

現在の信頼度

素早いジェスチャー向けです。フレームごとに答えが変わるため反応は速い一方、判定の境界付近では値が揺れることがあります。

フレームごとの信頼度しきい値

pose is [NAME] with confidence at least [THRESHOLD]? を使います。しきい値は 0〜1 の範囲に収まり、0.75 が試しやすい初期値です。

オプション機能

蓄積スコア

一定時間続けるポーズ向けです。経過時間に応じて根拠を加え、古い根拠を減衰させるため、1フレームだけの変化を抑えられます。

蓄積スコアしきい値
前回値 × 減衰係数 + 確率 × 蓄積係数 × 秒

最も高い正のスコアがしきい値に届くまで、ポーズ名は空文字です。非表示タブでの経過時間は計算に含まれません。認識を停止するかリセットすると、蓄積値はすべて消去されます。

ブロックガイド

目的に合うブロックを選ぶ

最初の有効な認識結果が出る前と、認識を停止した後のレポーターブロックは、空文字または 0 を返します。起動処理の調整には状態確認の真偽値ブロックが便利です。

モデルの準備

Teachable Machine モデルを設定して、準備状態を確認します。

  • set model URL to [URL] はモデルを切り替え、以前読み込んだモデルを解除します。
  • load modelmodel.jsonmetadata.json を取得します。
  • model is loaded? は準備できているかを返します。
  • TMPose version は拡張機能のビルド情報を返します。

カメラとプレビュー

映像の取得と認識を分けて制御できます。

  • start camera · stop camera · camera is running?
  • show camera preview · hide camera preview
  • camera preview is visible?
  • set camera preview opacity to [OPACITY] は透明度を 0〜1 に収めます。
  • set camera preview position to [POSITION]

認識と結果

認識ループを開始し、スコアを読んで条件を判定します。

  • start recognition · stop recognition · recognition is running?
  • current pose · confidence · confidence of [NAME]
  • pose is [NAME]? のしきい値は 0.75 固定です。
  • pose is [NAME] with confidence at least [THRESHOLD]?

時間計測とエラー

起動時間を測り、失敗の理由を表示できます。

  • camera startup time (ms)
  • model load time (ms)
  • first recognition time (ms)
  • last error は最後に発生した実行時エラーのメッセージを保持します。

オプションの蓄積ポーズブロック

次のブロックは、拡張機能のビルドで temporalPoseScoring が有効な場合だけ表示されます:set accumulated pose accumulation [ACCUMULATION] decay [DECAY]set accumulated pose threshold [THRESHOLD]reset accumulated pose scoresaccumulated poseaccumulated scoreaccumulated score of [NAME]。減衰係数は1秒後に残る割合(0〜1)で、認識中に変更した減衰係数は次回の認識開始時から有効になります。

トラブルシューティング

期待した結果にならないとき

まず last error を確認してください。設定時の失敗は、権限、間違ったモデル URL、ネットワーク制限、サンドボックス内での読み込みが主な原因です。

カメラが起動しない

TurboWarp ページにカメラの利用を許可し、ほかのアプリがカメラを占有していないことを確認します。ページは安全なコンテキスト(HTTPS または localhost)で実行する必要があります。その後、もう一度 start camera を実行してください。

モデルを読み込めない

Teachable Machine の編集画面や個別の JSON ファイルではなく、公開したモデルフォルダーの URL を使います。TMPose はその URL に model.jsonmetadata.json を追加します。jsDelivr と Teachable Machine のモデル配信先への通信が許可されていることも確認してください。

ポーズ名が安定しない

学習例の種類を増やす、全身をカメラ内に入れる、明るさを改善する、0.75 などのしきい値を試す、といった調整が有効です。蓄積ポーズブロックが表示されるビルドなら、少しの間維持するポーズに利用できます。

認識は動くがプレビューが表示されない

show camera preview を実行し、透明度を 0 より大きくして、対応する表示位置を選びます。ステージの DOM を変更したパッケージ版では、プレビューを取り付けられない場合があります。ステージ検出の失敗理由は last error で確認できます。