PyCon JP 2014参加レポート

第3回 2日目のセッションから ─OpenCVでの応用,静的解析,データ分析とPython

この記事を読むのに必要な時間:およそ 3.5 分

PyCon JP 2014参加レポート第3回は,カンファレンス2日目のセッションを中心にお届けします。

OpenCVのpythonインターフェース入門

はじめにMasaki Hayashi氏によるOpenCVのpythonインターフェース入門のセッションをご紹介します。Hayashi氏は現在大学院にて機械学習の画像認識の研究をしており,ブログやWebなどでもコンピュータービジョンについて記事を執筆しているとの事でしたコンピュータビジョンのセカイ - 今そこにあるミライ)⁠

Masaki Hayashi氏のセッション ©PyCon JP

Masaki Hayashi氏のセッション ©PyCon JP

Computer Visionとは?

まずは導入部分で,Computer Visionについての説明を行いました。Computer Visionとは次のようなものであることを解説し,またComputer Visionのサンプル動画を紹介してとてもわかりやすく説明していました。

  • カメラで撮影した画像,動画,デプス(Kinect)などから実世界の様子を計算機で(できれば自動的に)把握する技術分野
  • 画像認識,画像処理,3D復元などををひっくるめてComputer Visionと呼ぶ

OpenCVの概要

次にOpenCVの概要ついて次の項目をあげて説明を行いました。OpenCVをPythonから使用する場合の主要モジュールや,応用モジュールについて詳しく解説を行いました。

  • C++言語向けのComputer Vision大規模ライブラリ
  • Python,Javaなどのラッパーも標準提供されている
  • 画像処理,動画像入出力,顔検出などComputer Visionの基本的な道具がそろっている
  • 最新バージョンはOpenCV2.4.9

PythonでOpenCVを使うメリット

またC++ではなくPythonを利用するメリットとして,次のような特徴を挙げて解説を行いました。特にインタラクティブに実行して,すぐ結果をみて試せるというのは非常に大きな利点があると感じました。

  • NumPyやSciPyとの連携
  • C++と違ってインタラクティブに,実験的に実行できる(IPythonも使用できる)
  • IPython Notebookによる全ての結果のノート保存,共有
  • scikit-learn, pandasなどの機会学習,データサイエンス用のライブラリとの相性も良い

次にOpenCVによる画像データにのフォーマットに関する説明になりました。OpenCVで読み込んだ画像データはnumpy配列になると説明しました。numpy配列になるといろいろなライブラリとの連携も簡単にできるので,メリットが大きいと感じました。

実際のデモでは,基本的な画像処理であるガウシアンブラー(ぼかし)⁠エッジ検出などの例の紹介,画像認識である背景差分,人検出の使用例について解説しました。OpenCVにはあらかじめいろいろな関数が用意されているので,デモで見たような処理は比較的簡単にできる事がわかりました。

発表資料
OpenCVのpythonインターフェース入門

Improving code quality through static analysis for Python

次にDaniel Izquierdo氏によるセッションについて紹介します。

Izquierdo氏はベネズエラ出身で現在は日本に住んでおり,スタートアップであるMakeLeapsで働いていると自己紹介を行いました。

Daniel Izquierdo氏 ©PyCon JP

Daniel Izquierdo氏 ©PyCon JP

Why static analysis?

まずはなぜstatic analysisが必要なのかについて,次の項目をあげて説明を行いました。static analysisを行う事によって,プログラムを走らせたり,テストするとのは違った問題が発見できると説明しました。いろいろな側面からコードを改善する事ができるので,ぜひ機会があれば使用して見たいと思いました。

  • Find errors.
  • Find security issues.
  • Reduce complexity.
  • Keep code clean.
  • Find bugs.
  • Enforce coding style.
  • Calculate code metrics.

Popular static analysis tools for Python

次にPythonでのstatic analysisのツールについてサンプルを交えながら解説しました。Pylintの使用例を元に実際のコードと,解析結果を提示してわかりやすく説明していました。

次に実際にプロジェクトへstatic analysisを組み込む方法について説明を行いました。まずはstatic analysisはたくさんの問題や改善点を指摘してくれるので,プロジェクトに組み込んだ方が良いということを説明しました。また開発に組み込む方法として,エディタと連携して使用したり,CIの仕組みに取り入れたりする方法を紹介しました。

実際にエラーを修正する際には,優先順位をつけていくつかのエラーはignore(無視)して,修正出来るときがきたら修正すれば良いと述べました。エラーの数を少なくしておけば,新たなエラーの検知がしやすく,また対応もしやすいので有効な方法だと思いました。

著者プロフィール

関根裕紀(せきねひろのり)

複数のスタートアップにて,さまざまなWebアプリケーション開発に携わったあと,アライドアーキテクツ(株)に入社。業務では主にWebサービスの開発全般を担当している。5,6年ほど前にPythonを使用して以来,Pythonが好き。PyCon JP 2015 副座長(プログラム),また月に一度の勉強会である「Pythonもくもく会」を主催している。

Twitter:@checkpoint

コメント

コメントの記入