AutoScript Sync の姿勢推定

AutoScript Sync がファンスクリプトを作るとき、姿勢推定はあなたの PC 上で動く YOLOv8-pose モデルが行います。サンプリングしたフレームの中の人物を一人ずつ見つけ、17 か所のキーポイントを置きます。トラッカーがフレームからフレームへとその人物を追い、動きを位置信号の候補に変換します。姿勢推定はオプションです。いくつかある候補の 1 つにすぎず、姿勢モデルがなければエンジンはオプティカルフローだけで動作します。

2026 年 9 月 21 日にアプリのコードと照合済み。

Accuracy の各段階が使うモデル

YOLOv8-pose には 4 つのサイズがあります。アプリは small を自動でダウンロードし、ほかのサイズはアプリ内の Download best の選択画面から入手します。この画面は GPU では large を、CPU では small を推奨します。

YOLOv8-pose モデルと、アプリがそれを選ぶ条件
モデルサイズCUDA GPU での選択対象
yolov8n-pose(nano)約 13 MBFast
yolov8s-pose(small)約 45 MBBalanced。既定でダウンロードされるモデル
yolov8m-pose(medium)約 99 MBBalanced と High で、第一候補がインストールされていない場合の第二候補
yolov8l-pose(large)約 168 MBHigh

この対応は、Auto-pick model tier from Accuracy がオン(既定)のときに適用されます。アプリが選べるのはインストール済みのモデルだけなので、既定のインストールでは、ほかのモデルをダウンロードするまでどの段階でも small モデルが使われます。CPU では意図的に上限を設けています:Fast は nano のみ、Balanced と High は最大でも small を使います。モデルファイルを自分で指定することもできます。

モデルが見るもの:1 人あたり 17 か所のキーポイント

既定では、姿勢推定はサンプリングしたすべてのフレームに対し、エンジンのほかの部分と同じ幅 320 px の解析用画像で実行されます。そのフレームはレターボックス処理でモデルの入力サイズに合わせられます。ONNX モデルはエクスポート時のサイズ(標準的なエクスポートでは 640 px)を使い、同梱の Ultralytics パッケージで実行する .pt モデルは 320 px で動作します。

信頼度 0.35 を超えて検出された人物は、COCO 標準の 17 か所のキーポイント(頭部の点、肩、肘、手首、腰、膝、足首)とともに保持されます。姿勢推定を実行する頻度は config.json の間隔設定(pose_every_n)で決まり、初期状態ではサンプリングしたすべてのフレームです。

人物トラッカーが同一人物を追い続けるしくみ

検出結果が役に立つのは、シーンを通して同じ人物を追えるときだけです。AutoScript Sync は既製のものではなく独自のトラッカーを使っています。フレーム間の人物の対応付けは、枠の中心同士の距離と枠の大きさで行い、最も近いものから順に一致させます。

追跡した人物から、いくつかの候補信号を作ります:腰の上下の動きと、身体の部位の組(腰と腰、頭と腰、手と腰)の相対的な動きで、それぞれ身体の大きさで割ったものです。各候補は次の 3 点で採点されます:

  • 繰り返しの強さ:0.2〜4 Hz の間で最も強いピークに含まれるパワーの割合。
  • カバー率:シーンのうち実際に測定できた割合。40% 未満は 0 点になります。
  • 振幅:どれだけ大きく動くか。

最もスコアの高い候補はシーンのチャプターごとに別々に選ばれるので、シーン間で体位が変われば、姿勢推定が提供する身体部位の信号も変わることがあります。

姿勢推定がスクリプトに加えるもの

姿勢推定が単独でスクリプトを書くわけではありません。最終的な位置の軌跡は、アンカーに結び付けたオプティカルフローから作られ、姿勢は動いている領域の中心や深度と並ぶアンカー候補の 1 つです。姿勢が動画の単独のアンカーに選ばれるのは、動画の 25% 以上をカバーし、品質で重み付けしたスコアが領域中心のスコアの 0.6 倍を超える場合だけです。選ばれなかった場合も、既定の、読み取れるすべてのチャンネルをサンプルごとにブレンドしたものには使われます。ただし、そのブレンドが使われるのは、選定されたチャンネルと同等以上のスコアのときだけです。各候補の選定スコアはスクリプトのメタデータに書き込まれるので、何が選ばれたかを確認できます。

