Alpha-expansion and Alpha-beta-swap Algorithm Flow

簡介

主題:採用圖割方法解決視覺問題中常見的能量最小化問題
主要參考文獻:Fast Approximate Energy Minimization via Graph Cuts, Cornell University, Boykov, Veksler, Zabih, IEEE PAMI 23(11), pp 1222ff, 2001
在諸多視覺圖像問題中,研究人員最後都能將其歸結爲最小化一個能量函數的問題,很多文獻中都引用這篇文章:Fast Approximate Energy Minimization via Graph Cuts,該文章在 google scholar 上顯示截至目前引用超過5k+。該文章中介紹了兩種採用圖割來解決能量最小化問題的算法: α -expansion and α -β swap algorithms。
下面本文通過拜讀並翻譯原文,加上個人理解試着弄清楚這兩個算法的來龍去脈,如有錯誤敬請指出。

計算機視覺中的能量最小化問題描述

在計算機視覺領域中,我們經常需要估計一些在空間(像素平面)上變化的量,例如圖像灰度、視差大小等。這些量都有着共同的特徵:分塊平滑(piecewise smoothness)。分塊平滑意味着兩個方面:這些量在塊的內部變化平滑,在塊與塊之間(物體邊界)變化很大。對每一個像素點 pP 我們都需要給定一個標籤(label)fpL ,也就是將每個像素映射到標籤集中的某個標籤上,這裏標籤函數(映射) f 不僅需要滿足分塊平滑的特點而且需要和觀測到的數據一致。
基於以上想法,這些視覺問題就可以表達成以下尋找標籤函數 f 以求能量最小化的形式:

E(f)=Esmooth(f)+Edata(f),

在這裏 Esmooth(f) 表達的是 f 分塊不平滑的程度,Edata(f) 表達的是標籤函數 f 與觀測到數據的不一致性。Edata(f) 的一般形式是:
Edata(f)=pPDp(fp),

其中 Dp 來度量標籤與觀測數據的一致性,例如在圖像恢復中 Dp(fp)=(fpip)2 ,其中 ip 表示在像素點 p 處的灰度值,在這裏 Edata(f) 並不是重點。
平滑項 Esmooth 纔是關鍵所在。爲了在邊界處得到較好的效果,我們選擇一種“非連續性保留”(discontinuity-preserving) 函數(參考分塊平滑兩項性質)。
由於能量最小化是非凸優化問題,具有很多局部極小值,並且解空間有 |P| 維,因此解這種能量最小化問題最大的障礙就是巨大的搜索空間。模擬退化法可以優化任意能量函數,但是通常計算非常緩慢。
在這篇文章中主要考慮的平滑項具有以下形式:
Esmooth={p,q}NVp,q(fp,fq),

這裏 N 表示的是相鄰的像素對集合。Vp,q(fp,fq) 表示像素對 {p,q} 在標籤函數 f 下生成的標籤 (fp,fq) 之間的距離(相似度、平滑程度)。在某些特殊情況下這種能量形式是能夠精確的最優化,這裏不展開,一般來說,這個問題是 NP 難問題。
該論文中提出了兩種對任意有限大小的標籤集 L 進行近似能量最小化的算法:α -expansion and α -β swap,分別針對兩種互作用勢(interaction potentials):度量(metric)、半度量(semi-metric)。V 在標籤空間 L 上滿足下面兩個條件時才稱之爲半度量:對任意一對標籤 α,βL ,都有 V(α,β)=V(β,α)0V(α,β)=0α=β. 如果 V 對任意的 α,β,γL 還滿足三角不等式:
V(α,β)V(α,γ)+V(γ,β)

那麼我們就稱 V 是度量的。需要注意的是不論是度量還是半度量互作用勢,都包含重要的“非連續性保留”的互作用勢。這個特性在後續證明中是會用到的,也說明了兩種算法分別適用的情況。

採用圖割來最小化能量

對所面臨的問題進行了簡單的形式化的描述後,我們下面就會採用一種圖割的方法來求解這個問題。總體思路是每一次 expansion(swap)調整一(兩)個標籤來使得能量函數下降,遍歷所有標籤(組合)直至能量函數在所有的一次 expansion(swap)調整標籤中不能下降,算法停止,達到局部最優。

分割和移動空間

