TSN論文紹介

论文:時間セグメントネットワーク: 深い行動認識のグッドプラクティスに向けて

リンク: https://arxiv.org/abs/1608.00859 https://arxiv.org/abs/1608.00859

论文代码(Pytorch):GitHub - yjxiong/tsn-pytorch: PyTorch の時間セグメント ネットワーク (TSN) PyTorchの時間セグメント ネットワーク (TSN) 。GitHub でアカウントを作成して、yjxiong/tsn-pytorch の開発に貢献してください。https://github.com/yjxiong/tsn-pytorch

コードの解釈:

TSN アルゴリズムの PyTorch コード解釈 (トレーニング部分)_AI Road のブログ - CSDN ブログhttps://blog.csdn.net/u014380165/article/details/79058147 TSN アルゴリズムの PyTorch コード解釈 (テスト部分)_AI Road のブログ - CSDN blog_tsn アルゴリズムhttps://blog.csdn.net/u014380165/article/details/79058381

まとめ

Temporal Segment Networks (TSN) は、ビデオ内のアクション認識のためのフレームワークです。TSN は、セグメンテーション ベースのサンプリングおよび集計モジュールを通じて長距離の時間構造をモデル化し、アクション ビデオ全体を使用してアクション モデルを効率的に学習できるようにします。単純な平均プーリングとマルチスケール時間ウィンドウ統合を通じて、学習されたモデルは、それぞれトリミングされたビデオとトリミングされていないビデオのアクション認識に簡単に適応できます。論文読解はZhihuとCSDNの一部を参照しており、学習のみを目的としています。

この論文は、ビデオ内のアクション認識のための効果的な畳み込みネットワーク アーキテクチャを設計し、限られたトレーニング サンプルでモデル学習を実行することを目的としています。TSN は2 ストリーム法に基づいて構築されています

この論文の主な貢献は次のとおりです。

(1) 時間セグメント ネットワーク (TSN) ネットワーク モデルを提案します。

  • TSN サンプリングには、スパース性とグローバル性の特性があり、より長い間隔でフレーム間の時間依存性をモデル化して、ビデオ レベルの情報を確実に取得できます。
  • TSN には、空間情報を抽出するための双方向モデルと時間情報を抽出するための双方向モデルが含まれており、ポストフュージョン法に基づいて双方向モデルの結果を融合します。

(2) データ強化、正則化、クロスモーダル事前トレーニングなど、一連のベスト プラクティス ソリューションが提案されます。そして非常に良い結果を達成しました。

データセットのパフォーマンス: HMDB51 (69.4%)、UCF101 (94.2%)。

深いアクション認識のための 1 TSN

1.1 時間セグメントネットワーク

2 ストリーム畳み込みネットワークは、主に 1 つのフレーム (空間ネットワーク) または短いセグメント内の単一のフレームのスタック (時間ネットワーク) のみを操作するため、長い間隔の情報を学習するという問題を解決できません。ある方法で限定されます。ビデオレベルのフレームワーク TSN は、ビデオ全体からアクションをモデル化できます。

著者が提案するモデルは、2ストリームと同様に映像全体の特徴を抽出することを目的としており、画像次元の情報と時間次元の情報の2ストリームモデルである。作成者はビデオを複数のセグメントに均等に分割し、各セグメントがカテゴリ スコアを出力し、すべてのセグメントのスコアを結合して最終結果を取得し、これらのセグメントの「コンセンサス」からビデオ レベルの予測結果を取得します。学習プロセス中、セグメント レベルの予測の損失値ではなく、モデル パラメーターを繰り返し更新することでビデオ レベルの予測の損失値が最適化されます。

TSN ネットワーク構造を次の図に示します。

上の図の左側から、入力端の連続したビデオが K 個のセグメント (セグメント) に分割されていることがよくわかりますが、上の図では 3 つのセグメント (セグメント) に分割されています。対応するセグメントから分割され、ランダム サンプリングによって取得されます。フラグメントは、RGB フレーム、オプティカル フロー (高グレースケール画像)、RGB 差分 (低グレースケール画像) などのパターンで表されます。異なるクリップのカテゴリ スコアは、セグメント コンセンサス関数を使用して融合され、ビデオ レベルの予測であるセグメント コンセンサスが生成されます。次に、すべてのモードの予測が融合されて、最終的な予測結果が生成されます。

