艱苦学生はトップ研究者の夢を見るか?

筆者:綱島秀樹

早稲田大学森島研究室博士後期課程2年、産業技術総合研究所(産総研)でResearch Assistant(RA)をしている綱島秀樹です。

このAdvent Calendarでは、産総研RAになるまでの話から、産総研RAとしてのメルカリさんとの共同研究について書いていきます。産総研RAになるまでの話では、以前修士課程で所属していた大学院の工学院大学大学院での研究生活から産総研RAになるまでの経緯、また、cvpaper.challengeとの出会いにより大きく進路が変化したことについてを書き、おまけでcvpaper.challengeで1本目としてパブリッシュした論文についての話を書きます。メルカリさんとの共同研究については、共同研究開始当時苦労したエピソードから、今年の7月に開催された画像の認識・理解シンポジウム(MIRU2021)でのMIRU学生優秀賞(Student Best Paper Award)受賞するまでのストーリーを書いていきます。

前者の話は、学部や修士課程で現在の研究設備や予算等に悩みを感じている人には特に参考になるのではないかと思います。後者の話は、共同研究をこれから行う人、または共同研究をしているが進め方に四苦八苦している人などへの助けになるのではないかと思います。上記の対象読者だけでなく、この記事を是非皆様に楽しんで読んでいただければと思います。

産総研RAになるまで

計算資源やアドバイザー不足に悩んだ学部修士時代

私は学部、修士共に工学院大学という大学に所属していました。私が所属していた研究室では、古典的な画像処理(ルールベースなど)や機械学習による画像認識や人物検出などを行なっており、私が配属された年から深層学習に踏み込もうという流れでした。しかしながら、ここで問題になってくるのは計算資源深層学習に明るいアドバイザーです。

私が所属していた研究室では前述の通り、ルールベースでの画像認識や古典機械学習での物体検出などを行なっていたので、多大な計算資源(以下、GPUのことを指します)を必要とするような処理はありませんでした。それゆえ、私の代がB3で研究を始めたときには、研究室にTesla K40とGTX 1080Tiが1枚ずつのみという深層学習を始めるには絶望的状況でした。他にもGTX 680?あたりのGPUはいくつかありましたが、それでも複数人でGPUを奪い合うので、深層学習の研究をするにはかなり辛かった思い出があります。また、深層学習をうちの研究室でも始めようとなった年でもあったので、深層学習の技術に明るい人材が指導教員以外にいなかったということも結構辛かったです。指導教員も全ての分野の深層学習に詳しいわけではないので、自分で一から手探りということが山のようにありました。

私はその状況もあって、深層学習を研究している上に計算資源が潤沢にある研究室であった東大松尾研をB4のときに受けました。結果は筆記試験は通過したものの、面接で落ちてしまいました(ちなみに外部大学からの受験の倍率は例年約60倍〜90倍でした)。東京大学技術経営戦略学専攻の受験についてのあれこれは、もし希望があったりするようでしたら別のところでお話ししようかと思いますので、こちらでは割愛します。

結果的に修士は学部の時と同じ研究室に進学しましたが、計算資源とアドバイザーの件が解決したわけではありません。修士1年ではB4の頃に研究していた顔認証に関する研究からは離れてGAN(Generative Adversarial Networks:敵対的生成ネットワーク)の研究を始めました。計算資源についてはGoogle Colaboratory(以下、Colab)のサービスが開始されていて、GPUインスタンスが使用できるとなっていたので、Colabのほうを使用しながらなんとか研究していました。そして計算資源やアドバイザーについて悩んでいたときに出会ったのがcvppaer.challengeで、この時2018年10月(修士1年)でした。

cvpaper.challengeとの出会い、産総研RAに

修士1年の10月からどうにか情報収集ができないものかと、Twitterを始めて機械学習研究者を片っぱしからフォローしていました。ある程度フォローが増えてきたときに流れてきたのが、cvpaper.challenge主宰の片岡さんがcvpaper.challengeでサーベイ・研究メンバーを募集しているツイートでした。私は急いで片岡さんにメールを送り、後日面談を行いましたが、当時私は目立った論文も持ち合わせていなかったので、とにかく熱意でゴリ押ししたような覚えがあります笑。晴れて研究メンバーとなり、いざ研究テーマ探しということで、自身が苦しんでいたGANの計算コストをどうにか下げられないかということを考えました。サーベイを進めていくと、GANの計算量削減に関する論文が存在しないことを発見しました。そして、GANの計算コスト削減に取り組もうと思いました。この時、2018年12月(修士1年)でした。