每一個標籤映射函數 fpL 與圖像分割方式是一一對應的關係,而 fp (後簡寫爲 f ) 是能量函數的自變量,因此我們可以稱所有可能的 f 的取值所組成的集合爲操作空間或移動空間,用數學描述如下:
任意一種標籤方式 f 都能通過像素的一個分割來表示: P={Pl|lL} 其中 Pl 表示標籤爲 l 的像素點集合。可以看到標籤方式 f 與分割 P 成一一對應關係。
每一次標籤調整,也就是 f 在操作空間中的每一次移動遵循一定規定的我們稱之爲交換(swap )和擴張(expansion )操作,swapexpansion 操作的具體意義:
- swap : 給定一對標籤 α,β ,從一個分割 P 到另一個分割 P 的移動(變動)在滿足以下條件時稱之爲一次 α -β swap 標籤調整操作:對任意 lα,β 都有 Pl=Pl 。也就是說在一次 α -β swap 調整操作後,一些原來是 α 標籤的像素被標記爲 β ,一些原來是 β 標籤的被標記爲 α ,簡而言之就是被標記爲 α,β 標籤的像素集合之間進行了交換,這也是該算法名稱的由來。
- expansion : 給定一個標籤 α ,從一個分割 P 到另一個分割 P 的移動(變動)在滿足以下條件時稱之爲一次 α -expansion 標籤調整操作:對任意標籤 lα 都有 PlPl 。也就是說在一次 α -expansion 調整操作中,除了 α 標籤以外的集合都是原來的子集,簡而言之就是被標記爲 α 標籤的像素集合擴大了,這也是該算法名稱的由來。
上面定義了一次 expansion(swap)操作對象是具體的一(兩)個標籤集合,和操作規範,並沒說明具體哪些像素進行擴張或交換操作。對不同的操作對象,必然產生截然不同的 expansion(swap)操作,相同的操作對象,對不同的像素操作,也是不同的 expansion(swap)操作。

算法流程和性質

上面定義了 expansion(swap)操作空間和每一次 expansion(swap)調整操作規範,算法總流程如下圖:
algorithm flow
圖中上部分是 swap 算法,下部分是 expansion 算法,可以看到兩種算法基本結構相同:在 3 中遍歷所有可能的標籤調整對象,並對該調整對象具體調整方式尋求最優 f^ ,如果找到的當前調整對象的最優調整有效即: E(f^)<E(f) 使得能量下降,則接受這個調整 f:=f^ 。對標籤不斷的進行調整,直到沒有標籤調整能使能量函數下降爲止。
兩種算法區分就在對當前標籤對象進行具體調整的方式 3.1 - 3.2 這兩步上,兩種標籤調整方式在上一部分已經進行了說明。
該文中的算法就是每一次在整個操作空間的一個有限的(swap or expansion 操作對象所決定)子空間內尋找最優點並移動,直到在一次操作中對能量沒有減小作用。此時得到的能量值是一個局部極小值,並不是全局極小值,有相關證明 expansion 算法得到的標記與全局最優成可控的倍數關係。

圖割

上面只是給出了算法的框架流程,但具體解決算法的最關鍵步驟就是 3.1:在當前標籤對象的一次 swapexpansion 調整中找到的最優標籤方式 f^ ,這裏我們通過圖割的方法來有效的找到 f^
這裏簡單介紹下圖割問題:給定一幅無向帶邊權圖 G=V,E 幷包含了兩個特殊的節點,源節點 source,匯節點 sink。這幅圖的一個割就是邊集合 E 的一個子集 CE 稱爲割集,使得在圖中去除割邊集合後源點和匯點不能聯通,一個割的代價記爲 |C| 就是割集中所有邊權之和。
最小割問題就是找到一個割使得代價最小。這是一個很成熟的問題,已經提出了不少低階多項式複雜度的算法,例如 Ford-Fulkerson,Push-relabel,這些算法在實際中都是近乎線性複雜度。

找到最佳的 swap 移動

對於一個輸入的標記方式 f (也即是分割方式 P )和一對標籤 α,β ,我們期望找到一個具體的標記方式 f^ 使得總能量 E 在此時 f 上的 α -β 標籤對的 swap 調整操作中最小。注意這裏的最小是針對當前輸入的標記方式 fα -β 標籤集上的一次 swap 操作而言的。
這裏採用構建圖 Gαβ=Vαβ,Eαβ 並在圖上解最小割問題的方式來找到當前 f 在標籤對上 α -β 最佳 swap 調整。這個圖的結構是由當前 f 和標籤對 α -β 所決定的。

構建圖

每次我們都是基於當前分割 f 和標籤對 α -β 來構建圖 Gαβ 的,在一維情形下:
graph-alpah-betta
圖中,頂點集合包含匯源節點 α,β 和像素點 pPαPβp 與匯、源節點分別連接邊,稱之爲 t -link ,每對相鄰的像素點之間連接一條邊,稱之爲 n -link ,我們用 {p,q}N 來表示兩個像素相鄰。那麼圖 Gαβ 的邊集合

Eαβ=pαβ{tαp,tβp}qNpp,qPαβe{p,q}

每條邊的權值:
table-of-weight

最小割與最佳 swap 移動

對於構造的圖中的一個割有如下的幾種情況:
property-of-cut
從圖中可以看到每個像素頂點有且僅有一條t邊在割集中(也意味着每個像素只能擁有一個標籤),如果兩個相鄰的像素被標記爲不同的標籤,那麼他們之間的n邊也屬於割集。有這樣的觀察我們可以得到以下兩個引理:
- Lemma 1: 與一個割 C 對應的整體標籤函數 fC 與輸入的標籤函數 f 之間正好是一次 α -β swap 的關係。
- Lemma 2: 對於任意一個割 C 和任一n邊 e{p,q} 都有:

|Ce{p,q}|=Vp,q(fCp,fCq).