注: 以下の説明では、「フラグメント」は本文中の「スニペット」を指し、「セクション」は本文中の「セグメント」を指します。

具体的には、与えられたビデオを 等間隔の セグメント Vに分割します 次に、TSN はセグメントのシーケンスを次のようにモデル化します。K\左 \{ S_{1},S_{2},\cdot \cdot \cdot ,S_{K} \右 \}

で:

  • \left ( T_{1},T_{2},\cdot \cdot \cdot ,T_{K} \right ) フラグメントのシーケンスを表します。各フラグメントは、 T_{K} 対応するセグメントから S_{K} ランダムにサンプリングされます。
  • F(T_{K};W) この関数は、Wパラメータとして短いセグメントに作用する畳み込みネットワーク を表しT_{K}、 T_{K} すべてのカテゴリに対する相対的なスコアを返します。
  • セグメントコンセンサス G関数は、複数の短いセグメントのカテゴリスコア出力を組み合わせて、カテゴリ仮説に関するそれらの間のコンセンサスを取得します。
  • このコンセンサスに基づいて、予測関数は H ビデオ全体が各行動カテゴリに属する​​確率を予測します ( この記事ではSoftmax 関数H が選択されています)。

 標準的なカテゴリカルクロスエントロピー損失と組み合わせると、部分的合意の最終的な損失関数は次の G 形式になります。

このうち、C は行動カテゴリの総数、y_{i} は私 カテゴリのグラウンドトゥルース、 は実験のセグメント数ですK = 3この研究におけるコンセンサス関数は G最も単純な形式を採用しています。つまりG_{i} = g(F_{i}(T_{1}),\cdot \cdot \cdot ,F_{i}(T_{K})) 、集計関数を使用して、gすべてのフラグメントの同じカテゴリのスコアから特定のカテゴリ スコアを推測しますG_{i} 。集計関数は g一様平均法を用いて最終的な認識精度を表現します。

TSN は微分可能、または少なくとも準勾配であり、 g関数の選択によって決まります。著者らは、標準的な逆伝播アルゴリズムを使用して、複数のセグメントを使用してモデル パラメータを共同で最適化しますW 。W逆伝播プロセス中の、損失値に対する モデル パラメーターの勾配は次のように Lなります。

その中には、K TSN によって使用されるセグメントの数も含まれます。TSN は、短いクリップではなくビデオ全体からモデル パラメーターを学習します。一方、 K著者らは、すべてのビデオを修正することにより、サンプリングされたセグメントにフレームのごく一部のみが含まれる、まばらな時間サンプリング戦略を提案しています。このアプローチは、高密度にサンプリングされたフレームを使用する以前のアプローチと比較して、計算オーバーヘッドを大幅に削減します。

1.2 時間セグメントネットワークの学習

このパートでは主に、モデル学習におけるいくつかのベスト プラクティスについて説明します。

1.2.1 ネットワーク構造

いくつかの研究では、より深い構造によって物体認識パフォーマンスが向上することが示されています。ただし、2 ストリーム ネットワークは比較的浅いネットワーク構造 (ClarifaiNet) を使用します。この記事では、精度と効率のバランスが優れているため、BN-Inception (バッチ正規化によるインセプション) ビルディング ブロックを選択します。著者は、元の BN-Inception アーキテクチャを 2 ストリーム アーキテクチャに適応させ、元の 2 ストリーム ボリュームを作成します。空間フロー畳み込みネットワークは単一の RGB 画像上で動作し、時間フロー畳み込みネットワークは一連の連続オプティカル フロー フィールドを入力として受け取ります。

1.2.2 ネットワーク入力

