Pythonによる画像処理について
2015/01/17
名古屋CVPRML勉強会
@yasutomo57jp
PYTHON 使っていますか?
研究を進める上で
スクリプト言語を1つ使えると強い
パラメータを変えて実験したい
大量の実験データを整理したい
実験結果の統計を取りたい
スクリプト言語
sh
Windowsのbatファイル/Powershell
Ruby
Python ←
C/C++だけでやろうとすると結構めんどくさい
Pythonのいいところ
シンプルで覚えやすい
基本的な文法が簡単
どの環境でも動く(Win, Mac, Linux)
プログラムの文書化が基本機能
必然的にコメントをしっかり書く
様々なモジュールが存在
Pythonとモジュール
Pythonは基本機能はとてもシンプル
実際使うには拡張モジュールが必要
行列演算など:numpy
科学技術計算など:scipy
グラフの描画など:matplotlib
機械学習:scikit-learn
ディープラーニング:pylearn2, caffe
画像処理:pillow, scikit-image, opencv
シミュレーション:simpy
解析的な計算:theano
インタラクティブシェル:ipython
https://pypi.python.org/pypi で公開
easy_install コマンドや,pip コマンドで
簡単にインストール可能
自作モジュールを簡単に公開できる機能もある
Pythonの実行環境
忙しい人のためのPythonインストール
Anaconda
https://store.continuum.io/cshop/anaconda
Python本体に加えて、
データ分析や科学計算に使えるモジュール群が付
いてくる
自分で入れたい人向けのインストール
通常のPython https://www.python.org
Macならbrew等で,Linuxならyum等で
少なくとも入れておくべきモジュール
numpy, scipy, matplotlib
Pythonスクリプトの編集・実行
python
IPython
IPython notebook
あとで詳しく
spyder
Matlabライク,わりとおすすめ
eclipse
Visual Studio
Visual Studioユーザにはかなりおすすめ
拡張機能 http://pytools.codeplex.com/
私の場合
Vim
jedi-vimというプラグインを利用
参考
VimでPython環境をいい感じに整える
[vim]python補完プラグイン「jedi-vim」を
快適にする方法(jedi-vim+neocomplete)
Emacsの人は…
Emacs で Python 開発環境を構築
Pythonでプログラムを書くにあたって
インデント
コメント: docstring
コーディング規約
インデント
Pythonではインデントが非常に重要
クラス,関数,ifやwhileなどの範囲を表現
通常インデントはスペース4個分
インデントが正しく揃っていないと動かない
def hoge(x, y):
z = y + 1
if x > 0:
return z
else:
w = x + z
return w
def foo(x):
docstring
プログラムにはコメントを書きましょう
特に関数
この関数は何をする関数であるか
それぞれの引数は何で,どういう値を取りうるか
docstring
オブジェクト定義の最初の行にある文字列リテラル
“3個で囲う
モジュール,関数,クラス,メソッドなど
docstringで書いておくと…
help()関数で使い方を参照できる
ドキュメント化ツールでドキュメント作成できる
docstringの例
def sum(x, y):
"""整数xとyの和を返す関数"""
return x + y
def minus_one(a):
"""
1を引く関数
引数:
a -- 整数
戻り値:
計算結果の整数値
"""
return a - 1
コーディング規約
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()
コーディング規約
PEP8チェックツール
Python のコーディング規約 PEP8 に準拠する
pep8とpyflakesを入れるとよい
pip install pep8
pip install pyflakes
もしくは
pip install flake8
Spyderやvimでは…
適切に設定をすることでpep8に準拠したコード
分析ができる
実践編
実際にPythonコードを見てみましょう
資料はこちら
https://github.com/yasutomo57jp/python_image_processing
Pythonを勉強するための資料集
@shima__shimaさん
機械学習の Python との出会い
numpyと簡単な機械学習への利用
@payashimさん
PyConJP 2014での「OpenCVのpythonイン
ターフェース入門」の資料
Pythonユーザ向けの,OpenCVを使った画像処理解説
Python Scientific Lecture Notes
日本語訳
非常におすすめ
numpy/scipyから画像処理,
3D可視化まで幅広く学べる
今後の課題話題
Pythonじゃ遅くて我慢できない人のため
のC++との共存について
SWIGなど
Simplified Wrapper and Interface Generator
C/C++で書いたライブラリをPythonやRubyなど
の他のスクリプト言語から使えるようにするもの
実際に研究に使った話
オフライン人物追跡の実装の話
NetworkXというモジュールによるグラフ理論
DeCAFを使ったDeepLearningの話

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