バックナンバー

--.--.-- --:-- | EDIT
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
Category: スポンサー広告
Permanent Link | Comment(-) | Trackback(-) | PageTop↑
2012.04.08 22:07 | EDIT
今日はコンピュータビジョンの勉強方法や研究の進め方について紹介させて頂きます.
最初に断っておきますが,「片岡流」の勉強方法であり,さらに今後変わって行くこともあります.

以下,僕の方法です.

[勉強方法]

1.プログラミング

- 基礎力
僕の使っている言語環境は主にC++です(Visual StudioまたはXCodeにて).3年生の研究室配属のとき,最初に一冊基礎の参考書を読んでから研究に入りました.もちろん,今まで少しずつ勉強は進めて参りました.構文を調べる時には,C++編(言語解説)/C++編(標準ライブラリ)を参考にしてきました(もちろん,今まで参考にしたページは数多くあります).

-ライブラリ
コンピュータビジョンの分野においてはOpenCVがライブラリとして使われてきました(OpenGLなんかも?).Kinectが登場した今ではOpenNIや Point Cloud Library(PCL)なども盛んですね.基本的には最初に触って遊んでみて,次にリファレンスを確認してどんな機能があるのかを覚えておくと問題に直面した時どの関数が使えるのか,という見当が付け易そうです.あとは,研究を進めて行く中でどんどん覚えて行きます.

- 自分で実装する
もちろん,コンピュータビジョンの知識がついてきてカスタマイズしたいと思った場合,どうしてもライブラリでは解決出来そうにない問題に直面した場合には自分で手法を実装する必要があります.最新の関連研究の論文に書いてある手法を試したい時にも自分で実装しなければなりません.そのためにもプログラミングスキルは磨いておくのが良さそうです.また,数学やコンピュータビジョンの知識も必要になるでしょう.僕は「完璧に理解すれば実装はできる」と思っているので,実装する時には手法についてとことん理解度を高めるようにします.文献を読んでみて,紙に書いて,プログラミングを書いてテストしながら前に進めます.

- コードリーディング
たまに他人が書いたプログラムを参照しています.参照する時にはオープンソースをみてみるのが良いでしょう.CVPapersのページでも,Computer Vision Algorithm Implementationsがあり,フリーで獲得出来るソースが多く載せられています.ここにも載せられていますが,OpenCVの中身をみてみるのも結構面白いです.

2.コンピュータビジョンの基礎知識

どれだけの手法を知っているか,で研究するための引き出しの数が変わり,問題解決能力が高まると感じます.最新の論文から知識を獲得するということもありますが,スタンダードな手法になっているアルゴリズムを勉強するのが手っ取り早いと考えます.以下は,僕が今まで読んだことがあるコンピュータビジョンの本です.スタンダードな手法が主に取り上げられています.(注:全部読みきったわけではありません)

- ディジタル画像処理, CG-ARTS協会
→ディジタル画像とは何か?から始まり,単純なアルゴリズムが紹介されていて,画像処理入門者が簡単に読めるような構成になっています.最初に読む一冊.

- コンピュータビジョン最先端ガイド,アドコムメディア
→最先端のアルゴリズムがチュートリアル形式で丁寧に取り上げられています.一章毎にひとつのアルゴリズムが解説されています.シリーズ化されていて,2012年4月現在では4巻までが発行されております.

- OpenCV 2 プログラミングブック,マイナビ
→OpenCV使い方とアルゴリズムの説明があります.コンピュータビジョンのアルゴリズムとOpenCVによる実装方法が同時に勉強出来るのでお得な本です.研究にOpenCVを使う人は一読することをおすすめします.僕が勉強していたときは1.0版ですが,OpenCV2シリーズ対応の本が出ています.

- Computer Vision: Algorithms and Applications, Springer
→Microsoft ResearchのRichard Szeliskiさんが書いている本で,上記リンク"Latest Draft"からpdfが配布されています.アルゴリズムはもちろん,それが何に使えるのか?という視点でも書かれています.中を見てみると,カメラ幾何のお話が多いという印象を受けます.

- Multiple View Geometry in Computer Vision, Cambridge University Press
→主にカメラ幾何の話が紹介されている,比類なき書籍です.カメラ幾何を勉強するならこれ.

その他,オライリーの詳解OpenCV,佐藤淳先生のコンピュータビジョン-視覚の幾何学-,David A. Forsyth先生,Jean Ponce先生のコンピュータビジョン,などなどたくさん出てきますね.


