I3D Feature Extractionと実装についてまとめてみる

English:

medium.com

この記事は

大学の卒論のためにI3D特徴抽出(I3D feature extraction)を使う必要が出てきたのですが、とても情報が少ないようです。
英語でもあんまりないのに特に日本語だと解説している記事がないようだったので、自分なりにまとめてみようと思います。
この記事を読むと、I3Dとは何か?というのと、実装方法がざっくりわかるようになっています。

念のためですが、この記事はAI入門したてのいち学生がまとめたものなので、この記事に誤りが含まれていた場合に発生する不利益などの保証はできません。
あとAI入門したてなので極端にシンプルに解釈しています。正確な情報はオリジナル論文をチェックしてください。

記載に誤りがある場合、ぜひコメント等でご一報ください。スッとサイレント修正しまs🤯

I3D特徴抽出とは?

概要

Joao CarreiraとAndrew Zissermanによって2018年にCVPR*1で発表された、Quo Vadis, Action Recognition? A New Model and the Kinetics Datasetという論文が初出です。正式な名称はTwo-Stream Inflated 3D ConvNetとされています。

arxiv.org

要約すると、この論文では、Kineticsというビデオクリップデータセットを分類するタスクを実行するためにI3Dモデルを導入し、この論文発表時までに存在していた他のモデルに比べて高い精度での分類を達成しました。
内部の仕組みの話を少しすると、このモデルは2D ConvNetの膨張をベースにしています。深い画像分類ConvNetsのフィルタとプーリングカーネルが3D(幅、高さ、時間)に拡張されたことで、ビデオからの時空間特徴抽出ができるようになっています。

Kineticsデータセット

このデータセットは、人間が何らかの動作をするビデオクリップで構成されます。これらはYoutubeから収集されました。各クリップはそれぞれ約10秒です。
全部で400クラスあり、さらに一人称アクション(Person Actions(singular))と、人対人アクション(Person-Person Actions)の2カテゴリに分かれています。
それぞれのアクションの例としては、一人称アクションクラスは絵を描く、酒を飲む、笑う、パンチをするなどの動作で、人対人アクションはプレゼントを開ける、芝刈りをする、皿を洗うなどの動作です。

もうちょっと詳しいしくみ

イデア自体はとてもシンプルです。画像畳み込み(2D)アーキテクチャで高い精度を持つモデルのアーキテクチャーを3次元(幅・高さ・時間)に拡張させるだけです。
これによって、NxNのフィルターとプーリングカーネルNxNxNになります。
また、事前トレーニング済みのImageNetモデルのパラメーターをブートストラップすることで、2Dモデルのフィルターをそのまま使っています。ただ、この仕組みを活用するためには、トレーニング済みの2Dモデルで使っていた画像入力サイズ(つまりフレームのサイズ)をキープする必要があります。

2つのネットワーク

I3DはRGBとFlowの2つのネットワークを持っています。 RGBモードはその名の通り、ビデオのRGB入力から特徴を抽出して、純粋なフィードフォワード計算を行います。 FlowモードはオプティカルフローのFlowです。現在のフレームと前後のフレームを比較することで、ビデオの中で検出された差異=動き=特徴として抽出します。 これらは別々にトレーニングされているのでそれぞれ独立したモードとしても使えますが、組み合わせて使うことでより多くの特徴を抽出できます。

I3Dモデルを実装する

ここまで紹介した論文「Quo Vadis」の実装(本家)はこのリポジトリです。

github.com

本家リポジトリを使うことでもI3Dモデルの実装はできますが、OSSとして利用しやすい形にまとめられているリポジトリが2つあります。ユーザーが実際に利用する場合にはこのリポジトリを使うのが一番簡単だと思います。

github.com

github.com

Finspire13/pytorch-i3d-feature-extractionはI3Dについてググったときに一番上に出てきますし、StarやForkも多いのでこちらがベターそうにみえます。

また、僕は試していないのですが、GluonCV*2もI3D特徴抽出モジュールを持っています。サクッと試すならこちらのほうが簡単かもしれません。

cv.gluon.ai

おわりに

後からわかったことあったらまた直したりします。

*1:Computer Vision and Pattern Recognition。コンピューティング系で最も権威がある学会のひとつで、コンピュータービジョンだと間違いなくトップだそうです。ソースは僕の指導教員とWikipedia

*2:https://cv.gluon.ai/contents.html