Yolo 深圳
深セン
今すぐ参加
用語集

オプティカルフロー

コンピュータビジョンにおけるオプティカルフローのパワーをご覧ください。モーションの推定、ビデオ分析の強化、AIのイノベーションを推進する方法を学びます。

オプティカル・フローは コンピュータビジョンにおける基本的な概念である。 視覚シーンにおける物体、表面、エッジの見かけ上の動きを推定することである。この動きは この動きは、観察者(カメラなど)とシーン自体の間の相対的な動きに基づいて計算される。このプロセスの結果は ベクトルフィールドであり、各ベクトルは2つの連続するビデオフレーム間のピクセルまたは特徴の変位を表す。 これらの動きベクトルを分析することで、システムはシーンのダイナミクスをきめ細かく低レベルで理解することができ、「どのように」ピクセルが動いているのかという重要な疑問に答えることができます。 ピクセルは時間の経過とともに「どのように」動いているのかという重要な問題に答えることができる。

オプティカル・フローのコア・メカニズム

オプティカルフローの計算は、一般的に「明るさの一定性」の仮定に依存している。この原理は この原理は、オブジェクト上の特定の点のピクセル強度は、連続するフレーム間で、たとえ移動しても一定であると仮定する。 を仮定している。アルゴリズムはこの仮定を用いて変位をtrack する。このような モーションフィールド:

光フローとオブジェクト追跡

オプティカル・フローを オブジェクトトラッキングと区別することが重要である。オプティカルフローは低レベルの操作で、ピクセルの瞬間的な動きを記述します。 ピクセルの瞬間的な動きを記述する低レベルの操作です。これは本質的に オブジェクトの同一性を維持することはできません。

対照的に、オブジェクトトラッキングは、特定のエンティティを見つけ、フレーム間で一貫したIDを割り当てるハイレベルなタスクである。 を割り当てます。高度なトラッキングモードは Ultralytics YOLO11では、通常 物体検出次に を使用する。トラッカーはオプティカルフローを内部的に利用して位置を予測するかもしれない、 オプティカル・フローのゴールがモーション・マッピング(「このピクセルはどのくらいの速さで右方向に移動しているのか? オプティカル・フローのゴールはモーション・マッピング(「このピクセルはどのくらいの速さで右に動いているのか?)

AIの実世界での応用

オプティカルフローは、複雑な動きに関連する問題を解決するために、様々な産業で使用されている汎用性の高いツールです。

  • 自律システムとロボティクスの分野で 自律走行車自律走行車の分野では、オプティカル・フローは視覚的オドメトリー、つまり世界に対する自車両の相対的な動きを推定するために使用される。これは 静的な検出では見逃してしまうような動く障害物を検出するのに役立ち、より安全なナビゲーションに貢献します。同様に ロボティクスのようなフレームワークを使用して、エージェントはフローを使用して物体を操作し、動的な環境をナビゲートします。 ROS.
  • 行動認識:動きの時間的パターンを分析することで、AIシステムは人間の複雑な行動を認識することができる。 人間の複雑な行動を認識することができる。例えば スマートフィットネス技術オプティカルフローは ポーズ推定四肢の動きがフレーム間で スクワットやテニスのスイングのようなエクササイズを識別し、フレーム間で四肢の動きがスムーズに追跡されるようにすることで、ポーズ推定を洗練させることができる。
  • ビデオの安定化と圧縮:家電製品はフロー推定に大きく依存している。 電子式手ブレ補正(EIS)は、フローベクトルを使用して手ブレを補正する。さらに、ビデオ のようなビデオ圧縮規格は MPEGなどの動画圧縮規格では、動き推定 を使用し、フルフレームではなく、フレーム間の差分(残差)のみをエンコードすることで、ファイルサイズを削減します。 を使用しています。
  • メディカル・イメージング医療画像 医療画像解析オプティカルフローは、心エコー図における心臓の拍動など、組織の変形をtrack するために応用される。 これにより、医師は臓器機能を定量化し、静止画像では見えない異常を検出することができる。

実施例

次のPython 例は、以下のようなオプティカルフローを計算する方法を示しています。 OpenCVライブラリを使用する方法を示します。これはGunnar Farnebackアルゴリズムを使用します。

import cv2
import numpy as np

# Load two consecutive frames (ensure these files exist)
frame1 = cv2.imread("frame1.jpg")
frame2 = cv2.imread("frame2.jpg")

# Convert frames to grayscale
prvs = cv2.cvtColor(frame1, cv2.COLOR_BGR2GRAY)
next = cv2.cvtColor(frame2, cv2.COLOR_BGR2GRAY)

# Calculate dense optical flow using Farneback's algorithm
flow = cv2.calcOpticalFlowFarneback(prvs, next, None, 0.5, 3, 15, 3, 5, 1.2, 0)

# Compute magnitude and angle of 2D vectors
mag, ang = cv2.cartToPolar(flow[..., 0], flow[..., 1])

print(f"Flow shape: {flow.shape}")  # Output: (Height, Width, 2)
print(f"Max motion magnitude: {np.max(mag):.2f} pixels")

モーション解析と物体検出を統合したいユーザー向け、 Ultralytics 検出モデルフローアルゴリズムと組み合わせることで フローアルゴリズムと組み合わせることで、堅牢な分析パイプラインを作成できます。オプティカルフローは生のモーションデータを提供します、 のような高レベルのモデルは YOLO11のような高レベルのモデルが その動きを効果的に解釈するために必要な意味的理解を提供する。このようなモデルの研究開発は現在も続けられている。 YOLO26のようなモデルの研究開発を進めている。 時間的理解をさらに統合し、エンドツーエンドの映像解析をさらに高速化することを目指している。

Ultralytics コミュニティに参加する

AIの未来を共に切り開きましょう。グローバルなイノベーターと繋がり、協力し、成長を。

今すぐ参加