3.論文(サーベイ)

- 有名な国際学会・論文誌から探す
まずはCVPR,ICCV,ECCVなどのトップカンファレンス,PAMI,IJCV,CVIUなどトップジャーナルから探しています.トップカンファレンスの論文はCVPapers-Computer Vision Resourceから見ることができます.このページは非常に良く見る重要な情報源です.ここに論文のリンクが無くても,著者ページにあることも多いので,目に留まった論文についてはタイトルや著者名で調べることをおすすめします.

- 読んだ論文の関連する論文を探す
トップカンファレンスに出てくる人は,ほぼサーベイを十分にしています.逆にいうとサーベイをちゃんとして,その研究の位置づけをしていないとトップカンファレンスに通らないです(僕も何度か落とされて痛感しました).なので,その研究者のサーベイ能力を借りてどんどん調べて行きましょう.しかし,全ての論文に対して関連する論文をピックアップしてしまうと,とんでもない数を読むことになります.特に関連する論文を見つけ,さらにその中でも強い関連がある論文だけにしておく必要はあると思います.

- 著者を調べる
トップ会議でよく名前を見る人は,その人の年代を追ってサーベイしてみると面白いです.こういう人はほとんど自分のページを持っているものです.研究者のページから研究に関する情報を収集しましょう.

[論文の読み方]

読む順番と把握する情報

- アブストラクト→結論→図とその注釈→本文

- アブストラクト:全体の内容を簡単につかむ

- 結論:どのくらいの成果が出ているのかを知る

- 図と注釈:図で分かり易く,そして具体的なイメージをつかむ

- 本文:全体の流れ,実際のアルゴリズム,数式,実験結果
全体の流れは,序章の次あたりにあるはずです(無い場合もありますが).ここで,全体としてどういう流れで,どんなアルゴリズムを使っているのかを知ります.知っているアルゴリズムや,オリジナルのアルゴリズムを分類するだけで,その論文では何を重点的に調べる必要があるのかがある程度わかります.
分からない数式は,僕の場合一回書いて理解しようとします.また,理解した後もノートに書いてあると何度か見ることになるので,書くという方法を採用しています.


[研究の進め方]

1.情報の獲得
適切なタイミングで,適切に情報を得ることが重要です.上で詳解した方法を一通り試してみると,状況に応じて「何が使えそう」ということが頭に浮かぶはずです.最初は容易なことではありませんが,知識を積み重ねることによって,出来るようになってくるでしょう.

2.勉強しろ!
これは,コンピュータビジョン界の大先生から「博識になる方法」として実際に言われた言葉です.博識の人と知識が無い人も実は入ってくる情報は変わらないのではないか?と言われました.引き出しを多く持っていると,その人の中に残る情報量が違う,と解釈しました.日頃から専門分野だけでなく,多くの分野に精通させて,何にでも興味を持って知識を累積しておくことが博識になるための道だと感じました.

3.論文・読書とアイディア帳
多くの知識を入れ,アイディアとして出す.この,インプットとアウトプットの回転効率を上げることでアイディアの質を高める,ということは今,僕が大事にしていることです.論文を毎日読むとか,読書を年間数百冊読もうとかがインプットに,そしてブログや友達や周りの人に研究のことや得た知識について話すことがアウトプットとして上げられます.また,いつも研究ノートを持ち歩いて,アイディアが思い浮かんだら書くようにもしています.アイディアにノートを書くことは,発明王Thomas Edisonや,アイディアマラソンを参考にしています.
スポンサーサイト
2012.04.02 11:40 | EDIT
David Marrの視覚理論(Vision)より

人間の情報処理には”3つのレベル”での理解が必要と解いています.


1.Computational Theory (計算理論)

What is the goal of the computation, why is it appropriate, and what is the logic of the strategy by which it can be carried out?
(何が計算の目的か,なぜ計算が適切であるか.また実行可能な戦略的理論を探る.)


2.Representation and Algorithm (表現とアルゴリズム)

How can this computational theory be implemented? In particular, what is the representation for the input and output, and what is the algorithm for the transformation?
(どのように計算理論が実装されるか.特に,入出力の表現方法や変換のアルゴリズム.)


3.Hardware Implementation (機械実装)

How can the representation and algorithm be realized physically?
(表現方法とアルゴリズムの物理的な実現方法)


[参考文献]

- Marr D. (1982). "Vision. A Computational Investigation into the Human Representation and Processing of Visual Information. W.H. Freeman and Company.

 | ホーム | 
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。