宮本先生の研究の概要を教えて下さい。また、最近力を入れて取り組まれていることは何ですか?
基本的には画像処理ですが、物体認識を実際の応用に活かすということを目標に、性能向上を目指したアルゴリズムや処理方式に関する研究から、そのような成果を組み込みシステムでリアルタイムに動かすために不可欠なマルチコアプロセッサやFPGAを用いた並列処理方式の研究まで、幅広く研究を行っています。主な対象としては、歩行者検出の実用化に向けた研究があり、それを発展させて情景内文字認識に関する研究にも取り組み始めています。
また、今年から力を入れているテーマとして2次元顔イラストからの3次元モデルの構築があります。複数あるいは1枚の写真を用いた顔画像の3次元再構成は昔から盛んに行われているテーマの1つですが、イラストを入力する場合には、従来手法の多くが利用できず、新たな手法の開発が不可欠であり、技術的な問題を解決するという点で面白いテーマだと考えています。最近は、3次元プリンタが流行っていますが、2次元の絵が描けても、3次元モデリングまでできる人は少なく、思い通りの3次元出力を得られることはまれでしょう。
一般ユーザにとっては、拾ってきた2次元イラストから出来の良い「嫁」のフィギュアを作る機能があれば夢が広がるのではないかと考えております。そのためには、現状、プロの型師が作成した場合においても出来不出来のある3次元モデルを安定して「素晴しい」と感じる形状にモデリングする機能の実現が不可欠であると考え、その実現に向けた研究に取り組んでおります。
そういった研究の内容は、企業さんとの共同研究という形をとるケースもあるのでしょうか?
そういったケースもありますが、移ってきたばかりなので、今直接こちらの大学で共同研究という形としては行っていません。いくつかに関しては成果がある程度出れば、企業さんと話をしに行きたいとは考えています。
研究のテーマとして捉えられているものはありますか?
上述のテーマが代表的なものとなりますが、これらを含めて人の視覚と同等の機能を計算機によって実現することが私の研究テーマとなります。
先生は研究対象というものを選ばれる際、大体何年先くらいを見て行っているのですか?
商品として売れるものが何時できるかという意味では、先のことを殆ど意識していません。なので、何年先という質問には答えられません。自分自身が楽しいかどうか、興味を持つかどうかのみに基づき研究対象を選んでいます。本質的な解決すべき課題を含んでいるテーマを対象とする方が面白いことは間違いありませんが、自分が興味を持ったものの実現に必要となる技術が、今までに誰もやっていないから出来ていない比較的下らない課題であったとしても、その重要性が高ければ気にせず取り組みます。ただし、車輪の再発明をやらかさないように、既存研究のサーベイには気を使っています。
この研究を行う上で、研究室に実際所属している学生さんはどういうコードを書いたり、プログラムを書いたりしているのでしょうか。
例えば、新しいアルゴリズムを開発する場合、理論から考えて数式上上手くいきそうだという見通しと立てた上で実験データを取るというアプローチが最も理想的です。しかし、画像というのはなかなか解析的に表現出来るものではないため、対象とする実験データに対して上手くいく手法が作れるかをトライアンドエラーを繰り返して上手く行く方法を探すというのが現実的な方法です。上手く行く方法を探す際には直感的に良さそうだと思うアイデアをコードに取り込んで実験を行うことになります。ここで言う実験とは、例えば、学習用のデータから識別器の構築を行い、テストデータを用いて識別性能の評価を行うような計算機シミュレーションのことを意味していま
す。利用するプログラミング言語は、C、C++、Python、Ruby、Matlab 等です。
どのような手法でアルゴリズムを考えるのですか?
画像処理方式の場合、アルゴリズムという呼称が適当かどうか分かりませんが、どのような手続きで処理を行うかの方針については、閃きに基づいて決定しています。そして、閃いた方法に関して、先行研究が存在しないかどうかの調査を入念に行いつつ、より詳細な数理モデルの構築および分析やシミュレーションによる評価を並行して実施して行きます。この際の閃きというのは、これまでに行った研究あるいは学んだ知識、場合によっては全く関係のない文章から得られた情報が、頭の中でぼんやりと繋がるようなもので、何か神託が降ってくるとかいう類いのものではありません。そのような閃きが起こらない場合には、地道に物理的な意味を考慮しつつ新たな手法を考えています。
尤も、例えば物体検出・認識の分野では、最近はデータさえ用意して計算機を回せば性能の良い識別器が構築できてしまうディープラーニングが流行っているので、将来においてもこのような方法が上手く行くとは限りません。とはいえ、複合的な知識や広い視野から得られる直感的な発想力の活用ができなくなると最早研究者としては商売あがったりになってしまうので、力任せのディープラーニングと上手く付き合いながら、人間ならではの能力を活かして極力長く一線で研究を続けられればと思っております。
小林さんはどの様な研究をされていますか?
機械学習を利用した画像処理に関する研究を行っています。まだ新しいアルゴリズムを考案できたという訳ではないですが、いずれはそういうことを行っていきたいと思っています。プログラミング技術が必須であるので、コードを書き慣れた人のコードをたくさん読んで、良いプログラムが書けるようにコーディングの勉強もきちんとしていきたいと思っています。
大内さんはどの様な研究をされていますか?
まだ研究という段階には至っていないのですが、歩行者検出を Zynq という FPGA とマルチコアプロセッサが一体となった組込みプロセッサ上で動作させることを目指し、FPGA 上に実現する回路、これを制御するための組込みソフトウェアの実装に取り組んでおります。今後は、物体検出の実時間実装を行う上で不可欠な、演算量削減を目的としたソフトカスケード識別器の処理に適したシステム構成を明らかにしたいと考えております。
最後に、読者の方に向けて宮本先生からメッセージをお願いします。
良いプログラマとなるためにはたくさんコードを読んで書いてそしてダメなコードを捨てて下さい。その繰り返しで次第に良いコードが書けるようになるでしょう。センスの良い人はこんな回り道をしなくても最初から良いコードが書けるかも知れませんが。言語としては、最初は Ruby あるいは Python から入り、速度が気になり出せばC/C++ を学び、SWIG で Ruby や Python と繋いでみると良いでしょう。そうすれば、コンピュータシステムの仕組みの理解を深められます。さらに興味を持てば、バイナリアン的にオブジェクトの中身やオペレーティングシステムの仕組みを学んで下さい。
また、上記とは独立に情報科学の研究内容あるいはその応用に興味を持ち、何か1つで良いので自分の生涯をかけて為したい夢あるいは目標を定めて下さい。他人からみると最早トンデモ科学と区別ができないようなものでも構わないどころか、むしろそんな内容の方がより貴方の能力を高めてくれるかも知れません。その夢の実現のために、関連する分野の理論やその基礎となる数学を学び、自らのアイデアを実現するために自分の手でコードを書けば、単なるプログラマとしてではなく情報科学の技術者あるいは研究者としてより効率的に成長できるでしょう。逆に、目標がはっきりしていなければなかなか努力は続かないのではないかと思います。
技術職・研究職の良いところは、楽しみながらあるいは遊びながら結果を出せることであるので、自分が楽しめる、面白いと感じることは何かということを突き詰めて、他人から見れば遊んでいるだけにしか見えない状態になりながら、自分を成長させそして結果を出して行きましょう。そのためにも、まずは、何が楽しいのかをはっきりさせることからです!!好きこそ物の上手なれ!!
宮本先生、大内さん、小林さん、インタビューを受けて頂きありがとうございました。