SlideShare a Scribd company logo
1 of 53
2015/9/5 MPS定例ミーティング
Python で画像認識をやってみよう! 

第5回 

- Scale-space 第2回 -
金子純也
Morning Project Samurai 代表
2015/9/5 MPS定例ミーティング資料 (c) Junya Kaneko
目次
• 前回の復習
• ガウス関数 (Gaussian) と たたみ込み (Convolution)
• 積分の復習
• Gaussian Convolution 再び
2015/9/5 MPS定例ミーティング資料 (c) Junya Kaneko
基本アイデア
適切なスケールが事前にわからないなら。。。
元画像から色々なスケールの画像を
作っちゃえばいいじゃない!!
2015/9/5 MPS定例ミーティング資料 (c) Junya Kaneko
元画像
ちょっと
小さい画像
さらに
小さい画像
(画像の出典: [1])
(画像の出典: [1])
(画像の出典: [1])
2015/9/5 MPS定例ミーティング資料 (c) Junya Kaneko
元画像
ちょっと
小さい画像
さらに
小さい画像
(画像の出典: [1])
(画像の出典: [1])
(画像の出典: [1])
新たな
構造は
付与
されない
2015/9/5 MPS定例ミーティング資料 (c) Junya Kaneko
Q. 新たな構造 (元画像にない線や面)が

現れない画像の縮小方法は?
2015/9/5 MPS定例ミーティング資料 (c) Junya Kaneko
Q. 新たな構造 (元画像にない線や面)が

現れない画像の縮小方法は?
今日理解して実装するところだケロ
2015/9/5 MPS定例ミーティング資料 (c) Junya Kaneko
目次
• 前回の復習
• ガウス関数 (Gaussian) と たたみ込み (Convolution)
• 積分の復習
• Gaussian Convolution 再び
2015/9/5 MPS定例ミーティング資料 (c) Junya Kaneko
Q. 新たな構造 (元画像にない線や面)が

現れない画像の縮小方法は?
2015/9/5 MPS定例ミーティング資料 (c) Junya Kaneko
Gaussian Convolution
(Gaussian とのたたみ込み)
2015/9/5 MPS定例ミーティング資料 (c) Junya Kaneko
Gaussian Convolution
(ガウス関数とのたたみ込み)
わけがわからんケロ
g: Gaussian
2015/9/5 MPS定例ミーティング資料 (c) Junya Kaneko
1次元の Gaussian
2015/9/5 MPS定例ミーティング資料 (c) Junya Kaneko
Gaussian Convolution
(Gaussian とのたたみ込み)
W.T.⃝
2015/9/5 MPS定例ミーティング資料 (c) Junya Kaneko
ポイント
2015/9/5 MPS定例ミーティング資料 (c) Junya Kaneko
ポイント
2015/9/5 MPS定例ミーティング資料 (c) Junya Kaneko
目次
• 前回の復習
• Gaussian Convolution
• 数値積分
• Gaussian Convolution 再び
2015/9/5 MPS定例ミーティング資料 (c) Junya Kaneko
Q. (1変数関数の)積分とは?
x
y
0 a b
y = f(x)
2015/9/5 MPS定例ミーティング資料 (c) Junya Kaneko
A. みんなの回答
2015/9/5 MPS定例ミーティング資料 (c) Junya Kaneko
Q. (1変数関数の)積分とは?
x
y
0 a b
y = f(x)
f(x) とx に囲まれた部分の面積
を求めること!
ぐにゃぐにゃしてるケロ!
2015/9/5 MPS定例ミーティング資料 (c) Junya Kaneko
長方形で関数を覆ってみる
x
y
0 a ba2 a3 a4 a10
f(a2)
ここの面積はわかるケロ!
2015/9/5 MPS定例ミーティング資料 (c) Junya Kaneko
長方形で関数を覆ってみる
x
y
0 a ba2 a3 a4 a10
f(a2)
この長方形の面積は
(a2 - a) * f(a2) だケロ!
2015/9/5 MPS定例ミーティング資料 (c) Junya Kaneko
長方形で関数を覆ってみる
x
y
0 a1 a2 a3 a4 a10 a11
f(a2)
この長方形の面積は
(a2 - a) * f(a2) だケロ!
2015/9/5 MPS定例ミーティング資料 (c) Junya Kaneko
長方形で関数を覆ってみる
x
y
0 a1 a2 a3 a4 a10
f(a2)
誤差があるケロ・・・
a11
2015/9/5 MPS定例ミーティング資料 (c) Junya Kaneko
Q. 誤差を小さくするには?
2015/9/5 MPS定例ミーティング資料 (c) Junya Kaneko
A. みんなの回答
2015/9/5 MPS定例ミーティング資料 (c) Junya Kaneko
A. 長方形の幅を小さくすればいい!!
2015/9/5 MPS定例ミーティング資料 (c) Junya Kaneko
長方形の作り方は2通り
x
y
0
f(a2)
こっちを基準で作ったケロ
a1 a2 a3 a4 a10 a11
2015/9/5 MPS定例ミーティング資料 (c) Junya Kaneko
長方形の作り方は2通り
x
y
0
f(a)
こっちを基準で作ったケロ
a1 a2 a3 a4 a10 a11
2015/9/5 MPS定例ミーティング資料 (c) Junya Kaneko
長方形の作り方は2通り
x
y
0
f(a)
こっちを基準で作ったケロ
a1 a2 a3 a4 a10 a11
2015/9/5 MPS定例ミーティング資料 (c) Junya Kaneko
積分の定義
(ai - ai-1)を限りなく
0に近づける
2015/9/5 MPS定例ミーティング資料 (c) Junya Kaneko
よし!
定義に基づいてプログラムを作ってみよう!!
ちょっと待つケロ!!
2015/9/5 MPS定例ミーティング資料 (c) Junya Kaneko
ai+1 - ai をいくらでも0に近づけられる?
• 頭の中では可能
• コンピュータには限界がある

