点群関連書籍執筆の話と,毎日やるという話
この投稿は「研究コミュニティ cvpaper.challenge 〜CV 分野の今を映し,トレンドを創り出す〜 Advent Calendar 2022」 の23日目の投稿です.
要約
点群本と点群記事を書きました,点群深層学習楽しいので興味持ってもらえれば.
点群本執筆の反省等から,コツコツタスク対策として「毎日やる」ってどうでしょうか,と考えています.
点群記事については「毎日やる」が効きました.
より良い方法やアドバイス,大歓迎です.
自己紹介
千葉直也と申します.
今は早稲田大学 尾形研究室とオムロンサイニックエックス株式会社で週数日ずつポスドクをしています.主な研究の興味は3Dデータ処理で,特に点群データ・Neural Field周りの技術をもとにロボットビジョン応用,材料科学への応用をしています.このアドカレで流行っている16PersonalitiesはENTJでした.
こういう記事を書くのは不慣れなので,読み苦しい点などあればすみません.気楽に読んでいただけたらと思います.
書籍執筆の話について,ご興味あればこれらの本を手にとっていただけたらもちろん嬉しいですが,この投稿自体はそれほど宣伝を意図していないのでぜひ差っ引いて読んでください.また,執筆の話を書くために色々と思い出すにつき,共著者各位と関係者各位のおかげで出版できたのだなぁとつくづく感じます.皆さまに改めて御礼申し上げます.
点群関連書籍執筆の話
さて,自分にとって今年2022年は点群関連書籍執筆・出版の年でした.
詳解 3次元点群処理(以降,点群本),2022/10/05発売
金崎先生,秋月先生との共著です.主に第6章「深層学習による3次元点群処理」とほかちらほら担当しました.
コンピュータビジョン最前線 Winter 2022(以降,点群記事),2022/12/12発売
チュートリアル記事である「ニュウモン点群深層学習」を担当しました.
いずれも三次元点群をニューラルネットワークで取り扱うための手法に関するパートを担当しています.
点群本
点群本は三次元点群を取り扱うための入門書として,データ形式や代表的なアルゴリズム,深層学習を用いた点群データ処理の話題までをまとめた書籍となることを目指した書籍です.点群データを触り始める方~中級くらいを想定して執筆されています(と思っています).単に点群の話をつらつらと書くのではなく,できるだけすべての解説にコードをつけることで手を動かして学べるような書籍となるよう意図しています.
特にレジストレーション周りは点群処理における重要技術(金崎先生の言葉を借りると「点群処理の花形」)であり,詳細かつわかりやすく秋月先生に解説頂いています.
私は2020年6月に金崎先生からお誘いいただき,深層学習周りの話を主にということで執筆に参加させていただきました.自分のパートは,特にPointNetの実装を通じて,深層学習による点群処理のコアアイデアを確実にわかる(そして実装できるようになる)ことを目指した構成となっています.本文中でも繰り返し述べていますが,Shared MLPとGlobal Poolingによって点群のようなirregularな(順不同・非グリッドな)データ構造を処理することのできるネットワークが構成できる,という説明をコード付きで行っています.
さらに自分の趣味もあり,畳み込み周りの記載をちゃんと整理しようという方向でまとめられています.今読むと若干整理しきれていない部分もありますが,解説と実装を通して点群畳み込みの考え方を学ぶためにはある程度役立つのではないかな,と思っています.
内容以外の特徴として,PyTorch Geometricを用いた実装を提供しています.点群深層学習の黎明期には様々なライブラリでそれぞれ独自に(場合によってはCUDA Extensionsを自分で書いて)実装していましたが,最近は徐々にライブラリが整理されつつあります.この書籍では割とよく用いられているPyTorch Geometricの使い方の紹介もちゃんと行うことを意識していますので,参考になれば嬉しいです.
ちなみに,この本の執筆のお誘いを頂いた金崎先生からのメールに当初気づかず,TwitterのDMでご連絡してもらって気づくことができたという大変お恥ずかしい経緯があったりします.(その節は失礼しました・・・.)
点群本の執筆時に筆があまりに遅くご迷惑をおかけしてしまったという反省を,下記の点群記事の執筆に活かそうとした話が今日の本題です.
点群記事
点群記事はCVIMでのチュートリアル講演 → コンピュータビジョン最前線でチュートリアル記事を担当するというプログラム(?)で担当させていただきました.こちらのプログラムは初回から素晴らしい講演と記事が続いていたので,オファーを頂けて嬉しかったと同時にとてもプレッシャーだったのを覚えています.
自分の場合も,まず5月のCVIM研究会でチュートリアル講演をさせていただき,その後内容をブラッシュアップした解説記事として点群記事を執筆しました.ありがたいことにこの発表の際も多くのフィードバックをいただくことができ(質疑・コメント頂いた皆さまありがとうございます),だいぶ揉まれた上で,ある程度は原稿にも反映させることができたのではないかと思っています.
点群記事では点群本でまとめたコアアイデアに加え,改めて整理し直した点群畳み込みの解説にも重点を置いています.さらにコンピュータビジョンに慣れた読者も多いと想定されるため,後半の研究事例では自分が調査した範囲の知識をできるだけたくさん入れることを目指しました.(結果として大幅にページ数オーバーをしてしまい,関係各位にはご迷惑をおかけしました・・・).個人的には点群畳み込み周りの導入と関連する話題との接続が気に入っているポイントなので,お買い上げ頂いた際は読んでみていただけたら嬉しいです.
こちらは締め切りが明確だったことと点群本での反省から,後述する毎日執筆スタイルを採用してスケジュールを守ることができました.
毎日やるという話
さて,ここからは研究の話ではなくライフハック的な(研究効率化Tips的な?)話です.したがって人によって合う合わないが激しいと思いますので,読まれた方にとってもし役立ちそうであればそのときは参考にしてください.
何を問題としているか
点群本でなぜ執筆が遅れてしまったかというと,遠くの締め切りに対して具体的な計画を立てられなかったからです.研究における流れ(試行錯誤して知見を得て論文化)とは異なり,やれば終わる(そして早く始めて早く終わらせれば,その分推敲などができてクオリティも上がるはず)というタスク(以降,コツコツタスク)は,やる気ドリブンではなかなか太刀打ちできません.意思の強い人はできるのかもしれませんが,私は目の前の実装やら実験やらに時間を持っていかれてしまいました.そして今日も着手できなかったとザラついた気分で一日一日が過ぎるわけです,これはつらい.
こういう経験をしている人は案外多いのではないかと感じています.書籍執筆だけでなく例えば卒修論や(重たい)申請書作成,サーベイなども,ちょっとずつ進めなきゃいけない(数日の集中力でウワッと終わるタイプではない)ので,コツコツタスクかと思います.
ちなみにコツコツタスクが得意/克服できたという方がいたら,どうやったらいいのかぜひ教えてください.この記事ではに自分の今のところの解決策提案を書いておきますが,この方針で本当に正しいのでしょうか・・・.
追記:片岡さんから →解決したわけではないですが、最近実践してある程度効果あった話をpptにて共有します。毎日やる、というわけではなくなるはやで一気に進める、あとは少しずつフィニッシュに向かうという感じです。 というコメントを頂きました.近く研究効率化Tipsの更新版で公開されそうなので,ぜひチェックしてみてください.ロケットスタート仕事術を利用するそうです.頂いた資料中の自分に合ったやり方をトライ&エラーして良いものだけを残すというのが本質で,この記事での提案に限らず「自分に合ったやり方」を整備するために試行錯誤するのが大事だと僕も思います.その意味では,私の試行錯誤ログとしてこの記事を読んでいただいても良いかもしれません.
提案:毎日やる
上記のようなコツコツタスクが苦手な人がコツコツタスクをこなすための提案として,毎日やってみるというのはどうでしょうか,というのが本記事の趣旨です.綺麗事で説教臭くに聞こえるかもしれませんし, 卒修論をウゲェーーと言いながら勢いでやってしまうような 私みたいなタイプの人間にとってこれが厳しいのは分かっていますが,やれば終わる(やれば進む)タスクというはやっぱりやるしかないのです.
今のところ大事だと考えているポイントは
毎日やること
具体的な達成目標を各日に設けること
具体的な達成目標に対して(最終的なクオリティが下がるような)チートをできないようにしておくこと
(あらかじめ数日分やっておいて休むのは許容すること:止めない逃げ道の確保)
です.
私の場合には「二日でこれくらい」「一週間でこれくらい」という分割ではうまく動きませんでした.具体的には許容される日の範囲で最大限先延ばして,ウゲェーーとなって,嫌になって,そしてやめてしまいます.区切り単位は人によるとは思いますが,苦手な自覚があるなら毎日というのを試してみてはいかがでしょうか.
毎日よりペースを下げたい場合,「二日でこれくらい」ではなく「一日置きにこれをやる」と思うとちょっと良さそうです.逆にペースが重たい場合でも,少なくとも一日あたりの目標設定として「頑張れば毎日できる」という範囲を超えないようにすることが大事なのかと思っています.頑張っても一日で終わらないから「二日でこれくらい」というのは良くなくて,その場合には半分完成の目標を設定して毎日やることにする,というのでどうでしょうか.
ちなみに今回とは目的がずれますが,自分はポモドーロ・テクニックに失敗したので,あまり細かすぎてもだめなんじゃないか,毎日というのがちょうどいいんじゃないかという気がしています.
この提案は,点群本のときの反省をふまえ点群記事を書くにあたって,こういうタスクが苦手な私でもなんとかするための方法として,ここまでの試行錯誤がら自分なりにひねり出したものです.以降,点群本・点群記事での事例の紹介と,今回の方針設定のために「こんな自分でも割とうまくこなせた事例」を思い出した話です.
実例1: 点群本
今回は7/14が締め切りで約30ページ程度ということだったので,本文を30ページ+図くらいの分量を書いてから推敲すれば目標分量+αくらいになると考えました.6月いっぱいでこれをこなして,7月に推敲して提出となります.
考えられるチートは,「その日書くのが嫌になって図や引用でかさ増し」です.これを避けるため,毎日本文を1ページとしました.今考えてもひどいチートの想定ですが,自分のことをよく理解して作戦を立てていたんだなと嫌になります.あとから図を挿入していくのは効率が悪すぎるので,1日あたり図・引用無しの1ページ分以上(キリが良いところまで)を目標に,実際には図・引用を含めて執筆することにしました.これを実現するため,LaTeXコマンドで図の挿入を切り替えられるようにして,各日分\newpageしてから執筆しました.
やってみるとだいたい半ページ先行して進み,時によっては土日ちょっと休むため1~3ページ先行して進みました.また,書きたいと思っていた内容が書ききれなかったので,推敲を走らせつつ7/8まで毎日1ページ執筆を継続しました.分量がオーバーはしてしまいました(これは本当にすみません・・・)が,コツコツタスクの克服という意味では成功だったかな,と思っています.
実例2: 各種網羅的サーベイ
今更ですが,cvpaper.challengeの取り組みとして網羅的サーベイがあります.記憶があやふやなのですが,自分はある時期からこれも毎日メソッドに切り替えています.
これも自分で書いていて嫌になるのですが,私は正直網羅的にサーベイするのがそれほど好きではありませんし,モチベーション依存だったら続かないと思いますし,本当に自己嫌悪してしまいますがサボれるならきっとサボります.(好きで論文を読むこともたまにはあります,そういうのは別枠です).こんな自分にとって,網羅的サーベイは完全にコツコツタスクです.
記憶が不確かなので,cvpaper.challengeのサマリからどうだったか確かめてみました.これらのページはサマリ作成順に並んでいるので(そうですよね?),各ページからNaoya Chibaで検索をかけるとどの程度の間隔で各論文の情報をまとめているかがわかります.(Chromeだとスクロールバーに出現箇所が出るはず)
CVPR2019:「読める時に読む」をやっていたような痕跡があります.
CVPR2020:ペースを意識していますが,まだ毎日一定のペースではないですね.
ECCV2020:毎日続けることを意識している気がします.毎日二本を目指して,忙しいとペースが崩れてしまうなという感じです.
CVPR2021:毎日2本をやった気がしますが,終了日延長があって流石に無理かも・・・となってしまったので,これ以降1日あたりのペースを落とすことにしました.
ICCV2021:毎日1本を継続しました.
CVPR2022:毎日1本を継続しましたが,上の点群本と時期が被ってキツかったです.
ECCV2022:毎日1本を継続しました.
というわけで最近は自分は1日1本に落ち着いています.だいたい平日に土日分も予約せず流し読みしておいて,土日の負担を下げています.適切な負担は人によると思いますが,1日1本よりゆっくりやる場合でも「3日で1本」ではなく「毎日各項目を埋める(3日で1本相当)」というのを提案します(誰かやってみてうまくいったら教えてください)
ちなみに網羅的サーベイでは終了日は伸びるものなのですが,毎日やる方針の場合に終了日が変わるとマラソンでゴールが目前で遠ざかったような気分になります.この場合,延長後にそのまま毎日やるのはちょっとメンタルに良くない(実体験)ので,初心者(?)の人が網羅的サーベイに対して毎日やるメソッドを使う場合には,ロスタイムはもうゴール済み扱いにすると良いかなと思います.
チート防止は特になく,過去読んでいた論文をまとめるのもOKとしています.ちょっと緩めの設定です.
最近網羅的サーベイの網羅率が下がっているのがちょっと気になっているので,次回の網羅的サーベイからみなさんもぜひ毎日やってみると良いと思います.
・・・とか書いておいて,自分が将来忙しくなって毎日できなくなったら恥ずかしいな,と思ってこの話をするのを避けていたのですが,一応2年やったからちょっとは説得力があるかな,と...
実例3: 点群深層学習サーベイ
昔話ですが,博士のころに点群深層学習関連のサーベイをしました.私が点群深層学習芸人になったきっかけで,点群本や点群記事を書かせていただくきっかけをたどるとここに行き着きます.このあたりの研究に興味があったのももちろんですが,当時深層学習から逃げていた自分にテコ入れする意味も込めてやることに決めたような.
点群処理はやっていたけど深層学習が全然わからない状態の自分が,どうやら盛り上がりつつあるらしいこの分野に入門するために片っ端から読んでやろうとしたような覚えがあります.これは明らかに片岡さんの講演(すみません,どこで聞いたかは忘れました・・・)の影響であり,とても今更ながら感謝しています,ありがとうございます.どの時期にどのペースでやっていたかは忘れたのですが,一番ハイペースな時期で一日四本スライド作成をやっていたと思います(たしかVer. 2の最終版だったはず・・・).
追記:片岡さんから→これCVPR2017/2018速報あたりでしょうかね??PointNetと派生技術が盛り上がりつつあった頃かな。とのコメントを頂きました.時期的にはそのあたりで,記憶だともっとエンカレッジするのを目的にしたような講演だった気がしますが,いつでも片岡さんは周りをエンカレッジしているのでともかく片岡さんの最新の講演を聞きに行くのが良いと思います.
ちなみにこのときは逃げないための仕組みとして,後輩を巻き込んで二人でやりました.戸田くんありがとう.
実例4: 修論・博論
(成功例かは微妙なのですが,)修論と博論についても.ポモドーロ的なアプローチで「XX分やってXX分休む,をXXセットやる」,初稿完成するまで毎日続ける,というスタイルで進めました.これは半分成功・半分失敗で,
一日の明確なゴールがないため気が滅入った
実験や実装も残っており,そもそも毎日やれば終わるコツコツタスクではなかった
他のことをすべて犠牲にして全力出すというのと,コツコツタスクは相性が悪かった
という反省があります.この反省を踏まえての今回の提案となっています.
実例5: 楽器
完全に趣味の話なのですが,去年の10月くらいにギターを買って入門しようと思ってギター基礎トレ365日!を始めました.ついでに大学時代にやっていたベースも練習し直したいなと思い,ベース基礎トレ365日!も始めました.無事一年やり遂げて,今年の10月に完遂しました.
これらの本で練習するのはコツコツタスクの良い例だったのですが,私の進め方に致命的な誤りがあってあまり上達しませんでした(特にギターについてはまだ初心者のままです,悲しい).毎日楽器を触るのは良いのですが,それぞれの日のフレーズをどの程度まで仕上げたら完成かの目標設定が甘かったため,難しいときにはちょいちょいチートをしてしまいました.趣味でさえコレかと嫌になりますが,自分の弱さなので仕方ないですね.チートしないための工夫が必要であるという反省です.
失敗例
ほかにもうまくいかなかった例があります.研究を始めた時期以降でも英語とか,筋トレとか,競プロとか,ダイエットとか,勉強会とか,その他諸々・・・.都度,やっぱり私はコツコツタスクが苦手なんだと思いつつ,克服する手段をこうやって模索しています.
まとめ
ここまでの自分の事例紹介で,なぜ自分がこのような説教臭い提案をするに至ったかが分かるかと思います.改めて書いておくと,苦手な人がコツコツタスクをこなすためには
具体的な達成目標を各日に設けること
具体的な達成目標に対してチートをできないようにしておくこと
が大事であり,これをすすめるペースとして毎日やるというのがちょうどよいと思いますよ,という話でした.
ところで,この方針が効くかどうかは
期間やゴールが明確に設定できるか
モチベーションは何か
やらないとどれくらい困るか
あたりによるんじゃないかと思っているのですが,まだ整理がついていません.ご意見やアドバイスがあればぜひお願いします.
それと点群深層学習とか3D Deep周り,とても面白いので皆さんが興味持ってくれたら嬉しいです.
余談
結局「うさぎとかめ」かよという内容っぽくなっちゃいましたが,そうではなくて「うさぎ寄りのひとがかめをやるための技術」「2兎は得られなくても1兎+1亀ならいけるのでは?」みたいな意図でした.
この記事の内容は品川先生によるメタ視点の研究効率化Tipsを見て,「自分をコントロールする技術」の分析の一つとして書いてみようかと思い立ったものです.普段は恥ずかしいのでこんな内容は書きません.
追記
研究やってる友人にこの内容を見せたところ有益なディスカッション(?)があったので,それも書いておきます.ちなみにこの友人は
に対して
というコメントをしてくれるタイプの方です.
(友人)毎日やること ←それのやり方を書いてくれ!!!!
(私)結局心に決めます,なんですよね...
(私)ある意味やらないとマジで困るタスクを何とかする方法ともいえるのかも
(私)終わるまでベッドの上に物をおいておくと良いです
(友人)あ~~それは賢い
(友人)自分の意志を信用しないということを強く意識すればどうにかなりそうな気がしてきたな
(私)なんか仕組み側で頑張るのが僕ら向きな気がしています
(友人)仕組みが良ければ案外どうにかなる
というわけで,僕や友人みたいなタイプは仕組みづくりをするのが良いのかもしれません.
謝辞
この記事を書くチャンスをくれたcvpaper.challengeの関係各位(特に福原さんと片岡さん),ありがとうございました.あまり研究の話にならなくてすみません.
片岡さんからのコメントもとても参考になりました,ありがとうございます.研究効率化Tipsの公開を楽しみにしています.
深夜セミナー後にチェックとフィードバックをくれた友人氏,ありがとうございました.