コンピュータビジョン研究の最近のブレークスルーは、特定のクラスに属するオブジェクトのインスタンスを検出するためのオブジェクト検出や、ピクセル単位の分類のためのセマンティックセグメンテーションなどの技術を通じて、マシンが周囲の世界を知覚することを可能にしました。しかし、リアルタイムビデオ入力を処理するために、これらの技術のほとんどの実装は、時間情報\((t)\)を無視して、同じフレーム\((x,y)\)内のオブジェク 言い換えれば、実行ごとに、完全に無関係な画像であるかのように、各フレームを独立して再評価します。 しかし、連続したフレーム間の関係が必要な場合、たとえば、フレーム間の車両の動きを追跡して現在の速度を推定し、次のフレーム内の位置を予測したいと
または、アーチェリー、野球、バスケットボールなどの人間の行動を認識するために、連続したフレーム間の人間のポーズ関係に関する情報が必要な場p>
このチュートリアルでは、オプティカル-フローとは何か、その二つの主な亜種(スパースとデンス)を実装する方法を学び、ディープラーニングと有望な将来の方向性を含む最近のアプローチの全体像を得ることができます。オプティカルフローとは何ですか?
スパース光フローの実装
密な光フローの実装
ディープラーニングとビヨンド
- 光フローとは何ですか?
- Sparse vs Dense Optical Flow
- スパースオプティカルフローの実装
- ビデオを読み取るようにOpenCVを設定し、パラメータを設定する
- Shi-Tomasi Corner Detector-追跡するピクセルを選択する
- 特定のオブジェクトの追跡
- Lucas-Kanade:Sparse Optical Flow
- 視覚化する
- 密なオプティカルフローの実装
- 環境の設定
- ビデオを読むためにOpenCVを設定する
- Farneback Optical Flow
- 視覚化する
- ディープラーニングを用いたオプティカルフロー
- 光フローアプリケーション:セマンティックセグメンテーション
- 光フローアプリケーション:オブジェクト検出&追跡
- 結論
光フローとは何ですか?
まず、オプティカルフローの高レベルの理解から始めましょう。 オプティカルフローは、オブジェクトとカメラとの間の相対的な動きによって引き起こされる、シーケンスの連続したフレーム間のオブジェク 光流の問題は、次のように表現することができます:
連続したフレーム間で、画像強度\((I)\)を空間\((x,y)\)と時間\((t)\)の関数として表現することができます)\). つまり、最初の画像\(I(x,y,t)\)を\(t\)時間にわたってピクセルを\((dx,dy)\)だけ移動すると、新しい画像\(I(x+dx,y+dy,t+dt)\)が得られます。
まず、オブジェクトのピクセル強度は連続するフレーム間で一定であると仮定します。
第二に、我々はRHSのテイラー級数近似を取り、共通
第三に、我々は光フロー方程式を導出するために\(dt\):ここで、\(u=dx/dt\)と\(v=dy/dt\)は、\(u=dx/dt\)と\(v=dy/dt\)は、\(v=dy/dt\)と\(v=dy/dt\)は、\(v=dy/dt\)と\(v=dy/dt\)と\(v=dy/dt\)と\(v=dy/dt\)と\(v=dy/dt\)と\(v=dy/dt\)と\(v=dy/dt\)と\(v=dy/dt\)と\(v=dy/dt\)と\(v=dy/dt\)と\(v=dy/dt\)と\(v=dy/dt\)と\(v=dy/dt\)と\(v=dy/dt\)\(dI/dx,dI/dy\)と\(dI/dt\)は、水平軸、垂直軸、および時間に沿った画像の勾配です。
\(dI/dx,dI/dy\)と\(dI/dt\)は、水平軸、垂直軸、および時間に沿った画像の勾配です。
\(dI/ つまり、\(u(dx/dt)\)と\(v(dy/dt)\)を解いて時間の経過に伴う動きを決定します。\(v(dy/dt)\)を計算すると、\(v(dy/dt)\)は、\(v(dy/dt)\)を計算することができます。 2つの未知の変数に対して1つの方程式しかないので、\(u\)と\(v\)の光学流れ方程式を直接解くことはできないことに気付くかもしれません。\(u\)と\(v\) この問題に対処するために、Lucas-Kanadeメソッドなどのいくつかのメソッドを実装します。
Sparse vs Dense Optical Flow
Sparse optical flowは、フレーム内のいくつかの”興味深い特徴”(オブジェクトのエッジやコーナーを描いたいくつかのピクセル)のフローベクトルを与え、Dense optical flowは、フレーム全体(すべてのピクセル)のフローベクトルを与える。 あなたが推測したように、高密度の光学フローは、遅い/計算上高価であるというコストでより高い精度を持っています。p>
スパースオプティカルフローの実装
スパースオプティカルフローは、その速度ベクトル(動き)を追跡するために、ピクセルのスパースフィーチャセット(エッジやコーナーなどの興味深いフィーチャ)を選択します。 抽出されたフィーチャは、同じポイントが追跡されていることを確認するために、フレーム間でオプティカルフロー関数に渡されます。 Lucas–Kanade法、Horn–Schunck法、Buxton–Buxton法など、スパース光フローのさまざまな実装があります。 実装には、コンピュータビジョンアルゴリズムのオープンソースライブラリであるOpenCVでLucas-Kanadeメソッドを使用します。OpenCVがまだインストールされていない場合は、ターミナルを開いて次を実行します。
pip install opencv-python
ここで、次を実行してチュートリアルリポジトリをクローンします。
git clone https://github.com/chuanenlin/optical-flow.git
次に、Opencvを開きます。sparse-starter.py あなたのテキストエディタで。 このPythonファイルにすべてのコードを記述します。
ビデオを読み取るようにOpenCVを設定し、パラメータを設定する
Shi-Tomasi Corner Detector-追跡するピクセルを選択する
スパースオプティカルフローの実 画像の特徴は、豊富な画像コンテンツ情報を提示する関心のあるポイントです。 例えば、そのような特徴は、平行移動、スケール、回転、およびコーナーのような強度の変化に対して不変である画像内の点であってもよい。
Shi-Tomasiコーナー検出器は、次の三つの手順によって実装することができる一般的なHarrisコーナー検出器と非常によく似ています。
- \(x\)と\(y\)の両方の方向に翻訳されたときに大きな勾配(画像強度の変動)を持つウィンドウ(小さな画像パッチ)を決定する。
- 各ウィンドウについて、スコア\(R\)を計算します。
- \(R\)の値に応じて、各ウィンドウはフラット、エッジ、またはコーナーとして分類されます。あなたはハリスコーナー検出器のステップバイステップの数学的な説明の詳細を知りたい場合は、これらのスライドを通過すること自由に感じます。
ShiとTomasiは、後に追跡するために彼らの紙の良い機能でハリスコーナー検出器に小さいながらも効果的な変更を行いました。
変更は、スコア\(R\)が計算される式にあります。 Harris Corner検出器では、スコアリング関数は次のように与えられます:begin\開始{アレイ}{C}{R=\operatorname{det}M-K(\operatorname{トレース}M)begin{2}}\NEWLINE\{\operatorname{det}M=\ラムダ_{1}\ラムダ_{2}}\NEWLINE\{\operatorname{トレース}M=\ラムダ_{1}+\ラムダ_{2}}端\{アレイ}
/
代わりに、Shi-Tomasiはスコアリング関数を次のように提案しました。
r
r=\min\left(\lambda_{1}、\lambda_{2}\right)
basically
これは基本的に\(r\)がしきい値よりも大きい場合、それはコーナ 以下は、Harris(左)とShi-Tomasi(右)のスコアリング関数を\(σ1-σ2\)空間で比較したものです。
Shi-Tomasiの場合、\(φ1\)と\(φ2\)が最小しきい値\(φ min\)を超えている場合にのみ、コーナーとして分類されたウィンドウです。
OpenCVによるShi-Tomasiの実装のドキュメントgoodFeaturesToTrack()
ここにあります。
特定のオブジェクトの追跡
特定のオブジェクトのみを追跡するシナリオ(特定の人を追跡するなど)またはオブジェクトのカテゴリ(トラフ コードを簡単に変更して、必要なオブジェクトのピクセルを追跡するには、prev
変数を変更します。
オブジェクト検出とこのメソッドを組み合わせて、検出された境界ボックス内のピクセルの流れのみを推定することもできます。 この方法では、ビデオ内の特定のタイプ/カテゴリのすべてのオブジェクトを追跡することができます。
Lucas-Kanade:Sparse Optical Flow
LucasとKanadeは、ステレオビジョンへの応用と反復画像登録技術を論文の二つの連続したフレームを比較することによっ Lucas-Kanadeメソッドは、次の仮定の下で機能します:
- 二つの連続したフレームは、オブジェクトが大幅に変位しないように、小さな時間増分(\(dt\))で分離されています(言い換えれば、この方法は、動きの遅いオブジ
- フレームは、滑らかに変化するグレーの色合いを示すテクスチャオブジェクトを持つ”自然な”シーンを描いています。
まず、これらの仮定の下で、Shi-Tomasiによって検出された特徴の周りに小さな3×3の窓(近傍)を取り、9つの点すべてが同じ動きを持つと仮定p>