TSN は、より多くの入力パターンを探索することで識別を改善します。2 ストリームのような 1 つの RGB 画像上で動作する空間フロー畳み込みネットワークに加えて、時間フロー畳み込みネットワークは、一連の連続オプティカル フロー フィールドを入力として受け取ります。著者らは、RGB 差分とワープ オプティカル フロー フィールドという 2 つの追加入力モードを提案してます。 。

単一の RGB 画像は特定の時点での静的な情報を表すため、コンテキスト情報が不足しています。上の図 2 に示すように、連続する 2 つのフレーム間の RGB の差は、動きの重要な領域に対応する動きの変化を表します。したがって、実験では別の入力モードとして RGB 差分ヒープを使用します。

TSN はオプティカル フロー フィールドを入力として受け取り、モーション情報のキャプチャに特化します。現実のビデオでは通常、カメラの動きが存在するため、オプティカル フロー フィールドは人間の行動を単純に反映するものではありません。上の図 2 に示すように、カメラの動きによりビデオの背景に多くの水平方向の動きがあります。iDT (改良された密な軌道) の研究に触発されて、著者は歪んだオプティカル フロー フィールドを追加の入力として使用することを提案しています。歪んだオプティカル フロー フィールドは、ホモグラフィー行列を推定し、カメラの動きを補償することによって抽出されます。上の図に示すように、歪んだオプティカル フロー フィールドによって背景の動きが抑制され、ビデオ内のキャラクターの動きに焦点を当てることができます。
 

1.2.3 ネットワークトレーニング

行動検出データセットは比較的小さいため、トレーニング中に過剰適合のリスクがあり、この問題を軽減するために、著者はいくつかのトレーニング戦略を設計しました。

(1) クロスモーダル事前トレーニング

空間ネットワークは RGB 画像を入力として受け取ります。したがって、ImageNet で事前トレーニングされたモデルが初期化に使用されます。他の入力モード (RGB 差分やオプティカル フロー フィールドなど) の場合、基本的にビデオ データのさまざまな視覚的側面がキャプチャされ、その分布は RGB 画像の分布とは異なります。著者は、RGB モデルを使用して時間ネットワークを初期化する、クロスモーダル事前トレーニング手法を提案しました。

まず、オプティカル フロー フィールドを線形変換により 0 ~ 255 の範囲に離散化し、オプティカル フロー フィールドの範囲を RGB 画像と同じにします。次に、オプティカル フロー フィールドの入力を処理するために、RGB モデルの最初の畳み込み層の重みが変更されます。具体的には、RGB チャネルの重みが平均され、この平均がタイム ネットワークに入力されるチャネルの数に基づいてコピーされます。この戦略は、時間ネットワークの過剰適合を軽減するのに非常に効果的です。
 

 (2) 正則化

Batch Normalization共変量シフトの問題を解決するために使用されます。学習プロセス中に、BN は各バッチの活性化平均と分散を推定し、それらを使用してこれらの活性化値を標準ガウス分布に変換します。この操作によりモデルの収束は速くなりますが、限られた数のトレーニング サンプルから活性化分布のオフセットを推定する必要があるため、過剰適合の問題も発生します。したがって、過学習の問題を解決するために、作成者は、事前トレーニング済みモデルで初期化した後、最初の正規化層を除くすべてのバッチ正規化層の平均パラメータと分散パラメータをフリーズします。オプティカルフローの分布はRGB画像の分布とは異なるため、最初の畳み込み層の活性化値も異なる分布を持つことになるため、部分部分BNと呼ばれる平均と分散を再推定する必要があります。同時に、オーバーフィッティングの影響をさらに軽減するために、BN-Inception のグローバル プーリング層の後に追加のドロップアウト層が追加されます。ドロップアウト率の設定: 空間フロー コンボリューション ネットワークは 0.8 に設定され、時間的フロー コンボリューション ネットワークは 0.7 に設定されます。

 (3) データの充実

