学習して公開する
Teachable Machine で各ポーズに jump や stand などのわかりやすいクラス名を付けます。モデルをエクスポートし、共有 URL をコピーします。
TurboWarp 拡張機能 · 利用者ガイド
TMPose は Teachable Machine Pose モデルを TurboWarp に接続します。カメラ映像がポーズごとの確率になり、ラベル、スコア、真偽値としてスクリプトから利用できます。
クイックスタート
公開済みの Teachable Machine Pose モデル、カメラ、ネットワーク接続が必要です。TMPose をカスタム拡張機能として読み込み、サンドボックス化せずに拡張機能を実行するを有効にしてから、次の順番でブロックを置きます。
Teachable Machine で各ポーズに jump や stand などのわかりやすいクラス名を付けます。モデルをエクスポートし、共有 URL をコピーします。
モデルフォルダーの URL を貼り付けます。末尾のスラッシュがなくても自動で追加されます。
カメラの利用を許可します。必要なら TMPose がカメラを起動し、モデルも自動で読み込みます。
最上位のラベルを読む、特定のポーズを判定する、信頼度でプロジェクトを制御する、といった使い方ができます。
動作のしくみ
認識中、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 model は model.json と metadata.json を取得します。model is loaded? は準備できているかを返します。TMPose version は拡張機能のビルド情報を返します。映像の取得と認識を分けて制御できます。
start camera · stop camera · camera is running?show camera preview · hide camera previewcamera 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 scores、accumulated pose、accumulated score、accumulated score of [NAME]。減衰係数は1秒後に残る割合(0〜1)で、認識中に変更した減衰係数は次回の認識開始時から有効になります。
トラブルシューティング
まず last error を確認してください。設定時の失敗は、権限、間違ったモデル URL、ネットワーク制限、サンドボックス内での読み込みが主な原因です。
TurboWarp ページにカメラの利用を許可し、ほかのアプリがカメラを占有していないことを確認します。ページは安全なコンテキスト(HTTPS または localhost)で実行する必要があります。その後、もう一度 start camera を実行してください。
Teachable Machine の編集画面や個別の JSON ファイルではなく、公開したモデルフォルダーの URL を使います。TMPose はその URL に model.json と metadata.json を追加します。jsDelivr と Teachable Machine のモデル配信先への通信が許可されていることも確認してください。
学習例の種類を増やす、全身をカメラ内に入れる、明るさを改善する、0.75 などのしきい値を試す、といった調整が有効です。蓄積ポーズブロックが表示されるビルドなら、少しの間維持するポーズに利用できます。
show camera preview を実行し、透明度を 0 より大きくして、対応する表示位置を選びます。ステージの DOM を変更したパッケージ版では、プレビューを取り付けられない場合があります。ステージ検出の失敗理由は last error で確認できます。