モーション フィルタモデルを使用すると、長い動画セクションをモーション イベントを含む小さなセグメントにトリミングすることで、計算時間を短縮できます。このモデルでは、モーションの感度、イベントの最小長、ルックバック ウィンドウ、クールダウン期間を設定することで、モーション イベントの出力をユースケースに合わせて調整できます。
モデル パラメータ
モーション フィルタ モデルには、イベント セグメントとモデルがそれらを返す方法を調整するための 4 つの制御パラメータがあります。
パラメータ | 説明 | フラグ | デフォルト値 | 使用可能な値 |
---|---|---|---|---|
アクティビティの最小時間 | モーション イベントの終了後にキャプチャされるモーション イベントの最小長(秒単位)。 | --min-event-length INT |
10(秒) | 1 ~ 3600 |
モーション検知の感度 | モデルのモーション イベント フィルタリングの感度。感度が高いほど動きに敏感になり、動きのフィルタリングがより積極的に行われるため、検出される動きが増えます。 | --motion-sensitivity STRING |
"medium" |
"high" 、"medium" 、または "low" |
ルックバック ウィンドウ | モーション イベントが検出される前にサービスがキャプチャする動画コンテンツの量(秒単位)。 | --lookback-length INT |
3(秒) | 0 ~ 300 |
クールダウン期間 | モーション イベントの終了後、指定された時間のクールダウン期間が開始されます。クールダウン期間中、モデルはモーション イベントを登録しません。 | --cooldown-length INT |
300(秒) | 0 ~ 3,600 |
動きに対する感度
モーション フィルタを実行する際、モーションの感度は、モデルが動画ストリームから作成するセグメント動画の数を決定するうえで最も重要な役割を果たします。
モーション検出の感度が高いほど、モデルの検出はノイズや小さな動きに敏感になります。 この高感度設定は、照明が安定していて、小さな動く物体(遠くから撮影した人物など)が写っている場合におすすめします。
逆に、感度が低い は、照明の干渉や小さな動きに対して最も感度が低くなります。この設定は、屋外環境など、照明の干渉が多い状況に適しています。この設定は最も積極的なフィルタリング オプションであるため、小さな物体による動きは無視されます。
アクティビティの最小時間
最小イベント長は、フレーム内のモーション イベントの検出を停止した後にモデルがキャプチャする動画の長さです。デフォルト値は 10 秒ですが、1 秒~ 3,600 秒の時間を指定できます。最小イベント時間中に新しいモーション検出された場合は、新たに検出されたモーション イベントの長さに加えて、最小イベント時間の新しいカウントダウンの長さの期間、新しいモーション イベントが現在の動画セグメントに追加されます。
たとえば、2 台の車がフレーム内で移動している交差点の動画について考えてみましょう。最初の車が最初の 3 秒間に通過し、2 秒後に 2 台目の車が通過します。イベントの最小長を 1 秒に設定すると、モーションのある動画セグメントが 2 つあります。1 つの動画セグメントには最初の車が含まれ、もう 1 つのセグメントには 2 番目の車が含まれます。ただし、モーション イベントを 3 秒に設定すると、モーションを含む動画セグメントは 1 つだけになります。2 台目の車は、1 台目の車の 2 秒後にフレームに表示されます。
イベントの最小長を設定する場合は、動画内で通常モーション イベントが発生する頻度と、保存する動画セグメントの数を考慮してください。モーション イベントが頻繁に発生するが、ほとんどのモーション イベントを個別の動画セグメントに保存する場合は、最小イベント時間を短い時間に設定します。モーション イベントが発生する頻度が低いが、イベントをグループ化したい場合は、最小イベント時間を長く設定して、同じ動画セグメントに複数のイベントをキャプチャします。
ルックバック ウィンドウ
ルックバック ウィンドウは、モーション イベントが検出される直前の時間です。このウィンドウは、モデルがモーション イベントを検出する数秒前のフレームで何が起こっているかを確認する場合に便利です。ルックバック ウィンドウのデフォルト値は 3 秒ですが、0 ~ 300 秒の範囲で指定できます。
ルックバック ウィンドウを使用すると、移動するオブジェクトの発生場所を確認できます。ルックバック ウィンドウを使用して、モーション イベントが発生する数秒前のフレームの内容を確認することもできます。ルックバック ウィンドウは、フレーム内に動きのある小さな物体があっても、モーション イベントとして検出されない場合に役立ちます。ただし、フレーム内の小さな動く物体が原因で、検出されたモーション イベントが大きくなった可能性があります。
クールダウン期間
クールダウン期間とは、モーション イベントと最小イベント長がキャプチャされた後に発生する期間です。クールダウン期間中、検出された動きによってモーション フィルタがトリガーされることはありません。この期間の範囲は 0 秒~ 3,600 秒です。デフォルトは 300 秒に設定されています。
クールダウン期間は、ユーザーがコンピューティング費用を節約できるように設計されています。フレーム内の動きが想定され、動きが発生したタイミングのみを学習し、その後の動作は気にしない場合は、クールダウン期間が便利な設定です。
モデルを使用する
モーション フィルタ モデルは、Vertex AI Vision SDK を使用して使用できます。
vaictl
コマンドライン ツールを使用して、applying encoded-motion-filter
を指定し、値を渡して制御パラメータを設定することで、モデルを有効にします。
Vertex AI Vision SDK
モーション フィルタ モデルを使用してリクエストを送信するには、Vertex AI Vision SDK をインストールする必要があります。
次の変数を置き換えます。
- PROJECT_ID: 実際の Google Cloud プロジェクト ID。
- LOCATION_ID: ロケーション ID。例:
us-central1
サポートされているリージョン。詳細 - LOCAL_FILE.EXT: ローカル動画ファイルのファイル名。例:
my-video.mp4
- STREAM_ID: クラスタで作成したストリーム ID。例:
input-stream
--motion-sensitivity
: モーション イベントのフィルタリングの感度。オプションはhigh
、medium
、low
です。--min-event-length
: モーション イベントの最小継続時間(秒)。デフォルト値は10
秒です。使用可能な値:1
~3600
。--lookback-length
: モーション イベントの開始前のルックバック ウィンドウの長さ(秒)。デフォルト値は3
秒です。使用可能な値:0
~300
。--cooldown-length
: モーション イベント発生後のクールダウン時間(秒)。デフォルト値は300
秒(5 分)です。使用可能な値:0
~3600
。--continuous-mode
: 連続モードで送信するかどうか。デフォルト値はtrue
です。- OUTPUT_DIRECTORY: 出力動画セグメントの MP4 ファイルを保存するディレクトリ。
コマンド情報を表示する
コマンドとそのオプション パラメータの詳細を表示するには、次のコマンドを使用します。
vaictl send video-file applying motion-filter -h
モーション フィルタモデルを使用してローカル ファイル コンテンツをフィルタする
このコマンドは、モデルが動きを検出した動画セクションのみを送信します。
vaictl -p PROJECT_ID \
-l LOCATION_ID \
-c application-cluster-0 \
--service-endpoint visionai.googleapis.com \
send video-file --file-path LOCAL_FILE.EXT \
applying motion-filter --motion-sensitivity=medium \
--min-event-length=10 --lookback-length=3 --cooldown-length=0 \
to streams STREAM_ID --loop
モーション フィルタモデルを使用してローカル ファイル コンテンツをフィルタし、出力を保存する
このコマンドでは、--continuous_mode
フラグを使用して、モーション セグメントごとに個別の動画ファイルを出力します。
vaictl -p PROJECT_ID \
-l LOCATION_ID \
-c application-cluster-0 \
--service-endpoint visionai.googleapis.com \
send video-file --file-path LOCAL_FILE.EXT --continuous-mode=false \
applying motion-filter --motion-sensitivity=medium \
--min-event-length=10 --lookback-length=3 --cooldown-length=0 \
to mp4file --mp4-file-path=OUTPUT_DIRECTORY
ベスト プラクティス
モーション フィルタは、送信中にエンコードされた動画をデコードする際の計算時間を短縮できるように、軽量なモデルとして設計されています。フィルタを適切に動作させるには、被写体に静止カメラを直接向けます。フレームの背景に、重要でない動く物体を入れないでください。たとえば、動く木、一定の車の流れ、動く物体の影などの背景物体が含まれるフレームでは、これらの重要でない被写体の動きが検出されます。
注目すべきオブジェクトをフォアグラウンドに配置し、常に動いている背景オブジェクトの数をできるだけ減らします。まとめ
- 静止画カメラを使用する。
- 背景が常に動かないようにしてください。
- 微細な動きは検知されません。
- オブジェクトが十分な大きさであることを確認します。
屋内のベスト プラクティス
照明が一定で背景の動きが最小限の屋内環境では、次の屋内向けのベスト プラクティスに沿って撮影してください。
- 感度を上げる。フレーム内のオブジェクトは大きくなり、フレーム内のノイズも少なくなります。
- ルックバック ウィンドウとイベントの長さを短くします。屋内では動きが遅くなり、動きが可能なスペースが限られます。
屋内での撮影では、これらのベスト プラクティスに沿って撮影することで、モーション フィルタが物体の動きを最小限の時間で記録できるようになります。
屋外撮影のベスト プラクティス
屋外環境では、屋外シーンにフィルタのパフォーマンスに影響する変数が多く存在します。たとえば、動く木の影やフレーム内の日光の変化は、モーション フィルタ モデルの動きとして検出されます。次の状況と、それらに対応する最善の方法を検討してください。
状況 1:
歩行者が時折通り過ぎる歩道を撮影した動画について考えてみましょう。これらの動きは、カジュアルなウォーキングのように遅くすることも、スケートボードのパスのように速くすることもできます。次のガイダンスに沿って対応してください。
- 最小ウィンドウ長とルックバック ウィンドウを長い値に設定します。モーションの速度は屋内シナリオよりも範囲が広いため、最小ウィンドウ長とルックバック ウィンドウを長くすると、モデルはモーション イベント全体をキャプチャできます。
- 動きに対する感度を高くします。屋外環境には、動く木や影など、より自然に動くオブジェクトが含まれています。人や自転車などの対象物にのみフォーカスするには、動きの感度を高く設定して、背景の物体が常に検出されないようにします。
状況 2:
車が絶えず走行し、歩行者が時折通り過ぎる通りに焦点を当てた別の動画について考えてみましょう。次のガイダンスを使用します。
- 感度を中または低に設定する: 感度を低く設定すると、モデルはフレーム内のさまざまなサイズの動くオブジェクトをキャプチャできます。
- ルックバック ウィンドウと最小アクティビティ時間を短い値に設定します。道路上の自動車やその他の車両は、人間や自転車よりもはるかに速い速度で移動します。これらのパラメータに短い値を設定すると、動きの速度が速く、オブジェクトがフレーム内に入るとすぐにフレームから外れるという状況に対応できます。
- 短いクールダウン時間を設定します。動きが速いため、次のオブジェクトが最初のオブジェクトの直後にフレームに入る可能性があります。そのため、クールダウン時間が短くなります。
制限事項
モーション フィルタは各フレームのモーション ベクトルに大きく依存するため、留意すべき制限事項があります。
- カメラの角度: 動いているカメラはフレーム内に常に動きがあるため、静止カメラを使用します。
- オブジェクトのサイズ: 被写体をフレーム内に収めるように撮影し、重要なオブジェクトがフレーム内に十分に大きく表示されるようにして、モーション フィルタによる最適なパフォーマンスを実現します。
- 照明: フレームの明るさが急激に変化する、または影が激しく動くなど、照明が変化すると、モデルのパフォーマンスが低下する可能性があります。ダイナミック レンジが低いため、動画全体の明るさのトーンが似通っています。これは、モデルが動きを解釈する方法に影響し、モデルのパフォーマンスを低下させます。
- カメラの配置: このモデルは、フレーム内の動きを検出するように設計されています。これには、風が木や物体を動かしてフレーム外に影を作るなど、背景の動きが含まれます。フレームの大部分が、これらの動きを生成する背景オブジェクトを指している場合、モデルのパフォーマンスに影響する可能性があります。