研究室でコンピュータビジョン論文読み会をやってみた
【cvpaper.challenge2022: 4日目】
名古屋工業大学の玉木です.2020年10月に研究室を立ち上げたので,ゼミの一環としてコンピュータビジョン論文読み会をやっています.これはその試行錯誤の紹介です.
そもそも
関連研究が研究室の先輩の卒論や修論が1つか2つだけ,という修論や卒論を見かけることがあります.たしかに研究室で長年取り組んでいる研究をさらにすすめるために,後輩が先輩の先行研究を引き継いでさらに発展させるということは重要ですので,その場合には先輩の修論を参考文献にすることもあるかもしれません.
しかしそれは他の研究を全く知らないということを意味しています(すくなくとも修士論文という体裁においては).自分の関連する研究分野の近年の動向を知らないということは大学院生にとっては問題ですし,最新の研究をキャッチアップし続けるということはAI時代のエンジニアにとっても重要なスキルでしょう.そのためにも,自分の卒論・修論に直接的に関連している先輩の先行研究だけでなく,現在世の中で行われている研究を知り,その中における自分の卒論・修論の位置づけを知ることは,論文を執筆する上で必須事項です.
ということはこのアドベントカレンダーを見ているような方々にとっては当然なのですが,研究室に配属されたばかりの3年生・4年生はあまり知らないのです.そこで,ゼミとして論文読み会をやることにしました.
しかし,卒論を開始するタイミングが4年生秋頃からから「さあやってみよう」と言っても,論文を読むスキルも身につけなければならないし,かと言って研究自体のスキルもこれからなので,時期的に読み会を実施するのは大変です.
ところで,名工大の情報工学科には3年生後期に実践研究セミナーという必須科目があります.これは3年生後期に研究室に仮配属が行われ,そこでゼミを行うというものです.これを利用することにしました.
さあやってみよう,ではダメ
「じゃあ論文を読んでゼミで発表してもらうので,何でも良いから自分の興味のあるものを探して読んできてください」
...だめです.これでは学生は路頭に迷います.このアドベントカレンダーを見ているような方々にとっては当然のやり方は,初心者には通用しません.まず「そもそもなぜ論文を読むのか」というところから説明が必要です.(以下がその説明の概要です)
Google Scholarのトップページには,ニュートンの言葉が引用されています.これは,あの知の巨人であるニュートンさえそれまでの多数の研究者という巨人の肩の上に立って,さらに高みを目指していたということを示しています.最初は誰でもどの分野でも初心者ですが,その分野の誰が巨人なのか,何が巨人の功績なのか,それを知るところから研究が始まります.自分の分野の巨人を知り,その肩の上に立つことができるスキルを身につけ,可能であればさらにの肩の上から少しでも高みを目指すことが卒論であり修論なのです.
コンピュータビジョン分野であれば,巨人たちが集う大規模集会が最低でも年に2回はあります.それがトップカンファレンスと呼ばれる国際会議で,夏(6月)にアメリカで行われるCVPR,秋冬に隔年で交代で行われるICCVとECCVがあります.近年はオープンアクセスになっているので,だれでも自由に論文を入手することができます.
では1つのトップカンファレンスで何本くらい論文が発表されているのか? ゼミで学生に聞いてみると,50本,100本,200本,1000本? という答えが返ってきますが,実際には2022年の時点では2000本を超えます.そんなトップカンファレンスが年に2回(2022年はCVPR2022とECCV2022)あるとそれだけで年4000本の論文が発表されていることになります.実際には他にもNeurIPSやICML,ICLRなどにも重要な論文が多数発表されていますし,CVPRやICCVなどに併設する多数の(20から30の)ワークショップ,ACCVなどもフォローする必要があります.
2010年のPaper Gesutaltというジョーク論文では「2020年に投稿論文数は2000万を超える」という予測がでましたが,2022年現在では投稿件数が1万弱なので(CVPR2023も同様),あまり笑えない事態になっています.
さらに近年では正式発表前の論文をアーカイブするarXivなどのプレプリントサーバにも多くの重要な論文が投稿されています.日によって(また季節によって)増減しますが,コンピュータビジョン分野だけに限っても,多いときには1日200本以上の論文が公開されています.
2011年に東大の原田先生は「関連研究は50本以上読む必要がある」とおっしゃっていましたが,それから10年経って研究者はさらに多くの論文に目を通す必要に迫られています.実際,数年前にCVPRなどの論文ではReference(文献リスト)についてはページ制限がなくなったので,今は参考文献が100を超えるような論文も少なくありません.
こうなると個人ではコンピュータビジョン分野の研究をすべて追いかけるのは到底できません.そのために,産総研の片岡さんが2015年に立ち上げた「トップカンファレンス網羅的サーベイ」では皆で力を合わせて論文を読んで研究動向を把握しようとしていますし,コンピュータビジョン勉強会@関東でも論文を発表しあって理解するという勉強会が継続しています.
という状況の中で,卒論・修論のために論文を読んで,読み会を開催するという場合に心に留めておくべきことは3つ.
先輩の卒論修論だけでは視野が狭すぎる.トップカンファレンスの論文1本読んだというのでもダメ.関連する似たような研究論文をまとめて自分の知識にする必要がある.
年間1万本を超える論文がコンピュータビジョン分野で発表されているので,当然すごい論文もあればダメ論文もある.ダメ論文を数週間という時間をかけて読んでも研究時間の無駄になる.どれがすごいのか,巨人となるのか,自分の研究をすすめるための肩になるのか,を見定める能力を養う必要がある.
ゼミという閉じた空間の中だけに論文を読んで発表するという時間を使うことはもったいない.多数の聴衆を想定して論文を読み資料を作れば,他人の目という刺激が得られることで,スキルとクオリティが上がり,かつコミュニティという多数の人々に多少なりとも知識を供給できる.
というのが前置き
長くなりました.このような状況なので,「じゃあ論文を探してね」というのは最初は難しいのです.というより初心者には無理です.ですので,最初は読む論文を指定する,もしくは相談して良さそうな論文を推薦して読んでもらうことにしています.自分で論文を探してきてこれを読みます,と主体的に論文を発掘するのは,読み会を数回やってコツを掴んでからでもよいでしょう.
「じゃあこの論文をゼミで発表してもらうので,読んできてください」
....やっぱり無理です.どのように論文を読めばよいのか,という以下のような説明が必要になります.
論文の読み方1:タイトルページ
論文初心者が知らないことの一つが,1ページ目の情報の読み方です.知っている人にとっては「マジか」と思うのですが,以下の著者欄の読み方が最初は分からないという学生はいます.
説明しておくと,1行目はタイトル,その下2行は著者名,続く2行は所属名,一番下が著者のメールアドレスが正規表現で書いてあります.著者名の右肩についている番号は所属名の番号と対応しています(記号は脚注).
ちなみに,著者名は「first name(名)」「family name(姓)」の順に書いてあります.第1著者なら「Ze Liu」の「Ze」はfirst name,「Liu」はfamily nameです.日本人の例を出すと「Taro Yamada」です.ただし参考文献などで「Liu, Ze」とカンマ付きで書いてあれば,それは「family name, first name」の意味です.日本人の例なら「Yamada, Taro」です.(BiBTeXでは両方の表記を使うことができるので混乱する場合があります)
これを知らないと,あとでスライドを作成するときに致命的なミス(=恥ずかしい間違い)に繋がります.
論文の読み方2:アブストラクト+図+結果
論文を読むとき方法として一般的によく言われるのが,最初から順番に目を通していくのではなく,まずアブストラクトを読む,図を見る,結果を見る,という飛ばし読みです.
アブストラクトではこの論文が何の研究をしているのか,どのような問題を解決したのか,その手段とアイデアは何か,が書かれています.まずここを読んで論文の概略を把握します.
次に図に目を通します.近年のコンピュータビジョンの論文では深層学習モデルの図がたいてい掲載されていますし,タスクや画像例などが分かりやすく書かれています.特に論文1ページ目のタイトルすぐ下の右カラム上側にある図は,その論文を分かりやすく表しているはずなので,ここには注目します.
そして結果です.どのような結果が得られたのか,図や表が多数掲載されているはずです.コンピュータビジョンでは結果が画像という場合も多いので,結果画像を見れば面白いか,スゴイか,という直感的・主観的な判断ができます.
ここまでの情報で,自分で論文を探す場合には,論文を詳しく読むかどうかを判断します.面白くなさそう,自分が探している内容ではない,となれば,別の論文を探しに行くことになります.
論文の読み方3:全体構成
論文を詳しく読む場合には,全体構成を知っておく必要があります.つまり第1節はIntroduction,第2節はRelated Work(関連研究),第3節からはModelやMethodなど,その次の節はExperiments,最後の節はConclusions,という現在コンピュータビジョンの論文で標準的になっているテンプレート構造です(機械学習よりのNeurIPSやICMLの論文ではExperimentsの後にRelate workが来るものもあります).
Related workを知る必要がなければそこを読み飛ばしてもよいし,アブストラクトで全体像が理解できたのであればIntroductionを読み飛ばすこともできます.これを知っておかないと,肝心の手法やモデルの説明の部分をすぐに探すことができません.
全体の構成は論文毎に異なりますが,一般的なページ配分としては以下のようなものが多いです.これを知っておくと,どのあたりに何が書いてありそうか,という当たりをつけることができます.
上の図はIEEE 2カラムフォーマットで参考文献を除いて8ページという近年のCVPRの場合ですが,ECCVやACCVなどのSpringer LNCSフォーマットでも,変換すると大体おなじようなページ配分になります.
この配分を知っているのと知らないのとでは,論文に対する初見の印象が違います.知らない場合には「PDFで英語で11ページもある...」と最初から戦意喪失状態になります.しかし知っていると「最初4ページは序論・関連研究・手法で,次の4ページは実験,最後の3ページは無視してよし.読まなければならない手法のコアの部分は2ページ程度だな」と当たりをつけることができます.11ページ読むのと2ページ読むのとでは,心理的な負担はかなり違います.
PDF論文を読むツール
PDF書類をあまり読んだことがないという場合,ツールを知らずに困っている,という可能性があります.良いPDFビューアを知らないばかりに,WindowsデフォルトのEdgeでPDFファイルを開いて読んでいる.これでは論文を読んでも書き込みもメモ貼りもできないので,非常に効率が悪い.しかも効率が悪いと思っていないかもしれないし,効率が悪いことが悪いと思っていないかもしれません.
MacOSならデフォルトのプレビューが高性能です.WindowsならFoxitやAdobe readerという手もあります.iPadで書き込みをする場合にはPDF ExpertやGoodNotesが便利です.好みのviewerで使いやすければ何でもよいのですが,ツールを探したことがないという場合,この機会に探してみましょう.お互いにどんなツールを使っているのかという情報交換をすることもおすすめします.
文献管理ツール
読んだ論文のPDFファイルが増えてくると,どれがどれなのか分からなくなってしまうことがよくあります.ファイル名が適当な番号の場合もありますし,どこのフォルダに保存したのか忘れてしまうこともあります.その場合に活躍するのがmendeleyやzoteroなどの文献管理ツールです.(mendeleyやzoteroにはPDFビューアもついています)
PDFファイルは一括管理されてクラウドにも保存されますし,ファイル名は適切に変更されるので(内部的に...),混乱することも少なくなります.latexで論文を書くときにはbibtexエントリとしてコピーすることもできるのでかなり便利です.
これで論文が読めるか?
「じゃあこの論文の読み方を説明したので,読んできてください」
...そうは言っても論文を読むのが初めて,という場合には,一筋縄ではいきません.難解な内容を前にして挫折します.
そうならないように,以下のように取り組みます.
2人一組ペアになって1本の論文を読む.1人ずつ別々の論文を読まなければならないという状況よりは,相談できる相手・一緒に取り組む相手がいるだけで心理的にかなり変わります.
最初は1ヶ月で1本を目指す.4週間後を目標にして,最初の1週間でどこまで読むか,互いにどう分担するか,というタイムスケジュールを立てます.
わからないところ,理解できないところがあったら,ゼミで質問する.週1回のゼミなら説明は1週間後になりますが,ゼミ以外でも質問できるようにslackチャネルを用意したり,研究室の先輩に気軽に聞けるような機会を作っておきます.
翻訳ツールを使って良い?
英語論文は英語のまま読むほうがいい,という話は昔からありますが,DeepLやReadable,Google翻訳など,現代のツールを全く駆使しないというのも時代錯誤です.そもそも現代では辞書すら英辞郎やWeblioなどのようにクラウドベースになっていますので,紙の辞書を使うわけもなく,どこまでツールを使ったら英語のままにならなくなるのか....議論はさておき,初めて英語論文を読む学生には,翻訳ツールを積極的に使うことを推奨しています.
その理由は,翻訳して日本語にしてもやっぱり意味は分からないから,です.
英語だから分からない,というのは日本人学生にとって高い心理的ハードルであるというのはよく分かります.が,実際のところ分からないものは日本語に翻訳しても分からないのです.最先端の研究論文の難しい内容を理解しようとするために論文を読むのだから,日本語にしたところでその最先端の内容が理解できる訳がありません.日本語にして分かるのであれば日本語の数学専門書も哲学書も六法全書もスラスラ苦労せず理解できるはずなのです.
それを実感してもらうために,「まずは翻訳して日本語にしてみろ,それでも意味は分からないから」と言って,翻訳ツールを使わせてみます.
知の巨人の肩の上に立つスキルを身につけることが重要なので,原文のまま読むスキルも必要ですが,翻訳すれば「内容が」理解できるというならそのためにツールを駆使するスキルも重要でしょう.
ちなみに1年ほどすると論文を5−6本読むことになるので,ざっとななめ読みするために全体は翻訳,パラグラフを詳細に読む場合には英語,と使い分けられるようになれます.
スライド作成という難関
論文を読んだら,次は発表スライドの作成です.
「じゃあこの論文を読んだら,発表用の資料を作ってください」
授業でなにか発表用資料を作った経験はある学生は多いので,なにかしらスライドを作成することはできます.が,何もクオリティコントロールをしなければ適当なスライドが山のように出来上がるだけになってしまいます.
また,研究発表をした経験がない場合がほとんどですし,特に論文を読んでそれを紹介するという経験は皆無でしょう.ということで,どのようなスライド構成にしたらよいのか,そもそもどのような紹介をすればよいでしょうか.
スライドの作り方1:構成
いろいろな発表スタイルがありますが,ここでは10分程度で論文の内容を紹介するスライドを作るときのポイントを考えます.参考になるのはcvpaper.challengeのまとめかたでしょう.
つまり,論文を紹介するスライドでは
どんな内容か
従来研究との違い(新規性)は何か
手法の重要なアイデアは何か
どんな実験を行って有効性を示したか
などが伝わるように構成しましょう.これに厳密に従う必要はないのですが,これらのポイントに絞ると,伝わりやすいスライドが作れるはずです.
スライドの作り方2:テンプレート
グラフィカルなスライドの作り方をマスターしていれば別ですが,最初は真っ白なスライドを使うよりは,テンプレートを用意したほうが取り組みやすいです.
ということで,研究室共通のテンプレートを用意して,それを使うようにします.
フォントやレイアウトはテンプレートに従うとして,それ以外の約束事も以下のように決めておきます.
1ページ目:論文タイトル,全著者名+CVPR2022など学会・雑誌名(出典)に論文PDFページへのリンク,発表者氏名(研究室名),日付
論文から図や表をスクリーンショットでコピーして貼り付ける
数式も同様にスクリーンショットでOK(Officeの数式でも可)
関連研究について言及するときには引用リンクをつける(以下参照)
スライドの作り方3:引用方法とリンク
bibtexで論文を執筆する場合なら引用する箇所で\cite{}を使えばよいのですが,スライドはMicrosoft PowerPointを使って作成するので,自分で追加する必要があります.
スライドでの引用の仕方に一般的なルールはないのですが,よく使われるフォーマットがあるのでそれに従います.
[人物名,発表先,年]
人物名は以下のように,人数に応じて3種類.いずれもFamily nameを使用.
1名の場合:姓.例:[Feichtenhofer, CVPR2020]
2名の場合:姓&姓.例:[Wang&Deng, CVPR2020]
3名以上の場合:姓+.例:[Nagrani+, CVPR2020]
(注意:3人以上を意味するときには論文では"et al."を使うことが正式な方法です(日本語なら「佐藤ら」のように「ら」を使います).発表スライドで"+"を使うのは(ビジョン系の)発表スライドでの慣習です)
発表先
学会ならCVPRなどの略称
PAMIなど雑誌名も略称
arXivはそのまま使用
ただし,この業界でメジャーではない論文誌ならフルネームにする(めったにない).
引用を書く場所
上記のように関連研究を引用している場合
紹介論文以外から図を持ってきてスライドに挿入する場合
ただし紹介論文から持ってきた図には不要(そもそもその論文の紹介なので)
リンクを貼る
色々とリンクを探してくるのは大変です(まあそうは言ってもやるのですが).そのために,研究室で共通して引用するようなメジャーな論文にたいしては,そのリンクだけを集めたスライドを用意して使っています.スライド作成時には,ここから必要な部分をコピペするだけなので便利です.
スライドの作り方4:オンラインで共有して同時編集
ペアで論文を読むようにしているので,スライド作成もペアで行います.しかし別々のスライドをローカルで編集しては作業効率が落ちるので,Microsoft365の共有&同時編集機能を使いましょう.
まず1人がテンプレートから初期スライドを作成します.これをもう1人に対してOneDrive経由で編集可能として共有すれば,2人同時に作業を行えるようになります.
論文を読むときと同様に,一人では真っ白なスライドで手が止まってしまいますが,だれかと一緒に作業をすると,お互いの役割分担ができ,また作業の進捗も確認できます.コーディングにおけるペアプログラミングと似たような考え方ですね.
スライドの作り方5:レビュー
大学では教員が論文やスライドをチェックすることがよくありますが,企業ではコードのピアレビューが一般的です(たぶん).スライド作成でもピアレビューは効果的で,スライドがある程度出来上がりつつある時点で,他のペアのスライドを相互にレビューすることにします.
レビュー方法は,普通の対面の方法とコメントツールをつかったオンラインの方法の両方を使います.
対面なら,隣で作業しているペアのところへ出向いて行っていろいろと指摘をします.これは近くで少人数で作業している場合には便利です.
オンラインなら,Office機能のコメントを使います.こうすると,ピアレビューだけでなく,教員や研究室の上級生が同時にレビューに参加することができます.ただし「オンラインでレビューしておいてね」というだけでは,たいてい後回しになっていつまでもレビューされない,ということが起きます.そのため,研究室のゼミの一貫として「この時間は皆でゼミ室に集まってオンラインでレビュー」という作業時間を確保するほうがよいです.
では論文紹介をしてみよう
スライドができたら,論文紹介の発表会です.ここまでくると普通のスライド発表のノウハウと同じですので,省略します(発表練習とか話し方とかプロジェクタの使い方とかzoomやteamsのコツとか...)
発表会は研究室内のゼミ室,相手は上級生,10分発表+5分程度質疑,というのが一般的なスケジュールです.
以上を2回〜3回繰り返すと,論文紹介というのはどのようなものか,どのようにすればよいのかということが,だんだん分かってきます.最初のうちは1回1ヶ月程度かけて,2回〜3回を2〜3ヶ月かけて行いますが,なれてくると,1回1週間〜2週間程度でできるようになります.
connpasで論文読み会を設定してみよう
研究室内での論文紹介を何回かこなすと,論文をどこから探せばよいのか,どのような論文を紹介すればよいのか,ということが分かってきますし,スライド作成のノウハウもできてきます.
そうなったら,connpassでオンライン読み会をやってみましょう.いろいろな方が参加するので,発表するのは(最初は)かなり緊張するかもしれません,これも何回か経験するうちになれます.
発表時間は,学生の発表なので質疑込みで1件10分〜15分程度,合計で1時間にしています(実際には時間超過して1時間半程度になってしまっていますが).コンピュータビジョン勉強会@関東では1件の発表30分,6件から8件の発表で3-4時間という読み会が多いですが,あまり長くても参加する側も大変ですし,30分話すとなると発表する側も大変になってしまいます(学生にとって何が大変かというと,30分も話さなければならないという心理的な負担が一番たいへん).
発表時間帯は,いろいろな方(特に企業のエンジニア)が参加できるように,業務終了後の夕方17:00以降に設定することが多いです.土日祝日にやったほうが参加者は多いかもしれないとは思っているので,いつかやるかもしれません.
ちなみに告知はtwitter.毎回のオンライン参加者は10名ぐらいです(ご参加ありがとうございます).
実際に参加している学生は,というと
感想を聞いてみました.
...やらされている感のない優等生的なコメントありがとう.
おわりに
これまで試行錯誤してきたことを書き出してみましたが,試行錯誤はこれからもまだまだ続きます.うまいノウハウや効率的な方法などがあったらぜひ教えて下さい.
ちなみにcvpaper.challengeの研究効率化Tips ver.2にも,「論文の探し方」「論文検索ツールの使い方」「DeepLの使い方」などなど関連するTipsや,その他多数のノウハウが紹介されていますので,そちらもご覧ください.
#cvpaperchallenge
#ADVENT_CALENDAR_2022