姿勢は動きの種類のラベル付けにも役立ちます。キーポイントの配置と顔の位置は 2 秒ごとの各ウィンドウのラベルの根拠として使われ、分類器の判定を覆したり調整したりすることがあります。

姿勢推定でストロークの軌跡がどれだけ良くなるかは、示されていません。あるテスト動画では、姿勢推定のオン・オフで参照スクリプトとのストロークの一致度(F1)が 0.607 と 0.610 の間でしか変わらず、開発者が意味のある差とみなす 0.01 を下回りました(実行ごとのばらつきは約 ±0.005)。この参照は手作りのスクリプトではなく、手で描いたトラッキング枠で誘導したエンジンの出力です。また、軽量な姿勢モデルと大型の姿勢モデルのストローク精度の比較は記録されていません。

GPU での実行と CPU へのフォールバック

姿勢モデルは、ONNX として ONNX Runtime で、または .pt ファイルとして同梱の Ultralytics と PyTorch で、ローカルに実行されます。高速化は NVIDIA CUDA のみで、モデルに AMD や Intel 向けの高速化はなく、TensorRT も使っていません。

ONNX Runtime は CUDA が使えないとき、何も知らせずに CPU で読み込まれることがあります。そのためアプリは推測せずに、セッションが実際にどのプロバイダーを得たかを確認します。CUDA GPU を指定しても使えない場合、姿勢推定は CPU に切り替わり、アプリは使われているプロバイダーを表示します。Check GPU ボタンでこの確認をいつでも実行できます。表示される ms/フレームは姿勢モデル自体のセルフテストの値で、解析全体の速度ではありません。

既定では、GPU での推論が実行ごとに同じ数値になるよう、アプリは cuDNN の自動チューニングもオフにします。速度は多少犠牲になります。ただし、アプリは実行の合間に学習するので、再生成で同一のスクリプトになることまでは保証されません。

制限

  • 隠れた身体。モデルが見えないキーポイントは測定されません。シーンの 40% 未満しか測定できなかった候補信号は 0 点になり、動画のカバー率が 25% 未満では姿勢が選定アンカーになることはできません。そのため、身体が大きく隠れたシーンでは、スクリプトは代わりにオプティカルフローと領域の中心に頼ります。
  • 人が多いフレーム。トラッカーは枠の位置と大きさだけで人物を対応付けます。見た目のモデルは持っていないので、人物が重なったり交差したりすると、フレーム間で人物が入れ替わることがあります。
  • 小さく映った人物。姿勢推定は幅 320 px の解析用フレームで実行されるので、引きのショットで小さく映っている人物は、モデルが使えるピクセルがわずかしかありません。
  • 速度。開発者の測定では、姿勢推定が解析時間の中で最も大きな割合を占めてきました。そのため、Fast では小さいモデルを選び、CPU ではモデルのサイズに上限を設けています。

よくある質問

スクリプトを作るのに姿勢モデルは必要ですか?

いいえ。なければエンジンはオプティカルフローだけで動作し、Inference のステータス行にその旨が表示されます。自動ダウンロードをオフにしない限り、small の姿勢モデルは自動でダウンロードされます。

large の姿勢モデルをダウンロードすべきですか?

NVIDIA GPU では、Download best が large を推奨し、High で使われます。small より良いスクリプトになるかは測定していないので、これは選択肢の 1 つであって、問題の解決策ではありません。

姿勢推定は AMD や Intel のグラフィックカードで動きますか?

高速化はされません。AI モデルは NVIDIA CUDA のみを使います。ほかのハードウェアでは姿勢推定は CPU で動作し、動きはしますが、かなり遅くなります。

姿勢モデルは何かをオンラインに送信しますか?

いいえ。あなたの PC 上で動作し、アプリの解析モジュールにはネットワーク関連のコードがありません。インターネットが必要なのはモデルのダウンロードそのものだけです。

次に読む

自分の動画で試す

体験版は 1 日間、あなた自身の PC で動作します。動画はローカルで解析され、アップロードされることはありません。