取りあえず何か創る

ソフトウェアエンジニアだけど仕事以外でも何か作りたくなったので、主にその記録のためにブログを開設しました。

Can Spatiotemporal 3D CNNs Retrace the History of 2D CNNs and ImageNet?を読んだまとめ

0. この投稿の概要

  • 動画認識の機械学習モデル、3DCNNに関する論文"Can Spatiotemporal 3D CNNs Retrace the History of 2D CNNs and ImageNet?"を読んだので、その内容をまとめます。論文は以下のページから読めます。

arxiv.org

  • ディープラーニング、特に2D CNNの威力を世に示したのはImageNetという大規模画像データの認識コンテストかと思います。この論文では3D CNNがそのポテンシャルを発揮するにはやはり大規模な動画のデータセットが必要であり、Kineticsがその役割を果たすポテンシャルを持つことが示されています。

1. 論文の内容

目的

  • ImageNetにより層の深い(2D)ResNetが成功した歴史をKineticsと3D ResNetが同じ道を辿るか実験する。そのために行動認識タスクで3D ResNetの層を深くすればするほど性能が高まることを示す。
  • 動画のデータセットではHMDB-51とUCF-101が使われてきたが、より大きなActivityNetやKineticsが近年発表された。本論文ではこれらのデータセットを実験の対象にする。
  • 行動認識タスクのモデルとして、RGBとoptical flowをそれぞれ2D CNNの入力するTwo-Stream CNNがある。2つのStreamがそれぞれ空間、時間方向の特徴を抽出する。
    • より直接的にspatio-temporal特徴量を抽出するために3D CNNが提案された。VGGを3D化させたようなC3D、Inceptionの3D版であるI3D、更にResNetの3D版も提案されているが層は比較的浅いものに限られている。

実験

  • 実験にはResNetとその派生のモデルを使用した。各モデルのブロックは以下の図のような構成で、これを複数つなげることでResNetを構成する。

実験1
  • 各データセットで比較的浅いResNet-18を最初から学習する。Kineticsでのみ良い精度が得られるという過去の結果を再現する。
  • [結果]Kinetics以外のデータセットではvalidation lossとtraining lossで大きな乖離があり、オーバーフィットしていることがわかる。逆にKineticsではオーバーフィットは起きておらず、より深いResNetでも学習が可能なことが示唆されている。

実験2
  • KineticsでResNet-18~200を学習し、どこまで深いネットワークを学習できるか検証する。
  • [結果]層が深くなるほど精度は上がり、152層で飽和している。この傾向は2D CNNのよるImageNetの分類と同様。

  • 今回の最も良い結果はResNeXt-101だが、Two-stream I3Dの方が高い精度が出ている。
実験3
  • Kineticsで学習したモデルをHMDB-51やUCF-101でfine-tuningをする。これにより3D CNNでも転移学習が有効であることを示す。*最後のCNNブロックと全結合層のみ再学習している。
  • [結果]scratchで学習した場合に比べて明らかにfine-tuningした方が高い精度を持つ。Kineticsと同様に、深い層程精度がよくなり、ResNeXt-101が最も良い結果となった。


2. 感想

  • 自分も仕事で動画を入力とした機械学習の応用を検討しています。そこでネックになるのがデータの数です。本論文で示された転移学習が色々なタスクでも有効であれば是非とも使ってみたいです。
  • この論文の著者は日本人で、その方が以下の雑誌で動画認識技術の解説を書いています。動画認識技術の歴史やtransformerを使った最新のモデルまで説明されているのでおすすめです。

  • ありがたいことに著者のgithubにコードやpretrainモデルが公開されていますので、今度自分でも試してみようと思います。

github.com