因爲割集與n邊交集只有在兩個不同標籤交界處纔會產生。由此得到:
Theorem 1: 圖 Gαβ 上的一個割 Cf 上的一次 α -β swap 成一一對應關係。並且,割的費用 |C|=E(fC)+constant 。證明如下:
Gαβ 上的一個割的費用 |C| 有:
|C|=pPαβ|C{tαp,tβp}|+{p,q}N{p,q}PαβV{p,q}(fp,fq).

對於前一項,割集與t邊相交,結合權值表中的定義,我們有:
|C{tαp,tβp}|=Dp(fCp)+qNpqPαβVp,q(fCp,fq).

後一項表示割集中的n邊權值,結合 Lemma 2 可以得到:
|C|=pPαβDp(fCp)+{p,q}NporqPαβVp,q(fCp,fCq).

注意到前一項中產生的平滑項與後一項中的平滑項結合定義的平滑項對象是兩個相鄰像素且至少有一個屬於 αβ 標籤總計集合中。
這時候我們就可以將割集代價寫爲:|C|=E(fC)K ,其中 K 的值爲:
K=pPαβDp(fp)+{p,q}N{p,q}Pαβ=Vp,q(fCp,fCq).

這個數值對於當前 f 和標籤對 αβ 的所有割 C 是完全一樣的常數。那麼必有推論:
Corollary 1: f 的最佳 α -β swap 是 f^=fC ,這裏 C 是圖 Gαβ 上的最小割。

找到最佳的 expansion 移動

對於一個輸入的標記方式 f (也即是分割方式 P )和一個標籤 α ,我們期望找到一個具體的標記方式 f^ 使得總能量 E 在此時 f 上的 α 標籤的 expansion 調整操作中最小。
這裏採用構建圖 Gα=Vα,Eα 並在圖上求解最小割問題的方式來找到當前 f 對標籤 α 的最佳 expansion 調整。圖的結構是由當前 f 和標籤 α 所決定的,並假設平滑項 V{p,q} 是度量的,也就是滿足三角不等式。

構建圖

每次我們都是基於當前分割 f 和標籤 α 來構建圖 Gαβ 的,在一維情形下:
graph-alpha
匯源節點分別代表標籤 α 和其他標籤 α¯ ,與上一算法的不同之處在於:
- 圖在整幅圖像的所有像素點上構造,
- 在相鄰且具有不同標籤頂點({p,q}Candfpfq )間添加額外的輔助節點 a{p,q} ,也就是在分割邊界上需要輔助節點,
- 相應的對於輔助節點我們需要添加額外的三條輔助邊,分別與兩個邊界點和 α¯ 相連,並且在構造權重時使得他們之間滿足三角不等式。
所有邊的集合及權重如下圖:
graph-alpha-edge

最小割與最佳 expansion 移動

與上一部分類似,每個像素頂點有且僅有一條t邊在割集中,如果 tα¯p 邊在割集中,那麼該像素就保持原標籤。同樣我們可以得到:
Lemmma 3: Gα 的一個割與一次 f 上標籤 α 的 expansion 移動一一對應。
特別的,對於最小割我們有以下割邊情形:
graph-alpha-cut-property
- 圖中中間情形:當之前相鄰邊界像素保留原標籤(fa=α¯ ),那麼由於中間的輔助節點三條邊滿足三角不等式,就必須切t邊(tα¯a )。
- 圖中右邊情形:當之前相鄰邊界像素其中一個變成 α 標籤,另一個保留原標籤,那麼還是由於三角不等式e{p,a} 必定包含在割集中。
三角不等式在這裏的意義就是儘量只切輔助節點的某一條邊
與上一部分類似,通過之前定義的割邊權值計算最小割代價可以證明 |C|=E(fC) 。那麼有:
Corollary 2: 從當前 f 和標籤 α 出發的最佳 α expansion f^=fC ,其中 C 是圖 Gα 上的最小割。

總結

整個系統的目的就是最小化能量 E ,我們控制的輸入變量是標記函數 f 。算法就是在當前輸入下找到下一步所能達到的最小值,然後移動,如此循環,直至下一步找不到更小的能量值了。
Fast Approximate Energy Minimization via Graph Cuts 文中提出的兩個算法都能同時改變大範圍像素集的標號;而其它的標準算法一般用微小的移動,一次僅能改變一個像素的標號。
算法可以類比於梯度下降法:在操作空間的每一個 f 點,存在很多的優化方向簇,每對(個)標籤形成一個 swap(expansion) 優化方向簇,在一個優化方向簇中存在很多的優化方向也就是具體的哪些像素進行 swap(expansion),通過圖割的方法我們找到並移動到當前最優點,檢查下一個優化方向簇。最後算法在操作空間的某個點的所有優化方向簇內都找不到更好的移動點時,算法結束,得到一個可控的局部極小值。
基本的圖割方法一般用來解決兩個標籤的問題,而在這篇文章作者中通過巧妙的構造網絡,每次進行兩個標籤—{α,β}{α,α¯} 間的移動,漂亮地解決了問題。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章