このリポジトリには、Joao CarreiraとAndrew Zissermanによる「クオヴァディス、アクション認識?新しいモデル、運動学データセット」という論文に報告された訓練されたモデルが含まれています。この論文は2017年5月にARXIVに投稿され、CVPR 2017の会議論文として公開されます。
「Quo Vadis」は、ビデオ分類のための新しいアーキテクチャ、膨らんだ3DコンベネットまたはI3Dを導入しました。ここでは、運動学データセットトレーニングの分割でトレーニングされたInception-V1 I3Dモデルをリリースします。
私たちの論文では、これらのモデルを微調整することからUCF101およびHMDB51データセットに関する最先端の結果を報告しました。 CVPR 2017 Charades Challengeで最初に配置されたKineticsでの事前に訓練されたI3Dモデル。
リポジトリには、RGB入力を使用した事前に訓練されたチェックポイントが含まれており、Kinetics-600でゼロからトレーニングされています。
新規:私たちが使用したビデオの前処理は、Googleによってオープンソーリングされました。セットアップするには、GoogleのMediapipeリポジトリでこれらの指示を確認してください。
免責事項:これは公式のGoogle製品ではありません。
まず、Sonnetをインストールする手順に従ってください。
次に、このリポジトリを使用してクローンします
$ git clone https://github.com/deepmind/kinetics-i3d
使用してサンプルコードを実行します
$ python evaluate_sample.py
デフォルトフラグを使用すると、I3D 2ストリームモデルを構築し、事前に訓練されたI3DチェックポイントをTensorflowセッションにロードし、モデルを通してサンプルビデオを渡します。ビデオの例は、RGBとフローNumpyアレイが提供された前処理されています(詳細については、以下を参照)。
スクリプトは、ロジッツテンソルの標準と、モデルによって予測される可能性とロジット値で予測される上位20の運動学クラスを出力します。デフォルトのフラグを使用すると、出力は次の数値精度の違いに似ている必要があります。
Norm of logits: 138.468643
Top classes and probabilities
1.0 41.8137 playing cricket
1.49716e-09 21.494 hurling (sport)
3.84312e-10 20.1341 catching or throwing baseball
1.54923e-10 19.2256 catching or throwing softball
1.13602e-10 18.9154 hitting baseball
8.80112e-11 18.6601 playing tennis
2.44157e-11 17.3779 playing kickball
1.15319e-11 16.6278 playing squash or racquetball
6.13194e-12 15.9962 shooting goal (soccer)
4.39177e-12 15.6624 hammer throw
2.21341e-12 14.9772 golf putting
1.63072e-12 14.6717 throwing discus
1.54564e-12 14.6181 javelin throw
7.66915e-13 13.9173 pumping fist
5.19298e-13 13.5274 shot put
4.26817e-13 13.3313 celebrating
2.72057e-13 12.8809 applauding
1.8357e-13 12.4875 throwing ball
1.61348e-13 12.3585 dodgeball
1.13884e-13 12.0101 tap dancing
テストファイルは使用して実行できます
$ python i3d_test.py
これにより、モデルを正しく構築でき、正しい形状を生成できることが確認されます。
デフォルトモデルは、Imagenetおよびその後動態で事前に訓練されています。他のフラグでは、運動学でのみ事前に訓練されたモデルをロードし、RGBまたはフローストリームのみを選択することができます。スクリプトmulti_evaluate.sh
これらすべての組み合わせを実行する方法を示し、 out/
ディレクトリでサンプル出力を生成します。
ディレクトリdata/checkpoints
には、トレーニングされた4つのチェックポイントが含まれています。運動学の訓練を受けたばかりのものは、デフォルトのSonnet / Tensorflow初期化剤を使用して初期化されますが、Imagenetで事前に訓練されたものは、ペーパーで説明されているように、2D Inception-V1モデルから3Dにフィルターをブートストラップすることによって初期化されます。重要なことに、RGBとフローストリームは別々にトレーニングされ、それぞれがSoftMax分類損失を伴います。テスト時間中に、 evalute_sample.py
コードに示すように、ロジットを等しい重み付けで追加して2つのストリームを組み合わせます。
tf.train.SyncReplicasOptimizer
を使用して同期SGDを使用してトレーニングします。 RGBとフローストリームのそれぞれについて、4つのバックアップレプリカを備えた64のレプリカに集約します。トレーニング中に、0.5ドロップアウトを使用し、6のミニバッチサイズのバッチノームを適用します。使用されるオプティマイザーは0.9の運動量値を持つSGDで、1E-7重量減衰を使用します。 RGBおよびフローモデルは、それぞれ115Kおよび155Kステップでトレーニングされており、次の学習率スケジュールがあります。
RGB:
流れ:
これは、フローモデルが115Kステップの最初の実行後、より多くのトレーニングを必要とすると判断されたためです。
モデルは、速度論のトレーニング分割を使用してトレーニングされます。速度論テストセットでは、次のTOP-1 / TOP-5の精度を取得します。
モデル | Imagenet +速度論 | 速度論 |
---|---|---|
RGB-I3d | 71.1 / 89.3 | 68.4 / 88.0 |
Flow-I3d | 63.4 / 84.9 | 61.5 / 83.4 |
2ストリームI3D | 74.2 / 91.3 | 71.6 / 90.0 |
DeepMind Kinetics Datasetのリリースには、YouTube IDとクリップの開始時間と終了時間のみが含まれていました。ここのサンプルデータには、UCF101データセットのビデオを使用します。このビデオでは、すべてのビデオが完全に提供されています。使用されているビデオは、 v_CricketShot_g04_c01.mp4
で、ucf101ウェブサイトからダウンロードできます。
当社の前処理は、現在、GoogleのMediapipeリポジトリをオープンソースチェックしている内部ライブラリを使用しています。次のことを行います。両方のストリームについて、1秒あたり25フレームでフレームをサンプリングします。運動学の場合、提供された開始時間と終了時間にさらにビデオをクリップします。
RGBの場合、ビデオはサイズのサイズを変更し、最小の寸法が256ピクセルで、双線形補間があります。その後、ピクセル値は-1〜1の間で再スケーリングされます。トレーニング中に、224x224画像トリミングをランダムに選択し、テスト中にビデオからセンター224x224画像トリミングを選択します。したがって、提供された.npy
ファイルには、RGBの形状(1, num_frames, 224, 224, 3)
があり、バッチサイズ1に対応しています。
フローストリームの場合、1秒あたり25フレームでビデオをサンプリングした後、ビデオをGrayscaleに変換します。 OpenCVのこのコードと同様に、TV-L1光フローアルゴリズムを適用します。ピクセル値は範囲[-20、20]に切り捨てられ、-1から1の間で再スケーリングされます。最初の2つの出力寸法のみを使用し、RGBと同じ作物を適用します。したがって、提供された.npy
ファイルには、フローに対してshape (1, num_frames, 224, 224, 2)
があり、1のバッチサイズに対応しています。
ここに、提供された.npy
ファイルを示すGIFがあります。 RGBデータから1を追加してから2で割って0〜1の間で再スケーリングします。フローデータの3番目のチャネルをAll 0の3番目のチャネルを追加し、アレイ全体に0.5を追加して、結果も0から0との間になります。 1。
前処理の詳細については、これを確認するか、論文を参照するか、著者に連絡してください。
ブライアン・チャン、ジョアン・カレイラ、ヴィオリカ・パトラウエン、ディエゴ・デ・ラス・カサス、クロエ・ヒリアー、アンドリュー・ジッサーマンは、この最初のリリースの準備を支援しました。また、Kinetics Datasetの背後にあるチームと、このアーキテクチャとコードの基礎となる元のインセプションペーパーに感謝します。
このリポジトリに貢献するには、まず、Google Contributorライセンス契約(CLA)に署名する必要があります。現在、他の訓練されたモデルへの拡張を目指していないが、プルリクエストを受け入れることができるようになります。
質問がある場合は、「Quo Vadis」論文の著者に連絡してください。