▼ 2015/06/10(水) チュートリアル4 コンピュータビジョンの最新ソフトウェア開発環境-OpenCV,PCLの導入・機能紹介 プログラミング言語の選択と開発ツールの活用-
発表スライド
概要:前半はOpenCV及びPCLの紹介
OpenCVは初心者の基礎教育など良い面もあるが、決して最新の研究が常に更新されるわけではないのでそれだけを使っていてはいけない
PCLはロボット業界の人たちが主に使うライブラリで基本的な点群処理が網羅されている
後半はプログラミング言語と研究開発環境…と言いながらとにかくPythonの宣伝
OpenCVなどではC/C++が主流だがコンパイル型言語は試行錯誤する際には不向き
だからPythonを使おう
開発環境のフリーウェアやライブラリも多数存在しどれも使いやすい
だからPythonを使おう
アイデアを出すためには少し変えるだけでいちいちコンパイルしなければいけないC/C++ではなくスクリプト言語でどんどん試してみよう
だからPythonを使おう
データサイエンスにも機械学習ツールとの相性も良い
だからPythonを使おう
これだけ言われるとPython覚えようかなぁと思う内容でした。はい。
以下スライド概要
OpenCV、PCLの最新版の機能の紹介
OpenCV新機能デモ
MILによるオンライン物体追跡
Poisson Image Editingによる画像合成
最近ではPythonでも使うことができる
C++での使い方のほぼそのままPythonで実行できる
OpenCVの存在する価値
画像系の基礎教育が簡単
基本ツールとしての存在が生産性を向上させられる
仕組みを詳しく知らなくてもAPIを叩くことでツールとして使える
OpenCVも万能ではない
CUDA/OpenCL周りは結構バグが多い
OpenCVに入っているアルゴリズムだけがすべてではない
画像認識部分にも弱い
Point Cloud Library(PCL)
ロボットビジョンを目的としたC++言語による点群処理ライブラリ
リアルタイムに動画で点群が取得できる
標準的な点群処理がPCLにはすべて収録
IO周りや可視化を簡単に済ませられるものが充実
今も拡張が続けられておりセグメンテーションや人を検出することもできるようになる
PCLで点群処理に少しでも触っておくメリット
画像での3D幾何のイメージがつきやすくなる
セグメンテーションや人認識、物体認識は3Dの方が楽
3Dで関連するグラフィックス、ロボット、インタラクションなどの周辺分野の知識が入りやすくなる
これからはPython!!
様々なフリーウェア、ライブラリ
IPython、Jupyter、PTSV、scikit-learnなどなど・・・
オープンソースのライブラリを読んで勉強できる。
行列風で理解がしやすい
プログラミング環境と研究開発環境
画像センシングで用いられてきた言語
コンパイルを行う:C/C++,Java,C#...
スクリプト言語:Matlab,Python…
ライブラリの豊富さや計算速度の必要性、環境に応じて選択
C/C++
計算速度が速い
古くからの知識が使える
行列/数式的記述がしづらい
Python/Matlab
計算速度がやや遅い
型定義が緩くインタラクティブな実験的/探索的な作業に向く
行列/数式的な記述がしやすい
プロトタイプのコーディングにはPythonを用いてコンパイル時間の短縮
設計などを固めその後C/C++で実装する
対話的なプロトタイピングにより「アイデア」を練りだす
設計もしっかりと行う
プロトタイピングのみだと「手を動かしているだけ」になってしまう
アルゴリズムが複雑で新規的な内容の時ほど簡潔な記述とプロトタイピングが効いてくる
設計済みなものは静的方付け言語で行う方がよい
スクリプト言語は遅いといわれているが現在では様々な高速化手段が知られている
C++程度の速度はすぐに出せるようになる
Pythonならば機械学習系ツールとOpenCVを同時に使うことができる
C++では2重ループになるような場面でもPython+Numpyであれば1行で書ける場面もある
最初から実装環境をPythonに移行させるのではなく実験の評価などだけをPythonに移行させるところから始めている
まとめ
ライブラリを使いこなしてさらに高みを狙うことが重要
プロトタイピングは重要「アイデアを生み出すためにはどうするか」を大切に
目的ごとにプログラミング言語を使い分ける
自分で作り出すアルゴリズムや研究を大事に
ツールに凝り効率性が上がれば時間を有意義に使え、様々なメリットを享受することができる
▼ コメント(0件)
- TB-URL http://mm.cs.uec.ac.jp/adiary/adiary.cgi/yanailab/06/tb/