産総研&cvpaper.challengeに入ってからCVPRに論文が採択されるまで
筆者:原健翔
産総研で研究員をしている原健翔と申します.今回,アドベントカレンダーの記事として,cvpaper.challengeで取り組んだ研究が世に出るまでのストーリーを紹介するということで,CVPR2018で発表したCan Spatiotemporal 3D CNNs Retrace the History of 2D CNNs and ImageNet?という研究に取り組んでから採択されるまでの話を書いていきたいと思います.この研究は自分としては初めてトップ国際会議に採択された論文で,その後色々と皆様にコードを利用・論文を引用していただけたおかげで,GitHubのスター数3000+,論文の被引用数1000+に加えて,産総研の研究員としての採用に繋がったり産総研論文賞を受賞したりと高く評価していただけました.ここまでうまいこと進んだことは運の要素がだいぶ大きかったように思いますが,その辺りも含めて色々と書いていけたらと思います.ちょうど博士課程を修了し産総研でポスドクとして働き始めた時に着手した研究ですので,博士課程修了あたりの話から始めていきます.
博士課程の時期|2017年2~3月
自分は博士課程の頃から動画認識の研究に取り組んでいたのですが,その頃は深層学習ベースの手法には一切触れておらず,ハンドクラフト特徴量を利用した手法の研究をしていました.2015年頃から少しずつ動画認識の分野でも深層学習が流行り始めていたものの,当初はハンドクラフト特徴量の性能と大差なく,所属研究室の計算リソース的にも少し手を出しにくかったこともあり,まあまだ手を出さなくてもいいかな...という気持ちでいました.とはいえ博士課程を修了する2017年3月頃にもなるとだいぶ深層学習ベースの手法の性能が向上しており,さすがにそろそろ本腰を入れて自分も触っていかねばということで,博士論文関連の作業も落ち着いた2月後半くらいから少しずつ動き始めていきました.
ここで何から始めようかとなった時に,2017年の4月から産総研のポスドクとして働くことが決まっていたので,その時の受け入れ担当者でありcvpaper.challengeの主宰でもある片岡さんとも相談し,動画認識系のコンペであるActivityNet Challenge 2017に挑戦しつつ,深層学習ベースの動画認識を使えるようにしようということになりました.そこでまずは既存手法のどれかを触ってみようということで最初に目をつけたのが,C3Dです.C3Dは動画をXYT(縦横時間)の3次元空間として扱い,3次元の畳み込みを行う3D CNNで動画の特徴表現を獲得しようというものでした.当時,深層学習ベースの動画認識手法として主流だったアプローチはTwo-stream CNNという,RGB画像とOptical Flow画像に対してそれぞれ画像認識と同様の2D CNNを適用して動画を認識するものでした.なのでこっちを触ってみても良かったのですが,大量の動画に対するOptical Flowの計算はそれだけで結構時間がかかり大変ということがありました.それに対してC3Dは論文中でも計算速度の速さをアピールしており,とっかかりとしては触りやすくて良さそうという感覚で,C3Dを動かすところから始めてみました.C3DのコードはCaffeで実装されており,Caffeのビルドで沼にハマって泣きそうになっていた記憶もありますが,なんとか無事に動かせて基本的なところを理解することができました.その辺りで名古屋CV・PRML勉強会でC3Dを紹介した記録が残っていたりします.
とりあえずC3Dを動かすことができたので,ActivityNetのデータセットに対して適用できるように実装を進めていこうとしたのですが,Caffeは色々と辛そうだったのと,片岡さんがTorchを使っていたこともあり,ライブラリとしてはTorchを使ってC3DをActivityNetに適用できるよう実装を始めました.Torchのプログラミング言語はLuaでしたがLuaを触ったことはなかったので勉強しつつ,実装していきました.これまで馴染んでいたC++やPythonとは違いLuaは配列のインデックスが1から開始なので,何度もこれ関連のバグが発生してキレそうになっていた記憶もあります... この実装を進めている途中で博士課程修了となりました.
産総研入所直後〜ActivityNet Challenge挑戦|2017年4~7月
4月になって産総研に入り,最初は環境構築などでバタバタ(NVIDIAドライバのインストールでハマって泣いていた記憶が...)していましたが,それもひと段落し4月の後半にはActivityNetデータセットでC3Dを学習する実装がバグ取りも含めて完了し,色々と実験できるようになりました.最初は学習率などのハイパパラメータの調整を色々したり,過学習しているようだったのでData Augmentationを色々試したりと試行錯誤していました.色々試した結果として,ActivityNetのデータだけを使った学習では性能が低く,C3Dの著者が公開していたSports-1MでPretrainingしたモデルを使ってみるとだいぶ性能が改善するということがわかりました.Sports-1Mは1Mという名前の通り100万の動画を含んだデータセットなのですが,1動画1動画がかなり長く全動画をダウンロードすると大きすぎるので自分ではなかなかに触りにくいということもありどうしたものかなと悩んでいました.その間にひとまずネットワーク構造についてもC3Dのものだけでなく,別のものも試したいということで,ResNetの3D CNN版を実装してみるということをしていました.他にも,ActivityNet Challengeでは単純な動画の識別問題だけでなく開始・終了時刻を推定するTemporal Action Proposals/Localizationというタスクがあり,そちらにも挑戦しようとしていたため,それ用の実装を進めていました.
色々と実装を進めているうちに,5/19にKineticsという新しい動画データセットに関する論文が公開され,データもダウンロードできるようになりました.Kineticsデータセットを用いたAction RecognitionのタスクはActivityNet Challengeでも採用されることになっており,ずっとデータの公開を待っていたのですが,Challengeの締め切りまで2ヶ月を切りようやく...という感じでしたね.Kineticsの論文にはC3Dを使った実験の結果も載っていたのですが,それを見るとKineticsでC3DをPretrainingすることでスクラッチ学習よりも大きく性能が向上するということがわかりました.それを見て,これを使えばSports-1Mをがんばって使おうとしなくても良いじゃん!!ってことで早速Kineticsを使う準備を進めていきました.
6月からはKineticsでの実験を進めつつ,ResNetの3D CNN版の実装・実験を進めつつ,Temporal Action Proposalsタスク用の実装・実験を進めつつ...という形で色々と並行しながら進めていました.新しいデータ・モデルを使うということで案の定データの扱い周りでバグにハマり,パラメータ調整などで沼にハマり,新しいタスクの実装ではまたバグにハマりと色々と苦戦していましたが,7月にはある程度形になり,3D ResNet-34のKineticsでの学習に成功しSports-1M pretrained C3Dよりも高い性能が出るようになり,Temporal Action Proposalsもなんとかまともに結果が出せるところまで漕ぎ着け,7/14にActivityNet Challengeに結果を投稿,無事にリーダーボードに結果を載せることができました.Challengeの結果としてはKineticsデータセットを用いたAction Recognitionのタスクで16チーム中12位,Temporal Action Proposalsのタスクで10チーム中6位という形になりました.良い成績というわけではありませんでしたが,深層学習を用いた動画認識を勉強して知見を貯めるという当初の目的は十分に達成できたと思うので,良い挑戦だったのではないかと感じています.
ここまでで取り組んだ成果で一つ論文を出しておきたいとなったので,ResNetの3D CNN版がまだ論文として発表されてはいなかったこともあり,それを3D ResNetと名付けてKineticsでの学習の実験結果を論文にまとめようということになりました.投稿先はちょうど8月の半ばにICCV Workshopの締め切りがあったのでちょうど良いだろうということで決定.その後7月末にはCVPR(@ハワイ!!)に参加し,CVPRは初参加だったので規模の大きさに驚きつつも本会議の様々な論文の発表やActivityNet Challengeの上位チームの発表を聞いて楽しみました.(ハワイも楽しかったです.)
ICCV Workshopへの投稿〜CVPR投稿に向けた実験準備|2017年8~9月
CVPRが終わって帰国してからICCV Workshopに投稿する論文の執筆を進めていきました.途中8月頭にはMIRUにも参加していたので合間合間で執筆を続けてなんとか締切に間に合わせて投稿し,結果無事に採択されました(投稿から結果が出るまで1週間ちょっとというスケジュール).採択されてからはコードを公開するための準備をしつつ,次のCVPRへの投稿を目標にして実験の準備を進めました.CVPRに投稿する具体的な研究のストーリーは固まっていなかったものの,一つの方向性としてはActivityNet Challengeで取り組んだTemporal Action Proposalsに関する手法の改善を考えていました.とはいえ詳細なアイディアがあったわけではないので,いずれにしてもバックエンドのネットワークを良いものにして損はないだろうということもあり,ひとまずKineticsデータセットを使って様々な3D CNNのモデルを学習する実験を色々と回しながら考えを進めていこうと決めました.また,Kineticsでの学習は一回一回がかなり時間のかかる(2~3週間とか)ものだったので,実装や実験環境を見直す作業をこのタイミングで行いました.具体的にはTorchからPyTorchに移行したのと,産総研のスパコンであるAAICを利用できるようにしました.TorchからPyTorchに移行したおかげで学習がだいぶ速くなり(1週間程度,今の実装だと3日くらいで終わるものの何を変えたのか記憶になく...),またAAICを使えるようになったおかげで並列して複数の実験を回せるようになったのが後々で効いてきたと思うので,このタイミングで作業しておいてよかったなと思います.そんなこんなで8月は終わっていきました.
9月に入ってPyTorch実装でAAICを使った学習を回せるようになり,まずは3D ResNet-50, 101, 152, 200といった,より深いモデルの学習を試したり,ResNetの亜種であるPre-activation ResNet,Wide ResNet,ResNeXtや,ちょうどCVPR2017でBest Paper Awardを取ったDenseNetの3D CNN版を学習してみたりといった実験をしていきました.これらの実験結果が少しずつ揃ってくるにつれて,ImageNetでの2D CNNの学習と同じような結果(ResNetで層を増やすほど精度が向上,ResNet-152で頭打ち,など)がKineticsでの3D CNNの学習結果でも見られることに気付きました.これまで画像データセットと比べて動画データセットは小規模で,深層3D CNNの学習は難しいというのがこの分野の認識だったのですが,今回の実験結果はKineticsの登場によって状況が大きく変わりつつあるということを示唆するもので,この知見はかなり面白いんじゃないかと思うようになりました.この辺りで共著者の片岡さんや佐藤さんとも議論し,Kineticsデータセットは動画認識でのImageNetになり得るのか,というような方向性でCVPRに論文を投稿することを決めました.
CVPR投稿への追い込み|2017年10~11月
CVPR投稿の方向性も決まり,10月に入ってからはゴリゴリと実験を回していきました.各モデルの学習と並行してハイパパラメータの調整や細かい部分の実装の調整などでなるべく精度を上げられるようにせっせと実験を回しつつ,同時に論文の執筆も結果の部分から少しずつ進めていきました.わかりやすく提案手法があるような論文ではないのでライティングがかなり大事そうだったこともあり,イントロ部分の執筆も早めに進めて詰めていきたいと思いつつも,なかなか筆が進まずとりあえず書きやすそうなところを書いたり図を作ったり,実験を進めたり,他の参考になりそうな論文を読んで勉強したりということをしているうちに10月も半ばというところまで来てしまっていました... 他にもICCV Workshopで発表するポスターを作ったり別件の研究のことをやる必要があったりで時間を取られつつもなんとか少しずつ実験と執筆を進めていきました.10月の後半に差し掛かるとICCV参加のための海外出張もあり,出張中に色々実験を回しておかないとと思い出張直前にせっせと準備をしてスパコン (AAIC) でジョブを投げてから出発したのですが,移動中飛行機の乗り換えの待ち時間でメールをチェックしていたら「AAIC全体障害のお知らせ」というメールが届いており,嘘でしょ!?!?と叫び声をあげるという事件(帰国後に確認したところ出張前に投げたジョブは全部死んでました)もありました... 絶望を感じつつも,ICCV参加の合間合間で論文執筆を進めたり一緒に参加していた片岡さんと時間を取って議論したりとなんとか作業を進めていきました.
ICCVも終わり11月に入ったあたりで一通り原稿も書けてきて,一旦英文校正に出して原稿の修正を繰り返しながら校正結果が帰ってくるのを待っていました.この時は片岡さんと,当時産総研RAだった鈴木智之くんがそれぞれ別の論文でCVPR投稿を目指していたので,お互いの論文をチェックし合いながら一緒に議論しつつ執筆しつつという形で進めていたのが印象深く記憶に残っています.締め切りギリギリまで実験の修正・やり直しや論文修正を繰り返しブラッシュアップしていき,締め切り直前にも細かい表現のミスを見つけたりして慌ててアップロードし直すようなこともありつつ,なんとか無事に投稿することができました.博士課程の頃からCVPRのようなトップ国際会議に挑戦したいと思いつつもうまく研究のスケジュールを合わせて投稿するということが結局できていませんでしたが,この時無事に投稿するということができたのは,産総研&cvpaper.challengeに入り,周囲と合わせてCVPRを目標にして研究を進めていけたということが大きかったなと感じています.
CVPRの査読結果とRebuttal~CVPR採択まで|2018年1~2月
CVPR投稿から間が空き,arXivに論文を公開したり,コードや学習済みモデルをGitHubで公開したり,ICPRに論文を投稿したりしながらCVPRの査読結果が来るのを待っていました.1月も後半になったところでついに査読結果が来まして,産総研の居室で片岡さんやRAの鈴木くんと一緒になってそれぞれの論文の査読結果を順に見ていくということをしました.結果としては(この時のCVPRはOral, Oral/Poster, Poster, Borderline, Weak Reject, Strong Rejectの6段階,間違ってるかも?),1人目がWeak Rejectで(見た瞬間にウッ...となりました...),2人目がPoster(これを見て少しだけ気持ちが持ち直し...),3人目がBorderline(最後のこれでまたウッ...)となっており,総合的にはちょうど±0で首の皮一枚で採択の可能性が残ったような状態でした.論文としての完成度はある程度高められたと思っていたので,これでも結果は厳しい...と正直半ば諦めの方向に気持ちが向かってしまっていましたが,辛い気持ちを耐えつつなんとか査読コメントを読み込んでRebuttalを書いていきました.1人目のWeak Rejectと3人目のBorderlineという結果をなんとか上げることができれば採択の可能性があるということで,基本的はその2人の指摘を覆せるようにRebuttalをしたいところです.2人のコメントで一番大きそうなところは,実験量は十分で役に立つ知見はありそうだけど層を深くすれば精度が良くなることは(画像認識の過去の論文で)わかってるし目新しい知見が少なくて貢献が小さい,というようなものでした.この点について,画像認識でわかっていたからといって動画認識でも同じような結果が出るかどうかは自明ではないし,これまでデータセットの規模が小さいと思われていた動画認識という分野でついに十分な規模を持つデータセットが出てきたことを示せたのは分野にとって非常に重要な貢献だということを強く主張する形でRebuttalしました.後はうまくいくと信じるのみ...
Rebuttalを提出してから1ヶ月経ち,ついに最終的な結果が出る時が来ました.最初は採択された論文のPaper IDのリストのみが公開されましたが,そこに自分のIDを見つけたときには(確か自宅にいたので)踊り出すほど嬉しかった記憶があります.最終的な査読コメントや評価を見ると,ちょうど思惑通り,1人目がWeak Reject -> Borderline,3人目の評価がBorderline -> Posterと1つずつ上がり,Borderline, Poster, PosterでPoster発表での採択となりました.Rebuttalでこちらの主張に理解を示してくれる査読者に当たったことに強く感謝です.というわけで,CVPRに採択されるまではこのような形でした.
その後
最初にも書きましたが,ありがたいことにこの論文のGitHubレポジトリはどんどんスター数が伸びていき,それに伴って論文自体の被引用数もいまだに伸びているということで,コードを使ってくださった&論文を読んでくださった方々に感謝感謝です.正直ここまで伸びるとは思っていませんでしたが,動画認識系のPyTorch実装があまり多くない中で早い段階で公開できたこと(PyTorchの開発者の方がスターを付けてくれたのも大きく,その直後に結構スター数が伸びた)や,ちょうどKineticsという今では動画認識分野の代表的なデータセットとなったもので様々なモデルの結果をいち早くまとめて出せたことなんかも大きかったかなと思います.ちょうど3D CNNに手を出したらそれを学習するのに適したデータセットが公開されて,色々実験をしていたら面白そうな結果が出てきて,最終的に査読者はこっちの意見をちゃんと聞いてくれて,と運の要素が大きかったとは感じていますが,良い成果になってくれてよかったです.
おわりに
本記事では,1つの研究を始めてCVPRに採択されるまでの話を書いてきました.ある論文の採択までの流れのサンプルとしてどなたかの参考になりましたら嬉しいです.cvpaper.challengeではこの論文の後もvideorecogグループとして動画認識関連の研究を引き続き進めており,一緒に研究を進める研究メンバーも募集中です.興味のある方がいましたらお声がけいただけると嬉しいです.
videorecogグループのPublications
S. Kasai et al., "Retrieving and Highlighting Action with Spatiotemporal Reference", ICIP 2020.
H. Kataoka et al., "Would Mega-scale Datasets Further Enhance Spatiotemporal 3D CNNs?", arXiv 2020.
この記事が気に入ったらサポートをしてみませんか?