TM Teachable Machine GitHub

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

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

この拡張機能は Teachable Machine Pose、Image、Audioモデルを TurboWarp に接続します。カメラ映像またはマイク音声がラベルごとの確率になり、ラベル、スコア、真偽値としてスクリプトから利用できます。

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

ラベル確率
現在のラベル
jump0.91

紙芝居DSL 4.0集約ランタイム

集約パレットからTeachable Machineのマニュアルを開けます

Teachable Machine見出し直下のドキュメントボタンを押します。集約されたブロックも、 ここで説明するモデルURL、認識、プレビュー、ラベル、スコア、しきい値、ライフサイクルの 動作を保ちます。TurboWarp TM 2.0.0のパッケージ系列では公開ライフサイクルopcodeをstartRecognitionstopRecognitionisRecognizingへ統一し、旧名は残していません。 設定可能なSVGポーズオーバーレイブロックはポーズモードで引き続き利用でき、画像モードではキーポイントなしでラベルスコアを扱います。 latest-neededモデル初期化とキャンセル制御は引き続きhost向けAPIとしてComposition APIの章で説明します。

クイックスタート

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

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

1

学習して公開する

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

2

モデル URL を設定する

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

3

認識を開始する

カメラまたはマイクの利用を許可します。必要なら拡張機能が必要な入力を起動し、モデルも自動で読み込みます。

4

結果を使う

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

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

動作のしくみ

1つの入力から、複数の答えへ

認識中、この拡張機能は選択したカメラまたはマイク入力を繰り返し取得し、ブラウザー内でモデルを実行します。そして、モデルに含まれるすべてのクラスについて確率を保存します。

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

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

カメラのキャンバスを TurboWarp のステージ上に重ねて表示します。スプライトにはなりません。また、非表示にしてもモデルへの入力は変わりません。既定は左右反転表示です。カメラの動作中でも mirroredunmirrored を切り替えられ、認識入力の向きは変わりません。

1.11.0では、認識したPoseNetの17関節と標準12ボーンを既定でSVG表示します。表示、関節ごとの色・透明度・半径、ボーン共通の色・透明度・太さ、最小信頼度、各表示属性の信頼度連動をブロックで設定できます。

この拡張機能は、所有するカメラCanvasに通常のCanvas2D contextを使います。物理カメラによる320x240の「1回描画・1回readback」測定では、willReadFrequentlyによるend-to-endの性能向上を再現できませんでした。このhintは「1回描画・4回以上readback」という別のread-heavy条件では改善しましたが、video描画を遅くする場合があります。そのためCPU推論時にChromeのCanvas2D readback警告が表示されることがあります。他のTurboWarp Canvasは変更せず、host側の全体Canvas patchやConsole patchも不要です。

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

開始と停止を使い分ける

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

Composition host

物語でまだ必要なモデルだけを準備

Composition APIでは、application hostが不要になったモデル要求をキャンセルしても、カメラ起動は独立して継続できます。最初の推論は、入力と登録済みモデルの両方を待ちます。

並行できる処理と同期点

PoseNetの別々のfileに対するSHA検証は並行です。共通記述子の検証と分類器loadは重ねて進みますが、未検証byteをTensorFlowへ渡しません。カメラのgetUserMedia()video.play()はモデル準備全体と並行できます。

最新の必要モデルを優先

modelInitializationPolicy: 'latest-needed'でCompositionを作り、registerPoseModel()AbortSignalを渡します。重い要求は実行中1件と最新待機1件までです。キャンセルしたモデルはregistryへ公開しません。

結果の選び方

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

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

標準

現在の信頼度

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

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

label 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? は準備できているかを返します。
  • Teachable Machine version は拡張機能のビルド情報を返します。

カメラとプレビュー

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

  • start camera · stop camera · camera is running?
  • refresh camera list で利用可能な映像入力を検出します。
  • set camera to [CAMERA] · 既定、前面、背面、または検出済みカメラ
  • camera count · camera device ID · camera device name
  • show camera preview · hide camera preview
  • camera preview is visible?
  • set camera preview opacity to [OPACITY] は透明度を 0〜1 に収めます。
  • set camera preview position to [POSITION]
  • set camera preview to [MIRRORING] · mirrored(左右反転、既定)または unmirrored(そのまま)
  • camera preview mirroring は現在の設定値を返します。
  • set pose overlay [VISIBILITY] · pose overlay is visible?
  • set [PART] joint color [COLOR] opacity [OPACITY] radius [RADIUS]
  • set pose bone color [COLOR] opacity [OPACITY] width [WIDTH]
  • set pose overlay minimum confidence to [CONFIDENCE]
  • set pose [PROPERTY] confidence scaling [STATE]

カメラ名は利用許可後に初めて表示される場合があります。device ID はブラウザーと端末に固有です。動作中の切り替えでもモデル、認識状態、プレビュー設定を維持し、失敗時は以前のカメラへの復旧を試みます。

認識と結果

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

  • start recognition · stop recognition · recognition is running?
  • current label · confidence · confidence of [NAME]
  • label is [NAME]? のしきい値は 0.75 固定です。
  • label 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 を使います。この拡張機能はその URL に model.jsonmetadata.json を追加します。jsDelivr と Teachable Machine のモデル配信先への通信が許可されていることも確認してください。

ポーズ名が安定しない

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

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

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