- 扱える数値が有限 (それに伴う誤差)

- 計算量の問題
頭の中でできることと、
コンピュータの中でできること
の違いを意識する!
2015/9/5 MPS定例ミーティング資料 (c) Junya Kaneko
台形を用いた近似
x
y
0 a1 a2 a3 a4 a10 a11
f(a2)
f(a1)
2015/9/5 MPS定例ミーティング資料 (c) Junya Kaneko
台形を用いた近似
x
y
0
f(a2)
a1 a2 a3 a4 a10 a11
f(a1)
2015/9/5 MPS定例ミーティング資料 (c) Junya Kaneko
ずいぶん誤差が
少なくなる
気がするケロ
2015/9/5 MPS定例ミーティング資料 (c) Junya Kaneko
x^2 を x=0 から x=3 まで積分
長方形による積分
1 -5.0
2 -2.375
4 -1.15625
8 -0.5703125
16 -0.283203125
32 -0.14111328125
台形則による積分
1 -0.5
2 -0.125
4 -0.03125
8 -0.0078125
16 -0.001953125
32 -0.00048828125
何か気づくケロ?
2015/9/5 MPS定例ミーティング資料 (c) Junya Kaneko
x^2 を x=0 から x=3 まで積分
長方形による積分
1 -5.0
2 -2.375
4 -1.15625
8 -0.5703125
16 -0.283203125
32 -0.14111328125
台形則による積分
1 -0.5
2 -0.125
4 -0.03125
8 -0.0078125
16 -0.001953125
32 -0.00048828125
分割数の変化に対して
線形に精度向上
分割数の変化の2乗に
比例して精度向上
詳しくは白板
2015/9/5 MPS定例ミーティング資料 (c) Junya Kaneko
x^2 を x=0 から x=3 まで積分
長方形による積分
1 -5.0
2 -2.375
4 -1.15625
8 -0.5703125
16 -0.283203125
32 -0.14111328125
台形則による積分
1 -0.5
2 -0.125
4 -0.03125
8 -0.0078125
16 -0.001953125
32 -0.00048828125
少ない計算量で、より高い精度
が出せる!!
詳しくは白板
2015/9/5 MPS定例ミーティング資料 (c) Junya Kaneko
Q1. 積分のプログラムを作ってみよう!
Q2: f(x) = x を x=0 から x=1 まで積分してみよう!
Q3: f(x) = を u=0, sigma=1 として、

x = -4 から x = 4 まで積分してみよう!
Q4: 自分のプログラムがまだ効率化できないか?2015/9/5 MPS定例ミーティング資料 (c) Junya Kaneko
目次
• 前回の復習
• ガウス関数 (Gaussian) と たたみ込み (Convolution)
• 積分の復習
• Gaussian Convolution 再び
2015/9/5 MPS定例ミーティング資料 (c) Junya Kaneko
Gaussian Convolution
(ガウス関数とのたたみ込み)
W.T.⃝
2015/9/5 MPS定例ミーティング資料 (c) Junya Kaneko
 について考える
