FCN & CRF 論文筆記
原文連結:https://www.jianshu.com/p/434b3e22a47e
本篇文章涉及4篇論文分別是
Efficient Inference in Fully Connected CRFs with Gaussian Edge Potentials
Conditional Random Fields as Recurrent Neural Networks
SEMANTIC IMAGE SEGMENTATION WITH DEEP CON-VOLUTIONAL NETS AND FULLY CONNECTED CRFS
FULLY CONVOLUTIONAL MULTI-CLASS MULTIPLE
INSTANCE LEARNING
Weakly-_and_Semi-Supervised_Learning_of_a_Deep_Convolutional_Network_for
第一篇是介紹CRF在分割圖片區域的演算法(Mean Field)
第二篇是在VOC2012上排在前排的一個模型,它的特點是在fcn-8s的後面新增CRF層,與普通的演算法不同的是,CRFasRNN模型會把Mean Field演算法嵌入在網路層中,進行EndToEnd的訓練(雖然效果並不是那麼理想)
第三篇和第四篇是同一個演算法,第三篇介紹是FCN-8S+CRF的調參大法,第四篇則是利用弱標籤生成更多的訓練資料,以優化網路引數。
CRF
CRF stands for Condition Random Field.
我們由於篇幅限制,在此處不過多討論CRF的普遍的數學意義。我們簡要地介紹CRF在圖片區域分割的作用。
直觀上的圖片分割
我們使用Photoshop的魔術棒摳圖作為例子。
實際上兩個物體在邊界的附近會有很明顯的分別。這個“分別”表現為RGB值不平滑地變化。
PS前
PS後
CRF和最大熵
此處引入部分必要的數學公式。原文:
derivation1.png
derivation2.png
簡而言之就是考慮以下的條件,以達到最小的Loss(最大熵)
- 從fcn-8s生成的每個點屬於每一個類的概率。
- 相近且相似的點是否屬於同一類,若屬於同一類則penalty比較小,若不屬於同一類則penalty比較大。
用公示表達則為:
Formula1
僅僅考慮1.的話就是裸的fcn-8s演算法。我們來解釋一下2.
考慮下圖:
High Penalty
很明顯,在瓶身的部分,綠色邊界的兩邊RGB值是平滑的。而瓶子和白色背景部分RGB值不平滑。
在平滑的部分若存在區域與區域的切分,則會產生很高的loss
在不平滑的部分若不存在區域與區域的切分,則會產生很高的loss
比起上圖,下圖的loss會更低:
Low Penalty
用公示表達則為:
CRF Kernel
Mean Field Iteration
第一篇論文介紹了一種類似於Flood Fill和遺傳演算法的演算法來求這個分割,這個演算法叫做Mean Field。
這個演算法的過程如下:
Mean Field Formula 1
Mean Field Formula 2
整個過程分成4步:
- Initialize: 首先從fcn-8s生成一個很粗糙的分割(如下圖中虛線部分)
- Message Passing. 傳遞相鄰畫素label之間的互相影響的關係。我們之前定義過k(fi, fj)的意義:
在平滑的部分若存在區域與區域的切分,則會產生很高的loss
在不平滑的部分若不存在區域與區域的切分,則會產生很高的loss
也就是說這種Message Passing會很難穿過不平滑的部分(下圖中實線的部分),所以label會像flood fill那樣填充(如下圖箭頭方向) - Compatibility Transform. 此部分是均衡一下各種二元關係之間的係數(Appearance Kernel & Smoothness Kernel)
- Local Update. 更新權值。輸出結果或者將Update後的dense label map作為新的Q進行新的一輪Iteration。
Mean Field Iteration Direction
CRF as RNN
這個Model在PASCAL VOC2012達到了65.2%IOU
這個Model先將訓練好的fcn-8s,在後面新增自己寫的Caffe層,用類似於Conv的操作模擬Mean Field的四部,並且實現了back propagation以達到end-to-end的訓練。具體實現細節可以參照論文中所給的程式碼。
DeepLab
DeepLab是Google搞出來的一個model,在VOC上的排名要比CRF as RNN的效果好。文中還提出了很多非常多inspirational point.
結構
- 加速運算
和普通的FCN-8s相同,DeepLab保留了VGG16前5層的結構,唯一和FCN-8s不同的地方在於FC層:
derivation3.png
derivation4.png
其實這僅僅是在不很降低結果的準確性的情況下將計算的瓶頸砍掉FC層並沒有提高準確率。
- Multi-Scale PREDICTION
這一部分DeepLab使用了比FCN-8S更激進的做法,在每一層Pooling之後都添加了一個分支層,再把各層的結果連線起來(FCN-8S是相加):
derivation4.png
但如文中所說,位置資訊提取度並沒有CRF那麼厲害。
- View Of Field (atrous algorithm)
這個部分主要還是解決由於subsample導致的
主要還是解決由於subsample導致的。由於subsample的原因(stride > 1的所有layer都算subsample)圖片的大小和比例會被弄壞。DeepLab介紹了一種辦法,在每一個subsample後在畫素與畫素之間補0,這樣大小就不會偏離太多。
"We skip subsampling afterthe last two max-pooling layers in the network of Simonyan & Zisserman (2014) and modify theconvolutional filters in the layers that follow them by introducing zeros to increase their length (2⇥inthe last three convolutional layers and 4⇥in the first fully connected layer). We can implement this more efficiently by keeping the filters intact and instead sparsely sample the feature maps on whichthey are applied on using an input stride of 2 or 4 pixels, respectively. This approach, illustratedin Fig. 1 is known as the ‘hole algorithm’ (‘atrous algorithm’) and has been developed before forefficient computation of the undecimated wavelet transform (Mallat, 1999). We have implementedthis within the Caffe framework (Jia et al., 2014) by adding to the im2col function (it converts multi-channel feature maps to vectorized patches) the option to sparsely sample the underlying featuremap. This approach is generally applicable and allows us to efficiently compute dense CNN featuremaps at any target subsampling rate without introducing any approximations."
Hole Algorithm
Semi Weak Annotation
最後一篇文章則是介紹怎麼使用弱監督的資訊(圖片級label和框級label)來進行畫素級語義分割。
Bound Boxes Annotation
label僅僅含有圈出物體並指出此物體是什麼的資訊
Image-level Annotation
label僅含有此圖片中有什麼物體
最後一篇文章中介紹的3種關於此類弱監督資料集的方法
Model Training Using Bounding Box WeakAnnotations
bounding box weak annotations
pre-processing
簡單來說首先先將bounding box裡的畫素點全部填充為該物體的label(如果同時屬於多個box則選擇大小小的box)。然後使用CRF過程把圖片的進行細分(Bbox-Baseling -> Bbox-Seg)
再把最終輸出的圖片作為監督學習的結果給DCNN進行學習。
Model Training Using Weak Image-Level Labels
在倒數第二篇論文中有介紹到一種叫做MIL的方法,能夠從Image-level的資料讓DCNN學習如何畫素級分割。DeepLab在這個基礎上使用了一個前景/背景的方案使得這個輸出更精準。同時讓這個結果反過來訓練神經網路。
FG/BG Bias
Semi-Supervised Model Training Using Both Fullyand Weakly Annotated Images
如果理解了之前的方法看懂下面這個應該不難。這個方法的目的是在我們有少量強label資料但不充足,但我們有大量的弱監督的資料集,如何增強我們的網路。
Both
訓練結果
result1
result2
result3
result4
作者:voidrank
連結:https://www.jianshu.com/p/434b3e22a47e
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯絡作者獲得授權並註明出處。