GANの計算コスト削減の予備実験を行い始めたわけですが、計算コスト削減をするための研究をするためには、多大な計算資源で殴る必要があるということが問題になっていました。そこで、片岡さんに計算資源の問題を相談したところ、産総研のRAとして勤務して産総研の計算資源を利用するのが良いかもしれないという話になりました。そして、産総研の面接を受け、晴れて合格して産総研RAとして片岡さんの研究グループで研究を行うことになりました。この時、2019年6月(修士2年)でした。

産総研RAとして勤務を開始し、CVPR2020を目指してGANの計算コスト削減の研究を継続して行いました。私がCVPR2020へ投稿した手法は、「蒸留」という性能が高くモデルサイズが大きい「教師」モデルから、性能が低くモデルサイズ小さい「生徒」モデルになんらかの知識を転移させる手法に基づいたものです。具体的には、生徒のGANの学習に加えて教師と生徒の生成画像の判別を行うDiscriminatorを用意する「Adversarial Knowledge Distillation for a Compact Generator(AKDG)」を提案しました。
最初はCIFAR-10やリングガウシアン、グリッドガウシアンなどを用いたトイな実験を行い、生徒モデルの性能を向上させて着実に結果を出していきました。最初のトイな実験設定の結果は2019年9月開催のWebDB Forumという国内会議にて最優秀学生ポスター発表賞を受賞しました。まさか自分が小さい国内学会だとしてもトップの受賞をできるなんて思ってもみませんでした。このままCVPR2020に向けて、画像サイズが大きいデータセットにもスケールするかと思われましたが、そう簡単にはいきませんでした。

続いて実験を行ったデータセットは300万枚以上のベットルームの画像が含まれているLSUN bedroomでした。しかしながら、LSUN bedroomでは生徒モデル単体での学習はうまくいくのにもかかわらず、提案手法のAKDGを用いた場合のみうまくいかないという事態が発生しました。コードにいくら探してもバグはなく、この原因がさっぱりわからず途方にくれていたのですが、「GANはバッチサイズを上げれば性能があがることが多い」ということを思い出し、とりあえずバッチサイズを増やしてみることにしました。しかしながら、バッチサイズを増やすとプロセスがGPUのOut-of-Memoryで落っこちてしまうという問題がありました。そこで、当時はあまり知見が充実していなかったChainerを用いた分散学習(ChainerMN)に手をつけることにしました。ChainerMNを用いた分散学習は最初は困難を極め、様々なバグを踏み抜いていきましたが、おかげでかなり分散学習について詳しくなれました。ChainerMNを用いた分散学習についての記事があるので、もしよければ見たいただければと思います(ChainerMNに限らず、分散学習についても読んで楽しんでいただけると思います)。ChainerMNを用いてバッチサイズをどんどん増やしていき、1024でも提案手法のAKDGはうまくいかず途方に暮れていましたが、CVPR2020の投稿1週間前にやけになってバッチサイズ2048でやってみることにしました(16ノード64GPU)。すると、なんとバッチサイズ2048で提案手法のAKDGが効果を発揮したのです!なぜ上手くいったのかを分析するために、Discriminatorsの出力手前のembeddingをUMAPを用いて可視化を行いました。結果として、実画像と教師モデルの生成画像のプロット結果が全く重なっていない部分があり、小さいバッチサイズのときは重なっていない部分がサンプリングされることがありました。生徒モデルの学習が実画像には似せなくちゃいけないが、実画像に似せると教師モデルの生成画像から離れてしまうという相反した学習になり、プロットが重なっていない部分をサンプリングした際に実画像と教師の生成画像を判別するDiscriminatorのロスが爆発してmode collapse(GANの生成する分布が最頻値に集中してしまうという現象)が起きていました。この結果は論文中で言及しています。無事CVPR2020に投稿できたのですが、残念ながらRejectされてしまいました。トップカンファレンスに通すための論文を書いたのはその時が初めてだったので、連日徹夜に近い状態で作業していて死ぬかと思いました笑。今となってはいい思い出です。

