17
Pythonによる画像処理について 2015/01/17 名古屋CVPRML勉強会 @yasutomo57jp

Pythonによる画像処理について

Embed Size (px)

Citation preview

Page 1: Pythonによる画像処理について

Pythonによる画像処理について

2015/01/17

名古屋CVPRML勉強会

@yasutomo57jp

Page 2: Pythonによる画像処理について

PYTHON 使っていますか?

Page 3: Pythonによる画像処理について

研究を進める上で

スクリプト言語を1つ使えると強い

パラメータを変えて実験したい

大量の実験データを整理したい

実験結果の統計を取りたい

スクリプト言語

sh

Windowsのbatファイル/Powershell

Ruby

Python ←

C/C++だけでやろうとすると結構めんどくさい

Page 4: Pythonによる画像処理について

Pythonのいいところ

シンプルで覚えやすい

基本的な文法が簡単

どの環境でも動く(Win, Mac, Linux)

プログラムの文書化が基本機能

必然的にコメントをしっかり書く

様々なモジュールが存在

Page 5: Pythonによる画像処理について

Pythonとモジュール

Pythonは基本機能はとてもシンプル実際使うには拡張モジュールが必要

行列演算など:numpy科学技術計算など:scipyグラフの描画など:matplotlib機械学習:scikit-learnディープラーニング:pylearn2, caffe画像処理:pillow, scikit-image, opencvシミュレーション:simpy解析的な計算:theanoインタラクティブシェル:ipython

https://pypi.python.org/pypi で公開easy_install コマンドや,pip コマンドで

簡単にインストール可能自作モジュールを簡単に公開できる機能もある

Page 6: Pythonによる画像処理について

Pythonの実行環境

忙しい人のためのPythonインストール

Anaconda

https://store.continuum.io/cshop/anaconda

Python本体に加えて、データ分析や科学計算に使えるモジュール群が付いてくる

自分で入れたい人向けのインストール

通常のPython https://www.python.org

Macならbrew等で,Linuxならyum等で

少なくとも入れておくべきモジュール

numpy, scipy, matplotlib

Page 7: Pythonによる画像処理について

Pythonスクリプトの編集・実行

python

IPython

IPython notebookあとで詳しく

spyderMatlabライク,わりとおすすめ

eclipse

Visual StudioVisual Studioユーザにはかなりおすすめ

拡張機能 http://pytools.codeplex.com/

Page 8: Pythonによる画像処理について

私の場合

Vim

jedi-vimというプラグインを利用

参考

VimでPython環境をいい感じに整える

[vim]python補完プラグイン「jedi-vim」を快適にする方法(jedi-vim+neocomplete)

Emacsの人は…

Emacs で Python 開発環境を構築

Page 9: Pythonによる画像処理について

Pythonでプログラムを書くにあたって

インデント

コメント: docstring

コーディング規約

Page 10: Pythonによる画像処理について

インデント

Pythonではインデントが非常に重要クラス,関数,ifやwhileなどの範囲を表現

通常インデントはスペース4個分

インデントが正しく揃っていないと動かない

def hoge(x, y):z = y + 1if x > 0:

return zelse:

w = x + zreturn w

def foo(x):

Page 11: Pythonによる画像処理について

docstring

プログラムにはコメントを書きましょう

特に関数

この関数は何をする関数であるか

それぞれの引数は何で,どういう値を取りうるか

docstring

オブジェクト定義の最初の行にある文字列リテラル

“3個で囲う

モジュール,関数,クラス,メソッドなど

docstringで書いておくと…

help()関数で使い方を参照できる

ドキュメント化ツールでドキュメント作成できる

Page 12: Pythonによる画像処理について

docstringの例

def sum(x, y):"""整数xとyの和を返す関数"""return x + y

def minus_one(a):"""1を引く関数

引数:a -- 整数

戻り値:計算結果の整数値"""return a - 1

Page 13: Pythonによる画像処理について

コーディング規約

PEP8 (Python Enhancement Proposal 8)Pythonのモジュールで使われているコーディング規

約PEP8 日本語版でもPEPにこだわりすぎてコードの後方互換性を崩す

のはダメIn particular: do not break backwards compatibility just

to comply with this PEP!

例タブはスペース4個1行は79文字までdocstringを書くI, l, Oを1文字で変数名にしないClassMei, kansuu_mei()

Page 14: Pythonによる画像処理について

コーディング規約

PEP8チェックツール

Python のコーディング規約 PEP8 に準拠する

pep8とpyflakesを入れるとよい

pip install pep8

pip install pyflakes

もしくは

pip install flake8

Spyderやvimでは…

適切に設定をすることでpep8に準拠したコード分析ができる

Page 15: Pythonによる画像処理について

実践編

実際にPythonコードを見てみましょう

資料はこちら

https://github.com/yasutomo57jp/python_image_processing

Page 16: Pythonによる画像処理について

Pythonを勉強するための資料集

@shima__shimaさん機械学習の Python との出会い

numpyと簡単な機械学習への利用

@payashimさんPyConJP 2014での「OpenCVのpythonイン

ターフェース入門」の資料Pythonユーザ向けの,OpenCVを使った画像処理解説

Python Scientific Lecture Notes日本語訳非常におすすめnumpy/scipyから画像処理,

3D可視化まで幅広く学べる

Page 17: Pythonによる画像処理について

今後の課題話題

Pythonじゃ遅くて我慢できない人のためのC++との共存について

SWIGなど

Simplified Wrapper and Interface Generator

C/C++で書いたライブラリをPythonやRubyなどの他のスクリプト言語から使えるようにするもの

実際に研究に使った話

オフライン人物追跡の実装の話

NetworkXというモジュールによるグラフ理論

DeCAFを使ったDeepLearningの話