PowerPoint プレゼンテーション

コンピュータビジョン特論B
- Graph Cuts -
永橋知行
はじめに
 エネルギー最小化問題
– ラベリング問題
•
•
•
•
Image Restoration
Stereo
Image Segmentation
Multi-camera reconstruction
Min-Cut/Max-Flow Algorithms
エネルギー関数の最小とする解
→ Graph Cuts Algorithm
ラベリング問題
 ラベリング対象
– Depth
– 物体(領域)
etc..
 エネルギー関数の定義
E( L)   Dp ( Lp ) 
pP
V
p ,qN
p ,q
( Lp , Lq )
エネルギー最小化モデル
 Potts Interaction Energy Model
E( L)  || I p  I p || 
pP
K
( p , q )N
( p ,q )
T (I p  I q )
 Liner Interaction Energy Model
E( L)  || I p  I || 
pP

p
A
( p , q )N
( p,q )
T (I p  I q )
Min-Cut/Max-Flow Algorithmsとは
 グラフ理論でのネットワーク流問題の解法
→ Min-Cut/Max-Flow Algorithms
– ネットワーク流問題(最大流問題)
• 与えられたネットワークに対して,最大の流れを求める問題
– Ford-Fulkerson's method
– Push-Relabel method
グラフの基礎




Flow:流れ
Capacity:そのEdgeに流すことができるFlowの容量
Source:Flowが発生する場所
Sink:Flowが到着する場所
Network
Edge
Node
Flow
1/1
Source
Capacity
4/4
2/6
Sink
1/3
S
2/5
0/2
t
1/3
2/2
2/2
s-t cut
 エッジを切断してsとtを分割
→ s-t cut
 s-t cutの際に,sの集合からtの集合へ向かうエッジの容量
→ カットの容量
1+5+3=9
6+2=8
1+3+2+2=8
1+3+2=6
1
4
6
3
S
5
2
t
3
2
2
・カットの容量が最小となるs-t cutを求める → 最小カット問題
最小カットと最大フロー
 目的
– 最小のエネルギーとなるように分割したい
→ 最小カット問題
 最大フロー・最小カットの定理
– 最大フローの値 = 最小カットの値
→ 最大フロー問題と最小カット問題は同じ
(最大フローが求まれば最小カットも求められる)
Ford-Fulkerson's method

フローが最大のときの条件
– 残余ネットワーク上で s-t path が存在しない
→ s-t pathが存在すればフローは増加可能
Step1:全ての枝のフローを0で初期化
Step2:現在のフローに関する残余ネットワークを作成
Step3:残余ネットワークにs-t pathが存在場合は終了
Step4:残余ネットワークのs-t pathをひとつ求め、
それを用いて現在のフローを更新
Step5:Step2へ戻る
残余ネットワーク
 フローが流れているネットワークがあとどれだけのフロー
を流せるかを表したネットワーク
1/1
4/4
2/6
1/3
S
2/5
0/2
1/3
2/2
2/2
1
2
S
0
4
0
4
残余ネットワーク
ネットワーク
t
2
2 0
1
3
0
2
t
2
2
2
1
0
Ford-Fulkerson‘s methodの例
0/4
0/3
0/2
S
0/3
t
0/2
4
ネットワーク
3
0
0
0
S
0
2
t
0
3
2
残余ネットワーク
Ford-Fulkerson‘s methodの例
3/4
3/3
0/2
S
0/3
t
0/2
1
ネットワーク
0
3
3
0
S
0
2
t
0
3
2
残余ネットワーク
Ford-Fulkerson‘s methodの例
4/4
3/3
1/2
S
0/3
t
1/2
0
ネットワーク
0
3
4
1
S
0
1
t
1
3
1
残余ネットワーク
Ford-Fulkerson‘s methodの例
4/4
3/3
1/2
S
1/3
t
2/2
0
ネットワーク
0
3
4
1
S
1
残余ネットワークにs-t pathが存在しない
→ 最大フロー 5
1
t
2
2
0
残余ネットワーク
Graph Cuts Segmentation
係数領域(Region)の関数 境界(Boundary)の関数
E ( L)    R( L)  B( L)
L  ( L1 ,  , L p ,  , L|P| )
 " obj"
L
" bkg"
Object or Background ラベル
R ( L)   R p ( L p )
Object or Backgroundでない確率
pP
B ( L) 
B
{ p , q}N
{ p , q}
  ( L p , Lq )
1 if L p  Lq
 ( L p , Lq )  
0 otherwise.
近傍との差 大: B{p,q}=小
近傍との差 小: B{p,q}=大
グラフの作成(n-link)
n-links
Edge
Weight
Condition
n-link {p, q}
B{p, q}
{p, q}∈N
t-link {p, s}
λ ∙ Rp(“bkg”)
p∈P,
p∈OUB
K
p ∈O
0
p ∈B
λ ∙ Rp (“obj”)
p∈P,
p∈OUB
0
p ∈O
K
p ∈B
t-link {p, t}
 (I p  I q )2 
1

B{ p ,q}  exp 

 dist( p, q)
2


グラフの作成(t-link)
t
n-links
Edge
Weight
Condition
n-link {p, q}
B{p, q}
{p, q}∈N
t-link {p, s}
λ ∙ Rp(“bkg”)
p∈P,
p∈OUB
K
p ∈O
0
p ∈B
λ ∙ Rp (“obj”)
p∈P,
p∈OUB
0
p ∈O
K
p ∈B
t-link {p, t}
s
K  1  max
pP
B
{ p ,q}N
{ p , q}
グラフの作成(t-link)
t
n-links
s
Edge
Weight
Condition
n-link {p, q}
B{p, q}
{p, q}∈N
t-link {p, s}
λ ∙ Rp(“bkg”)
p∈P,
p∈OUB
R (" obj " )   ln Pr( I p | O )
K
p ∈O
0
p ∈B
R (" bkg " )   ln Pr( I p | B )
λ ∙ Rp (“obj”)
p∈P,
p∈OUB
0
p ∈O
K
p ∈B
t-link {p, t}
グラフの分割
t background
n-links
cut
Edge
Weight
Condition
n-link {p, q}
B{p, q}
{p, q}∈N
t-link {p, s}
λ ∙ Rp(“bkg”)
p∈P,
p∈OUB
K
p ∈O
0
p ∈B
λ ∙ Rp (“obj”)
p∈P,
p∈OUB
0
p ∈O
K
p ∈B
t-link {p, t}
s object
Graph Cuts Segmentation 結果(2D)
Graph Cuts Segmentation 結果(3D)
Graph Cuts Stereo
 ステレオ
– ピクセル間の対応付け
→ ラベリング問題
E( L)  Edata ( L)  Eocc ( L)  Es ( L)
Edata ( L) 
Eocc ( L) 
Es ( L) 
D
l ( p , q ) 1
C
pP1  P2
( p ,q )
p
K
 T ( p is occluded)
{( p , q ),( p ', q ')}
{( p , q ),( p ', q ')}N
 T (l( p ,q )  l( p ',q ') )
グラフの作成
Graph Cuts Stereo 結果
まとめ
 Graph Cuts Algorithm
– Min-Cut/Max-Flow Algorithms を用いて,エネルギー関数を
最小化
– セグメンテーションやステレオなど幅広く利用
 おしまい