YOLO Vision Shenzhen
深セン
今すぐ参加
用語集

オプティカルフロー

コンピュータービジョンにおけるオプティカルフローの基礎を探求します。モーションベクトルがどのようにビデオ理解を推進し、Ultralytics YOLO26 における track を強化するかを学びましょう。

オプティカルフローは、観察者とシーン間の相対運動によって引き起こされる、視覚シーンにおけるオブジェクト、表面、エッジの見かけの動きのパターンです。コンピュータービジョンの分野において、この概念はビデオシーケンス内の時間的ダイナミクスを理解するための基礎となります。2つの連続するフレーム間のピクセルの変位を分析することで、オプティカルフローアルゴリズムは、各ベクトルが特定の点の動きの方向と大きさを表すベクトル場を生成します。この低レベルの視覚的キューにより、人工知能システムは画像に何があるかだけでなく、それがどのように動いているかを認識できるようになり、静止画分析と動的なビデオ理解の間のギャップを埋めます。

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

オプティカルフローの計算は一般的に輝度不変性の仮定に依存しており、これは物体上のピクセルの輝度が、たとえ移動していても、フレーム間で一定に保たれると仮定するものである。アルゴリズムはこの原理を利用して、主に二つのアプローチで運動ベクトルを解く:

  • スパースオプティカルフロー: この手法は、特徴抽出によってdetectされたコーナーやエッジなどの、特定の明確な特徴のサブセットの動きベクトルを計算します。Lucas-Kanade法のようなアルゴリズムは計算効率が高く、特定の関心点のtrackで十分なリアルタイム推論タスクに理想的です。
  • Dense Optical Flow: このアプローチは、フレーム内の全てのピクセルに対してモーションベクトルを計算します。計算負荷は著しく高いものの、image segmentationや構造解析のようなきめ細かいタスクに不可欠な包括的なモーションマップを提供します。現代のdeep learningアーキテクチャは、大規模データセットから複雑なモーションパターンを学習することで、密なフロー推定において従来の数学的手法をしばしば上回ります。

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

しばしば併用されますが、オプティカルフローをオブジェクトトラッキングと区別することが不可欠です。オプティカルフローは瞬間的なピクセルの動きを記述する低レベルの操作であり、オブジェクトの同一性や永続性を本質的に理解するものではありません。

対照的に、object trackは、特定のエンティティを特定し、時間の経過とともに一貫したIDを割り当てる高レベルのタスクです。Ultralytics YOLO26に統合されているような高度なトラッカーは、通常、オブジェクトを見つけるためにobject detectを実行し、その後、光学フローから派生することもあるモーションキューを使用して、フレーム間のdetectを関連付けます。光学フローは「これらのピクセルは今どれくらいの速さで動いているか」に答え、trackは「5番の車はどこに行ったか」に答えます。

実際のアプリケーション

ピクセルレベルでの動き推定能力は、幅広い高度な技術を可能にします:

  • Autonomous Vehicles and Robotics: オプティカルフローはビジュアルオドメトリに使用され、ロボットや車が環境に対する自身の動きを推定することを可能にします。また、 視覚野内のオブジェクトがどれだけ急速に拡大または移動しているかを分析することで、深度推定と障害物回避を支援します。
  • ビデオ手ぶれ補正: カメラや編集ソフトウェアは、フローベクトルを使用して意図しないカメラの揺れを検出します。この全体的な動きを補償することで、システムは映像をデジタル的に安定させることができます。これは、スマートフォンやアクションカメラなどの現代の家電製品における標準機能です。
  • 行動認識:スポーツ分析やセキュリティにおいて、ピクセルの時間的流れを分析することで、システムは複雑な人間の行動を識別するのに役立ちます。例えば、姿勢推定モデルは、フローデータで拡張することで、四肢の動きの速度に基づいて、人が歩いているのか走っているのかを区別できます。
  • ビデオ圧縮: MPEGビデオコーディングのような標準は、動き推定に大きく依存しています。コーデックは、すべての完全なフレームを保存する代わりに、オプティカルフロー(動きベクトル)とフレーム間の差分(残差)を保存することで、ストリーミングとストレージのファイルサイズを大幅に削減します。

実施例

以下の例は、コンピュータビジョンエコシステムにおける標準ツールである OpenCV ライブラリ を使用して密なオプティカルフローを計算する方法を示しています。このスニペットは、Farnebackアルゴリズムを使用して2つの連続するフレーム間のフローマップを生成します。

import cv2
import numpy as np

# Simulate two consecutive frames (replace with actual image paths)
frame1 = np.zeros((100, 100, 3), dtype=np.uint8)
frame2 = np.zeros((100, 100, 3), dtype=np.uint8)
cv2.rectangle(frame1, (20, 20), (40, 40), (255, 255, 255), -1)  # Object at pos 1
cv2.rectangle(frame2, (25, 25), (45, 45), (255, 255, 255), -1)  # Object moved

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

# Calculate dense optical flow
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"Max motion detected: {np.max(mag):.2f} pixels")

生のピクセルモーションではなく、物体の永続性を必要とする高レベルのアプリケーションの場合、ユーザーはUltralytics YOLO11およびYOLO26で利用可能なtrackモードを検討すべきです。これらのモデルは、モーション分析の複雑さを抽象化し、交通監視から小売分析に至るまでのタスクに対して、堅牢な物体IDと軌跡をすぐに提供します。

共にAIの未来を築きましょう!

未来の機械学習で、新たな一歩を踏み出しましょう。