グラフカットによる画像背景切り取り
coil_kpc
August 30, 2017
劣モジュラ関数
f(S) + f(T) ≥ f(S ∪ T) + f(S ∩ T)
割とよくあり、何かと良い性質をもつ
確率、エネルギー
ある状態の「良くなさ」をエネルギーだと思う
ボルツマン分布:
p ∝ e−E
を仮定 (p: エネルギー E の確率分布)
確率を最大化したい
確率はエネルギーの減少関数
確率、エネルギー
ある状態の「良くなさ」をエネルギーだと思う
ボルツマン分布:
p ∝ e−E
を仮定 (p: エネルギー E の確率分布)
確率を最大化したい
確率はエネルギーの減少関数
⇓
エネルギーを最小化したい
カット関数
グラフ G(V, E) が与えられたとき ce を辺 e の容量, δG(S) を S か
ら出る辺の集合とすれば
fcut(S) =
e∈δG(S)
ce
グラフカット
有向グラフのカットは頂点に関する劣モジュラ関数
グラフカット
有向グラフのカットは頂点に関する劣モジュラ関数
最小カットは劣モジュラ関数の最小化問題の一種
劣モジュラ関数最小化
Figure: 贅沢な人
一般には O(n5EO + n6)
(O(EO) は関数の計算量)
劣モジュラ関数最小化
Figure: 贅沢な人
一般には O(n5EO + n6)
(O(EO) は関数の計算量)
最小カットは比較的現実的な計算量の
アルゴリズムが存在する稀有な例
e.g. (V, E) = (|V|, |E|) として
Ford-Fulkerson O(V E2)
Dinic, Goldberg-Tarjan O(V 2E)
Goldberg-Tarjan with link-cut tree
O(V E log V 2
E )
Markov 確率場
グラフ各頂点 vi に確率変数 xi が対応し、それぞれのエネルギー
への寄与は辺で結ばれた頂点にのみ依存
E(x) =
i∈V
θi(xi) +
(i,j)∈E
θij(xi, xj) + θconst
Markov 確率場
グラフ各頂点 vi に確率変数 xi が対応し、それぞれのエネルギー
への寄与は辺で結ばれた頂点にのみ依存
E(x) =
i∈V
θi(xi) +
(i,j)∈E
θij(xi, xj) + θconst
最小化は一般には NP 困難
Markov 確率場
グラフ各頂点 vi に確率変数 xi が対応し、それぞれのエネルギー
への寄与は辺で結ばれた頂点にのみ依存
E(x) =
i∈V
θi(xi) +
(i,j)∈E
θij(xi, xj) + θconst
最小化は一般には NP 困難
xi が 2 つの値のみをとる場合、最小カットに帰着可能
θ への制約
xi ∈ 0, 1 とすると
θij(1, 0) + θij(0, 1) ≥ θij(0, 0) + θij(1, 1)
θ への制約
xi ∈ 0, 1 とすると
θij(1, 0) + θij(0, 1) ≥ θij(0, 0) + θij(1, 1)
⇐⇒ θij(1, 0) − θij(0, 0) ≥ θij(1, 1) − θij(0, 1)
⇐⇒ θij(0, 1) − θij(0, 0) ≥ θij(1, 1) − θij(1, 0)
θ への制約
xi ∈ 0, 1 とすると
θij(1, 0) + θij(0, 1) ≥ θij(0, 0) + θij(1, 1)
⇐⇒ θij(1, 0) − θij(0, 0) ≥ θij(1, 1) − θij(0, 1)
⇐⇒ θij(0, 1) − θij(0, 0) ≥ θij(1, 1) − θij(1, 0)
劣モジュラ性が必要
画像切り取りから Markov 確率場へ
各頂点が各ピクセルに対応、xi :0 ならソース側、1 ならシンク側
色の遠さを切ったときのエネルギーに
高コスト ↓
低コスト ↓
e.g. grayscale なら単純に色の差の絶対値をとる
内側/外側
同サイズの別画像を用いて境界を大まかに指定
内側/外側
同サイズの別画像を用いて境界を大まかに指定
新たに 2 頂点 (Source/Sink) をつくり、内側境界は Source, 外
側境界は Sink にキャパシティ λ の辺を張る
内側/外側
同サイズの別画像を用いて境界を大まかに指定
新たに 2 頂点 (Source/Sink) をつくり、内側境界は Source, 外
側境界は Sink にキャパシティ λ の辺を張る
λ は適当に調整
劣モジュラ性の確認
θij(0, 0) = θij(1, 1) = 0 ≤ θij(0, 1) = θij(1, 0)
なので OK.
劣モジュラ性の確認
θij(0, 0) = θij(1, 1) = 0 ≤ θij(0, 1) = θij(1, 0)
なので OK.
(普通はここで劣モジュラにするため修正する手続きが必要)
Demo (デバッグが間に合えば)
スライド作成時の状況
before after
原因候補
何かしらのバグ
原因候補
何かしらのバグ
型合わせ段階で結構潰したはず...
原因候補
何かしらのバグ
型合わせ段階で結構潰したはず...
動き的にこれっぽい
原因候補
何かしらのバグ
型合わせ段階で結構潰したはず...
動き的にこれっぽい
シードが悪い
原因候補
何かしらのバグ
型合わせ段階で結構潰したはず...
動き的にこれっぽい
シードが悪い
どこが内側/外側かを予め大まかに指定する必要がある
原因候補
何かしらのバグ
型合わせ段階で結構潰したはず...
動き的にこれっぽい
シードが悪い
どこが内側/外側かを予め大まかに指定する必要がある
論文探したら結構真面目にやらないとダメっぽい?
原因候補
何かしらのバグ
型合わせ段階で結構潰したはず...
動き的にこれっぽい
シードが悪い
どこが内側/外側かを予め大まかに指定する必要がある
論文探したら結構真面目にやらないとダメっぽい?
update(8/30 9:41) : それなりに指定してもダメなのでこれで
はなさそう
原因候補
何かしらのバグ
型合わせ段階で結構潰したはず...
動き的にこれっぽい
シードが悪い
どこが内側/外側かを予め大まかに指定する必要がある
論文探したら結構真面目にやらないとダメっぽい?
update(8/30 9:41) : それなりに指定してもダメなのでこれで
はなさそう
方法が悪い
原因候補
何かしらのバグ
型合わせ段階で結構潰したはず...
動き的にこれっぽい
シードが悪い
どこが内側/外側かを予め大まかに指定する必要がある
論文探したら結構真面目にやらないとダメっぽい?
update(8/30 9:41) : それなりに指定してもダメなのでこれで
はなさそう
方法が悪い
画像切り抜きを表現する劣モジュラ関数はこれだけではない
原因候補
何かしらのバグ
型合わせ段階で結構潰したはず...
動き的にこれっぽい
シードが悪い
どこが内側/外側かを予め大まかに指定する必要がある
論文探したら結構真面目にやらないとダメっぽい?
update(8/30 9:41) : それなりに指定してもダメなのでこれで
はなさそう
方法が悪い
画像切り抜きを表現する劣モジュラ関数はこれだけではない
まだその領域には達してない
まとめ的な何か
劣モジュラ関数が最適化できると嬉しい
まとめ的な何か
劣モジュラ関数が最適化できると嬉しい
劣モジュラ最適化は最小カットに帰着できることがある
まとめ的な何か
劣モジュラ関数が最適化できると嬉しい
劣モジュラ最適化は最小カットに帰着できることがある
デバッグ
ご清聴ありがとうございました

グラフカットによる画像背景切り取り