Upload
yasutomo-kawanishi
View
2.864
Download
10
Embed Size (px)
Citation preview
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あとで詳しく
spyderMatlabライク,わりとおすすめ
eclipse
Visual StudioVisual 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 + 1if x > 0:
return zelse:
w = x + zreturn 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の話