その後、2020年4月末〆切のBMVC2020に投稿しようということになりました。しかしながら、年度始めということもあって産総研のスパコンのABCIを使うための予算がなく、追加のデータセット(e.g. ImageNet)の実験を行うことができなかったので、ライティングをよりわかりやすくすることで採択を狙おうということになりました(その時のままの実験量でも十分に提案手法の有効性は明らかにできると思っていたので、この方針で行こうとなりました)。BMVC2020の査読評価は悪くてRebuttalでどうにかできるスコアではなかったので、withdrawして再度指摘された貢献がわかりづらい点などを修正してICPR2020の2nd Roundに再投稿しました(ICPR2020では1st Roundと2nd Roundという制度が採用されており、1st Roundで採択されなかった論文はreviewの指摘された点を直して2nd Roundに投稿、または2nd Roundから投稿ということが可能でした)。ICPR2020投稿時にもBMVC2020までとは異なる新しい苦しい点がありました。CVPR2020に私の提案手法と非常によく似ているGANの敵対的蒸留の論文が採択されてしまったのです。そこで、CVPR2020のGANの計算量削減の論文とは異なる貢献の点について主張しました。自分とほとんど変わらない手法なのに、片やCVPR2020に採択なのでこの時は気が狂いそうでした。最終的には無事ICPR2020に採択という流れになりました。CVPR2020、BMVC2020、ICPR2020の時に共著の先生方の添削をしていただき、先生方の論文への鋭い着眼に感服しました(大学や大学院の授業を受けていた頃は何もわかっていませんでしたが、さすが先生となりました)。また、時系列は変わってしまいますが、GANの計算コスト削減の研究は2019年12月開催のISAT-18という国際会議でもExcellent Oral Paper Presentation Awardを受賞しました。小さい国際会議と言えど、受賞をできるなんて思ってもみなかったので、とても嬉しかった思い出があります(一応念のためですが、ISAT-18のほうはCVPR2020との内容が違うので、二重投稿には該当しません)。

少し話は変わってしまいますが、JASSOの第一種奨学金の返済免除の基準は大学によって様々だとは思います。工学院大学では研究会や国内学会で発表した数を増やす方が、国際会議や論文誌よりも返済免除のポイントを稼ぎやすい謎システムでした。他の大学でも研究会や国内会議での発表数が重視されることがあるかもしれないので、積極的に国内会議や研究会での発表をしたほうがいいです。

メルカリさんとの共同研究

共同研究の困難

2019年6月から産総研RAとして勤務しており、GANの計算コスト削減と並行してメルカリさんとの共同研究が始まりました。メルカリさんとの共同研究において、サービス「メルカリ」のデータを使いつつ、私のGANの知見を生かせる研究ができないかとサーベイを開始し、仮想試着(Virtual Try-on)が最適であると考えました。しかしながら、テーマが決まってからの研究の進め方の模索が鬼門でした。

修士の産総研RAは原則月7日の1日7時間45分勤務であり、7日の間で産総研に関連する研究を行わなくてはいけないということになります。ですが、研究というものの性質上、月の少ない勤務時間のみで進捗を生み出すことは非常に難しいです。私は研究所での勤務というものが初めてだったので、時間の効率的な使い方がさっぱりわかりませんでした。進捗が多く生まれない上、あまり多くの進捗を共有できないことが非常に苦痛でした。さらに、CVPR2020に投稿予定だった仮想試着の研究も見当違いの試行を行なっており、投稿に間に合わないという事態になって己の無力さに悔し泣きをして、精神的に非常に辛かった思い出があります。産総研の友人や片岡さんと相談していく中で、どういう項目で実験を行っていくか、どのように時間を使っていくかについてを決め、自分なりの工夫も加えていくことで段々と研究所での研究にも慣れていきました。簡単にまとめると、RAの研究と学校の研究のエフォート管理を工夫と、勤務外の時間に趣味として関連論文をいろいろ読んだというのが大きな点です。もっと細かい話は自分と会ったときの話のタネにしていただくか、直接聞いていただければと思います(勤務の関係上お話しできないこともあります)。うまく学校の研究とRAの研究のバランスが取れてきたのが、RAを開始してから半年後の2019年12月(修士2年)でした。

1本目の論文のパブリッシュ

1つ前のセクションでエフォート調整をすると書きましたが、エフォート調整はそんな簡単な話ではありませんでした。2020年12月から本格的に共同研究を開始して、2021年3月締め切りのECCV2020への投稿を目指していましたが、仮想試着は初めての分野ということもあって3ヶ月の間では結果は出せませんでした(実はECCV2020の締め切りが修士の卒業旅行と丸かぶりしていて、ヨーロッパで毎日実験をしていました笑)。