データ拡張により、多様なトレーニング サンプルを生成し、深刻な過剰適合を防ぐことができます。従来の 2 ストリームでは、トレーニング サンプルを増やすためにランダム クロッピングと水平反転の方法が使用されます。著者は、コーナー クロッピングとスケール ジッタリングという2 つの新しい方法を使用しています。 

  • コーナートリミング: デフォルトで画像の中心に焦点が合わないよう、画像のコーナーまたは中心からのみ領域を抽出します。
  • スケール ジッタリング: 入力画像またはオプティカル フロー フィールドのサイズは固定されており256 \× 340、トリミング領域の幅と高さはそこ\左 \{ 256,224,192,168 \右 \} から。224\×224 最終的に、これらのトリミングされた領域は、ネットワーク トレーニング用にサイズ変更されます。実際、この方法にはスケール ディザリングだけでなく、アスペクト比ディザリングも含まれます。

1.2.4 時間セグメントネットワークのテスト

TSN のセグメントレベルの畳み込みネットワークはモデル パラメーターを共有するため、学習されたモデルはフレームごとに評価できます。具体的には、著者は 2 ストリームと同じテスト スキームを採用しています。つまり、アクション ビデオから 25 個の RGB フレームまたはオプティカル フロー スタックをサンプリングしています。同時に、畳み込みネットワークは、サンプリングされたフレームから 4 つの隅と 1 つの中心を切り取り、水平方向に反転することによって評価されます。

空間フロー ネットワークと時間フロー ネットワークは、加重平均を使用して融合されます。2 ストリームと比較して、TSN の空間フロー畳み込みネットワークと時間フロー畳み込みネットワーク間のパフォーマンスのギャップは大幅に減少します。これに基づいて、空間ストリームの重みを 1 に、時間ストリームの重みを 1.5 に設定します。通常のオプティカル フロー フィールドと歪んだオプティカル フロー フィールドの両方が使用される場合、重み 1.5 は、通常のオプティカル フロー フィールドの場合は 1、歪んだオプティカル フロー フィールドの場合は 0.5 に分割されます。

データセットと実装の詳細 

実験はアクション データセット HMDB51 と UCF101 で実行されます。UCF101には、合計101種類のアクションを含む13320本のアクションクリップビデオが収録されています。HMDB51 データセットは、映画やオンライン ビデオなどのさまざまなソースからの多数の現実のビデオのコレクションであり、51 のアクション カテゴリからの 6,766 個のビデオ クリップが含まれています。

この論文の著者は、ミニバッチ確率的勾配降下法アルゴリズムを使用して、ネットワーク パラメーター (batch_size = 256、momentum = 0.9) を学習しました。ImageNet で事前トレーニングされたモデルを使用してネットワークの重みを初期化します。実験では、学習率は小さく設定されました。空間ネットワークの場合は 0.01 に初期化され、2,000 回の反復ごとに 110110 に低下し、トレーニング プロセスは合計 4,500 回反復されました。時間ネットワークの場合は、 0.005 に初期化され、12,000 回目と 18,000 回目の反復でその後 110110 に減らされ、トレーニング プロセスは合計 20,000 回反復されました。

著者は、修正された Caffe および OpenMPI に実装されたマルチ GPU データ並列戦略を使用して、TVL1 オプティカル フロー アルゴリズムを使用して、通常のオプティカル フロー フィールドと歪んだオプティカル フロー フィールドを抽出します。

UCF101 トレーニング時間の合計 (8 つの TITANX GPU):

  • 宇宙TSN:約2時間
  • TSN 時間: 約 12 時間

さらなる研究

 上の図は、著者が 4 つの異なる解決策を実験した結果です。

(1) ゼロからトレーニングする。

(2) 空間ストリームのみを事前トレーニングします。

(3) クロス入力モードを使用した事前トレーニング。

(4) クロス入力モードの事前トレーニングと部分的な BN ドロップアウトの組み合わせ。

スクラッチからのトレーニングとベースライン (2 ストリーム畳み込みネットワーク) の間のパフォーマンスのギャップが大きいことを見つけるのは難しくありません。特に空間ネットワークの場合、オーバーフィッティング問題の影響を軽減するためにトレーニング戦略を再設計する必要があります。空間ネットワークの事前トレーニングとクロス入力モードでの時間ネットワークの事前トレーニングでは、ベースラインよりも良い結果が得られました。その後、トレーニング プロセス中に部分的な BN ドロップアウト組み合わせ法が使用され、認識精度が 92.0% に向上しました。

