FCN(3)——DenseCRF

本文收錄在無痛的機器學習第一季。

上一回我們簡單介紹了無向圖模型和CRF的基本概念,下面我們來看看CRF在圖像分割問題上的具體應用。我們簡單回憶一下CRF中的兩個關鍵變數,這時我們需要換一下變數的名稱——我們用I表示圖像的像素信息,也就是觀察變數,我們用X表示圖像中每一個像素的類別,也就是我們想要知道的信息。不過在更多的文檔中,大家喜歡用X表示圖像上的像素,用Z表示我們想求的label。

好了,為了更好地展示我們提到的模型,我們給出一個簡單的圖形:

下面的就是我們建模的過程了,最簡單的建模方式就是每一個像素的類別只和自己所在的像素有關。我們可以用一個簡單的圖來表示:

這個圖看上去比較簡單吧,而且計算也比較簡單。我們可以建一個模型,輸入是一個像素的特徵,輸出是一個像素所代表的類別。那麼這個模型和一般的分類問題沒有太多區別。

不過這樣的效果顯然不好,誰能只通過一個像素就知道這個地方是什麼類別呢?這個模型雖然簡單好解,但是我們一眼就可以看出,它並不是一個高級的模型,所以這個模型pass了。不要問我什麼理由……

下面我們再來一個模型,每一個像素的類別和所有像素的圖像信息有關,這個模型實際上就和FCN的輸出相同,我們可以用下面的圖表示這個模型:

CNN模型雖然很強大,但是CNN模型缺少一個關鍵點,就是每一個像素點類別之間實際上存在著一定關係,也就是我們常說的圖像的平滑性——每一個圖像像素點的類別都有可能和臨近點的類別相近,這個特性是CNN模型所不具有的。所以我們對這個模型也保留意見。

於是我們新鮮出爐的新模型又來了——這一次我們讓每一個像素點的類別和它的4鄰域的類別相關,於是它的模型變成了這個樣子:

這個模型瞬間高大上了許多,我們前面提到的平滑性已經得到了一定的滿足。但是有時候僅僅是這種程度的關聯是不夠的,如果臨近的幾個像素恰好產生了一點波動,不是我們想要的那個樣子,那麼這個像素點的類別就有可能出問題。我們還需要更深層次的關聯。於是乎,傳說中的denseCRF就誕生了。

denseCRF的模型是什麼樣子呢?如下圖所示:

好吧,基本上能連在一起的都連在一起的,我們把模型的複雜程度提到了最高的程度,完全成了一團亂麻了……

Dense CRF

我們看過了它的模型形式,下面直接來看看模型的能量函數表達形式:

E(x)=sum_i psi _u(x_i)+sum_{i<j}psi_p(x_i,x_j)

可以看出每一個像素都有一個unary的函數,也就是說在這個特徵函數里w,剩下的參數都出現在圖像的像我們只考慮當前像素的類別,而暫時不考慮別的像素的類別信息。

而後面的pairwise函數里,每一個像素的類別都和其他像素計算一個energy feature。於是就有了上面的公式形式。注意這裡的能量函數是所有像素點的聯合能量和不是某一個像素點的能量,所以後面的pairwise項,我們有n(n-1)/2組特徵,總的來說,特徵數量是像素數量的平方級別,如果我們有一張100萬像素的圖片,那麼我們就會建立4950億組pairwise特徵。正是因為這種複雜的形式,所以這個模型被稱作Dense CRF。滿滿的全是dense啊!

關於unary函數的內容,我們可以盡情發揮,在denseCRF中我們並沒有對這一部分做詳細的限制。因此關於這部分我們就暫時略去不談了,在後面的文章中我們會重新回來,挖掘unary函數的潛力。下面我們專註於解決pairwise這個大坑。

下面我們講piarwise部分展開,其中

psi_p(x_i,x_j)=mu(x_i,x_j)sum_{m=1}^Kw^{(m)}k^{(m)}(f_i,f_j)

可以看出,pairwise函數中還是比較複雜的,我們從左往右以此介紹。

首先是mu(x_i,x_j),這一項被稱作label compatibility項,簡單來說這裡約束了「力」傳導的條件,只有相同label條件下,能量才可以相互傳導。具體來說,「一個像素可能是飛機」的能量可以和「另一個像素可能是飛機」的能量相互傳導,從而增加或者減少後者「可能是飛機」的能量,從而影響「可能是飛機」的概率,而「一個像素可能是飛機」的能量是不能影響「另一個像素是人」的概率的。

文章中也提到了,這個簡單地一刀切似乎有點不人性。拿Pascal-VOC中的20類+背景類來說,有些類別之間的相似性是很強的,而另外一些類別則完全不相似,所以作者後面提到了一些學習相關的事情,這裡我們就不再深入下去了。

加和項裡面就是經典的權重*feature的套路了,其中

k^{(m)}(f_i,f_j)=w^{(1)}exp(-frac{|p_i-p_j|^2}{2theta_{alpha}^2}-frac{|I_i-I_j|^2}{2theta_{beta}^2})+w^{(2)}exp(-frac{|p_i-p_j|^2}{2theta_{gamma}^2})

這一項以特徵的形式表示了不同像素之前的「親密度」。前面我們提到了特徵不同於tabular形式的factor,我們看不到表格,只能看到公式。上面的公式中,第一項被稱作appearance kernel,第二項被稱作smooth kernel。這裡面有很多變數,我們一一來看。

appearance kernel裡面的p表示像素的位置——position,我們的圖像是2維的,那麼position就有2維。I表示圖像的像素值——Intensity,我們的圖像是彩色的,那麼Intensity就有3維。分式下面的兩個參數無論從位置還是長相都像高斯分布中的方差,這裡的含義也差不多的。

於是乎我們可以看出,如果兩個像素距離近且顏色近,那麼這個feature特徵就會很強,反之則不強。同時分母也控制了強弱性,分母越大越難強起來。其實這一項和圖像處理中的bilateral filter很像。我們相當於在一個5維的空間內尋找相近的像素對並給予它們的特徵加強。

看完了前面一項,在看後面那一項就不會覺得太難。大家照著上面那一段話自行分析吧。

好了,到這裡我們就交代完DenseCRF的表達形式了,下面就要進入Mean field variational inference的環節了。

廣告時間

更多精彩盡在《深度學習輕鬆學:核心演算法與視覺實踐》!

私貨時間2

恭喜川普大大!


推薦閱讀:

FCN(6)——從CRF到RNN
HMM MEMM CRF

TAG:机器学习 | 深度学习DeepLearning | 概率图模型 |