ECCVには投稿できませんでしたが、実験を継続して行い、2020年8月頃にSensorsというジャーナルに投稿して1本目の仮想試着の論文が無事採択されました。しかしながら、1本目の仮想試着の論文は技術として不完全なものであり、まだまだ改善の余地がありました。というのも、1本目の仮想試着の論文の図1の提案手法図を見ると、人の服の特徴を取り除くストリームがあり、こちらはtest時に使わないのにもかかわらず、学習の困難さを引き上げている要因でした(図では人の服の特徴を取り除くストリームはうまくいっておらず、恐らくズボンの特徴が誤って抜かれています)。その改善点を取り払ったのが、共同研究としては2本目の仮想試着の論文であり、MIRU2021でMIRU学生優秀賞を頂いた論文です。

MIRU2021での学生優秀賞獲得

Sensorsに採択された仮想試着の手法は2020年10月にパブリッシュされており、そこからメイン研究の方でCVPR2021は奮闘し、バーンアウトを経て12月から仮想試着の研究を再開しましたが、2ヶ月ほどはうまくいかない実験結果と格闘してました。MIRU2021の締め切りは2021年3月半ばであり、1ヶ月前まで結果が出ておらず、かなり焦っていました。2021年2月までは1本目の画像変換の手法をベースに手法のアップデートを図っていましたが、ある時突然「人の服の特徴を取り除くストリームが無駄なのでは?」という閃きのもと、服の特徴を人の上半身に挿入する手法「Lightning-fast Virtual Try-on(LiVIRT)」を開発しました。なんとこの閃いたLiVIRTが当たってかなり高品質な仮想試着を行えることが明らかになり、怒涛の勢いで実験を行い、3月半ばには論文が完成に至るまでになりました。LiVIRTの論文執筆の際にはメルカリさんの共同研究を一緒に行っているLamさんと荒瀬さん、産総研の同じ研究グループの笠井くんとかなり密なディスカッションを行い、有効性を明らかにするためのユーザースタディーの設計について詰めました。共著の方々は英語ネイティブなこともあって、僕では修正不可能な英語表現について添削していただき、感謝してもしきれなかったです。また、弊研究室のHCI研究のプロフェッショナルの粥川くんにもユーザースタディーの設計について指導していただき、僕一人では到底完成させることができない論文を仕上げることができました。

画像1

Sensorsに採択された仮想試着の手法から、人から服の特徴を取り除くストリームを消し去り、服の部分が欠損したところに服の特徴を挿入することで高品質ながらも、これまでの仮想試着の問題点であった服と人のペアデータが必要という問題点を解決しました。さらに、ニューラルネットワークのフォワードの計算速度も125枚/秒を超えており、State-of-the-Artの手法よりも3.6倍高速に動作します。2本目の論文は高速、高品質、ペアデータが不必要という三拍子揃った手法を提案しており、MIRU2021のロングオーラルセッションに採択されただけでなく、MIRU学生優秀賞(Student Best Paper Award)を受賞するに至りました。

おわりに

私が恵まれた環境からスタートしたわけではなく、利用できるものは全て利用するくらいの貪欲さで様々な勉強会に参加、コネクションを大切にしてきました。トップカンファレンスに投稿して採択を狙えるレベル(Accept寄りの査読結果が多かったが、ACレベルでReject判定となってしまった)まで、ある意味這い上がってきました。これは己の貪欲さだけでなく、巡り会えた方々のご助力無しにはここまでは来れませんでした。この場を借りて感謝の意を申し上げます。私から言えることは、「どんなに環境に恵まれてなくても、這い上がれる可能性はある」です。うちの研究室は計算資源が足りないなぁ、というならば産総研や理研などのRAのポストを探してみるというのも手だと思います。私はまだトップカンファレンスに採択されてない身なので偉そうなことは言えないのですが、どのような環境の研究者も楽しく力強い研究ができることを祈っています。

最後にcvpaper.challengeの研究グループについての宣伝です。私はcvpaper.challenge研究グループの中の「Generations」という生成モデル専門の研究グループのグループリーダーをしています。過去には2nd tier conferenceのICPRやACCVなどの採択実績があり、トップカンファレンスに向けて生成モデルの研究を行っていこうというグループです。私たちと一緒に研究したい!という方がいらっしゃいましたら、私か片岡さんまでご連絡をいただければと思います。私たちと生成モデル研究の世界トップを目指しましょう!

この記事が気に入ったらサポートをしてみませんか?