*
元信号
重み
2015/9/5 MPS定例ミーティング資料 (c) Junya Kaneko
ポイント
2015/9/5 MPS定例ミーティング資料 (c) Junya Kaneko
ポイント
2015/9/5 MPS定例ミーティング資料 (c) Junya Kaneko
ポイント
2015/9/5 MPS定例ミーティング資料 (c) Junya Kaneko
ポイント
2015/9/5 MPS定例ミーティング資料 (c) Junya Kaneko
ポイント
2015/9/5 MPS定例ミーティング資料 (c) Junya Kaneko
F(x0) は、元信号が x=x0 のとき最大となる

重みを用いて元信号全体を平均化したもの
新たな信号 F(x) は x=x0 において元信号の

全ての情報を含んでいるが、元信号の x=x0
直近の情報を強く反映している
2015/9/5 MPS定例ミーティング資料 (c) Junya Kaneko
σが大きくなるほど
F(x) は元信号が一様にブレンドされた値の系列になる
*
2015/9/5 MPS定例ミーティング資料 (c) Junya Kaneko
σ = 0.025
σ = 0.05
元信号
2015/9/5 MPS定例ミーティング資料 (c) Junya Kaneko
σが大きくなるほど
F(x) は元信号が一様にブレンドされた値の系列になる
元信号中の細い特徴が無くなっていく
例: 一部に森の写った詳細な写真
葉や枝、木一本一本の情報はなくなり
森の外観のみが残る
2015/9/5 MPS定例ミーティング資料 (c) Junya Kaneko
Q. 何か1つ信号を準備して、
σの異なる Gaussian Convolution を計算して
スケールスペースをつくってグラフを描画してみよう!
2015/9/5 MPS定例ミーティング資料 (c) Junya Kaneko
次回
• スペース間における特徴の追跡
• Gaussian Convolution が新しい特徴を追加
することなしにスケールスペースを構築でき、
スペース間で特徴の追跡ができる理由
2015/9/5 MPS定例ミーティング資料 (c) Junya Kaneko

More Related Content

What's hot

What's hot (11)

プログラミングで少し世界を広げよう(MPS)
プログラミングで少し世界を広げよう(MPS)プログラミングで少し世界を広げよう(MPS)
プログラミングで少し世界を広げよう(MPS)
 
魅せる・際立つ・役立つグラフ Hands on!! ggplot2!! ~導入編~
魅せる・際立つ・役立つグラフ Hands on!! ggplot2!! ~導入編~魅せる・際立つ・役立つグラフ Hands on!! ggplot2!! ~導入編~
魅せる・際立つ・役立つグラフ Hands on!! ggplot2!! ~導入編~
 
Sano hmm 20150512
Sano hmm 20150512Sano hmm 20150512
Sano hmm 20150512
 
IT エンジニア本大賞 2021 講演資料
IT エンジニア本大賞 2021 講演資料IT エンジニア本大賞 2021 講演資料
IT エンジニア本大賞 2021 講演資料
 
hivemallを使って4日間で性別推定した話
hivemallを使って4日間で性別推定した話hivemallを使って4日間で性別推定した話
hivemallを使って4日間で性別推定した話
 
【CVPR 2019】Do Better ImageNet Models Transfer Better?
【CVPR 2019】Do Better ImageNet Models Transfer Better?【CVPR 2019】Do Better ImageNet Models Transfer Better?
【CVPR 2019】Do Better ImageNet Models Transfer Better?
 
アルゴリズムを楽しく!@PiyogrammerConference
アルゴリズムを楽しく!@PiyogrammerConferenceアルゴリズムを楽しく!@PiyogrammerConference
アルゴリズムを楽しく!@PiyogrammerConference
 
R+pythonでKAGGLEの2値予測に挑戦!
R+pythonでKAGGLEの2値予測に挑戦! R+pythonでKAGGLEの2値予測に挑戦!
R+pythonでKAGGLEの2値予測に挑戦!
 
UsingChainerMN
UsingChainerMNUsingChainerMN
UsingChainerMN
 
Sapporo20140709
Sapporo20140709Sapporo20140709
Sapporo20140709
 
Ssaw08 0603
Ssaw08 0603Ssaw08 0603
Ssaw08 0603
 

More from Project Samurai

Python で画像処理をやってみよう! -SIFT 第5回-
Python で画像処理をやってみよう! -SIFT 第5回-Python で画像処理をやってみよう! -SIFT 第5回-
Python で画像処理をやってみよう! -SIFT 第5回-
Project Samurai
 

More from Project Samurai (20)

数学的基礎から学ぶ Deep Learning (with Python) Vol. 12
数学的基礎から学ぶ Deep Learning (with Python) Vol. 12数学的基礎から学ぶ Deep Learning (with Python) Vol. 12
数学的基礎から学ぶ Deep Learning (with Python) Vol. 12
 