この論文では、RGB の差と歪んだオプティカル フロー フィールドという新しいモデルを提案しています。さまざまな入力に対応する具体的なパフォーマンスは次のとおりです。

上記からわかるように、RGB 画像 + RGB 差分により認識精度が 87.3% に向上し、2 つを単独で入力した場合の 84.5% および 83.8% よりも優れており、2 つを組み合わせた方がより多くの情報を取得できることがわかります。 。オプティカル フローと歪んだオプティカル フローのパフォーマンスの差はそれぞれ 87.2% と 86.9% と大きくなく、両者の融合効果は個別の効果より優れており、87.8% に達します。同時に、4 つのモードを組み合わせると 91.7% まで向上します。著者らは、オプティカル フローは動きの情報をよりよく捕捉できるが、RGB の差は動きの記述において不安定であると推測しています。一方、RGB 視差は、モーション表現の低品質かつ高速な代替手段として使用できます。

TSNの評価 

セグメント コンセンサス関数はその集計関数として定義され、ここでは その 3 つの形式gが評価されます 。g

(1) 最大プーリング。

(2) 平均プーリング。

(3) 加重平均。

具体的な実験結果を以下の図に示します。

平均プーリング関数が最も高い精度を達成し、次の実験では平均プーリングがデフォルトの集計関数として選択されました。次に、著者はさまざまなネットワーク アーキテクチャのパフォーマンスを比較する実験を実施しました。具体的な結果は次の図に示されています。

 これらのネットワーク アーキテクチャの中で、BN-Inception が最も優れたパフォーマンスを発揮するため、TSN の畳み込みネットワーク アーキテクチャとして選択され、同時に BN-Inception + TSN の精度は 93.5% と高いです。

さまざまな構造セットに対する、UCF101 データセットの実験結果は次のとおりです。

この論文の次の部分は抽出プロセスの視覚的分析ですが、ここでは詳しく説明しません。

最後に書きます

現在、次のブログに従って論文の具体的なコードを実装しています。Windows で実行すると多くの問題があります。Linux でも実行しました。実装プロセス中に多くのエラーが発生しました。主に Python のバージョンの問題です (私は使用しました)最新の 3.10、結果の要件は 3.9 よりも低いです...)、mmcv-full、mmaction2 パッケージのインストールの問題 (長い間ここで止まっており、バージョンがわかりにくいため、conda 仮想環境を使用してさまざまなパッケージを段階的にインストールし、最終的に解決されました)、git cloneの不完全なファイルの問題、セグメンテーションベースのファイルが見つからずダウンロードする必要がある問題、インポートバージョンに対応するコードの問題、などpytorch として作成されるため、コード部分を変更する必要があります。現時点ではコードは実行できますが、3 種類のアクションのみを学習させています。このまま長時間実行し、最終的にウェイト ファイルのロードでエラーが発生しました。長い間取り組んだ結果、ようやく実行できるようになりました。次のブログではいくつかの落とし穴を回避できますが、まだ完成していません。もうすぐ学校が始まります。後で時間があれば、これらのエラーを 1 つずつリストし、解決策を示し、CPU バージョンに関連するコードを添付します (CPU を使用せずに実行することは考えないでください)。TSN 実験プロセス_qq_39862223 のブログ - CSDN blog_tsn 空港https://blog.csdn.net/qq_39862223/article/details/108461526

pytorch1.8 が TSN の落とし穴記録を再現 (ソースコードの変更方法)_Oreo℡ でブログを開けない - CSDN blog_tsn がhttps://blog.csdn.net/weixin_44246079/article /details/115161214を再現

【行動認識論文の詳細解説】TSN(Temporal Segment Networks)_zhang_canのブログ - CSDN blog_tsn行動認識https://blog.csdn.net/zhang_can/article/details/79618781

おすすめ

転載: blog.csdn.net/Mr___WQ/article/details/126426882