Python で画像処理をやってみよう! -SIFT 第7回-
Python で画像処理をやってみよう! -SIFT 第7回-Python で画像処理をやってみよう! -SIFT 第7回-
Python で画像処理をやってみよう! -SIFT 第7回-
 
数学的基礎から学ぶ Deep Learning (with Python) Vol. 9
数学的基礎から学ぶ Deep Learning (with Python) Vol. 9数学的基礎から学ぶ Deep Learning (with Python) Vol. 9
数学的基礎から学ぶ Deep Learning (with Python) Vol. 9
 
Python で画像処理をやってみよう! -SIFT 第6回-
Python で画像処理をやってみよう! -SIFT 第6回-Python で画像処理をやってみよう! -SIFT 第6回-
Python で画像処理をやってみよう! -SIFT 第6回-
 
数学的基礎から学ぶ Deep Learning (with Python) Vol. 8
数学的基礎から学ぶ Deep Learning (with Python) Vol. 8数学的基礎から学ぶ Deep Learning (with Python) Vol. 8
数学的基礎から学ぶ Deep Learning (with Python) Vol. 8
 
数学的基礎から学ぶ Deep Learning (with Python) Vol. 7
数学的基礎から学ぶ Deep Learning (with Python) Vol. 7数学的基礎から学ぶ Deep Learning (with Python) Vol. 7
数学的基礎から学ぶ Deep Learning (with Python) Vol. 7
 
Python で画像処理をやってみよう! -SIFT 第5回-
Python で画像処理をやってみよう! -SIFT 第5回-Python で画像処理をやってみよう! -SIFT 第5回-
Python で画像処理をやってみよう! -SIFT 第5回-
 
数学的基礎から学ぶ Deep Learning (with Python) Vol. 6
数学的基礎から学ぶ Deep Learning (with Python) Vol. 6数学的基礎から学ぶ Deep Learning (with Python) Vol. 6
数学的基礎から学ぶ Deep Learning (with Python) Vol. 6
 
Mpsy20160423
Mpsy20160423Mpsy20160423
Mpsy20160423
 
Make your Artificial Intelligence
Make your Artificial IntelligenceMake your Artificial Intelligence
Make your Artificial Intelligence
 
数学的基礎から学ぶ Deep Learning (with Python) Vol. 4
数学的基礎から学ぶ Deep Learning (with Python) Vol. 4数学的基礎から学ぶ Deep Learning (with Python) Vol. 4
数学的基礎から学ぶ Deep Learning (with Python) Vol. 4
 
数学的基礎から学ぶ Deep Learning (with Python) Vol. 3
数学的基礎から学ぶ Deep Learning (with Python) Vol. 3数学的基礎から学ぶ Deep Learning (with Python) Vol. 3
数学的基礎から学ぶ Deep Learning (with Python) Vol. 3
 
数学的基礎から学ぶ Deep Learning (with Python) Vol. 2
数学的基礎から学ぶ Deep Learning (with Python) Vol. 2数学的基礎から学ぶ Deep Learning (with Python) Vol. 2
数学的基礎から学ぶ Deep Learning (with Python) Vol. 2
 
数学的基礎から学ぶ Deep Learning (with Python) Vol. 1
数学的基礎から学ぶ Deep Learning (with Python) Vol. 1数学的基礎から学ぶ Deep Learning (with Python) Vol. 1
数学的基礎から学ぶ Deep Learning (with Python) Vol. 1
 
Instagram API を使ってウェブアプリを作ろう!
Instagram API を使ってウェブアプリを作ろう!Instagram API を使ってウェブアプリを作ろう!
Instagram API を使ってウェブアプリを作ろう!
 
JavaScript でパックマン!第7回 (一旦最終回)
JavaScript でパックマン!第7回 (一旦最終回)JavaScript でパックマン!第7回 (一旦最終回)
JavaScript でパックマン!第7回 (一旦最終回)
 
JavaScript でパックマン!第6回
JavaScript でパックマン!第6回JavaScript でパックマン!第6回
JavaScript でパックマン!第6回
 
JavaScript で パックマン! 第5回
JavaScript で パックマン! 第5回JavaScript で パックマン! 第5回
JavaScript で パックマン! 第5回
 
JavaScript でパックマン!第4回
JavaScript でパックマン!第4回JavaScript でパックマン!第4回
JavaScript でパックマン!第4回
 
JavaScript でパックマン!第3回
JavaScript でパックマン!第3回JavaScript でパックマン!第3回
JavaScript でパックマン!第3回
 

Pythonで画像処理をやってみよう!第5回 - Scale-space 第2回 -