matlab 图像语义分割,笔记︱图像语义分割(FCN、CRF、MRF)、论文延伸(Pixel Objectness、)...
圖像語義分割的意思就是機器自動分割并識別出圖像中的內容,我的理解是摳圖…
之前在Faster R-CNN中借用了RPN(region proposal network)選擇候選框,但是僅僅是候選框,那么我想提取候選框里面的內容,就是圖像語義分割了。
簡單的理解就是,圖像的“分詞技術”。
參考文獻:
1、知乎,困獸,關于圖像語義分割的總結和感悟
2、微信公眾號,沈MM的小喇叭,十分鐘看懂圖像語義分割技術
.
.
一、FCN全卷積:Fully Convolutional Networks
一些簡單的名詞,下采樣=卷積+池化(像素縮小),
上采樣=反卷積(像素放大)Caffe和Kera里叫Deconvolution,而tensorflow里叫conv_transpose。CS231n這門課中說,叫conv_transpose更為合適。
卷積與反卷積過程:
池化與上池化:
池化層作用:池化操作能夠減少計算量,同時也能防止計算結果過擬合
上池化作用:上池化的實現主要在于池化時記住輸出值的位置,在上池化時再將這個值填回原來的位置,其他位置填0即OK。
1、反卷積
那么反卷積是一種認識”卷積“是什么的好辦法。反卷積可以在任何卷積層上進行。那么得到的圖像就是一些縮略圖形式。
每一種反卷積的樣子:
可以發現卷積程度越高,32x圖像越模糊,8x跟ground truth還是挺接近的。這里就是感受野(receptive field),8x感受野較小,適合感受細節;32x感受野較大,適合感受宏觀。
.
.
2、“帶hole”的卷積——Dilated Convolutions
簡單的卷積過程有一些問題:精度問題,對細節不敏感,以及像素與像素之間的關系,忽略空間的一致性等問題。那么新卷積方式hole卷積,用hole卷積核取代池化。
Dilated Convolutions:沒有了池化感受野就不會變大,“疏松的卷積核”來處理卷積,可以達到在不增加計算量的情況下增加感受域,彌補不進行池化處理后的精度問題。
操作方式:人為加大了卷積核內部元素之間的距離:
這是水平X軸方向上的擴展,在Y軸上也會有同樣的擴展,感受域在沒有增加計算(相對于池化操作后)的情況下增大了,并且保留了足夠多的細節信息,對圖像還原后的精度有明顯的提升。
.
.
.
3、DenseCRF Conditional Random Field:全連接條件隨機場(DenseCRF)
每個像素點作為節點,像素與像素間的關系作為邊,即構成了一個條件隨機場。
其中:yi:卷積后的值;i:像素;xi:類別標簽
條件隨機場符合吉布斯分布。
在全鏈接的 CRF 模型中,有一個對應的能量函數:
那么E(x)由兩個部分組成,可以簡單理解為:
E(x)=一元函數+二元函數
一元函數:來自于前端FCN的輸出
二元函數:是描述像素點與像素點之間的關系,鼓勵相似像素分配相同的標簽,而相差較大的像素分配不同標簽,而這個“距離”的定義與顏色值和實際相對距離有關。所以這樣CRF能夠使圖片盡量在邊界處分割。
全連接條件隨機場的不同就在于,二元勢函數描述的是每一個像素與其他所有像素的關系,所以叫“全連接”。
通過對這個能量函數優化求解,把明顯不符合事實識別判斷剔除,替換成合理的解釋,得到對FCN的圖像語義預測結果的優化,生成最終的語義分割結果。
4、馬爾科夫隨機場(MRF)
在Deep Parsing Network中使用的是MRF,它的公式具體的定義和CRF類似,只不過作者對二元勢函數進行了修改:
其中,作者加入λk為label context,因為只是定義了兩個像素同時出現的頻率,而λk可以對一些情況進行懲罰。
比如,人可能在桌子旁邊,但是在桌子下面的可能性就更小一些。所以這個量可以學習不同情況出現的概率。
而原來的距離d(i,j)只定義了兩個像素間的關系,作者在這兒加入了個triple penalty,即還引入了j附近的z,這樣描述三方關系便于得到更充足的局部上下文。
5、高斯條件隨機場(G-CRF)
這個結構使用CNN分別來學習一元勢函數和二元勢函數。
.
.
二、一些成型的分割結構
知乎,困獸,關于圖像語義分割的總結和感悟在文中提到通用框架:
前端使用FCN進行特征粗提取,后端使用CRF/MRF優化前端的輸出,最后得到分割圖。
1、“Normalized cut”的圖劃分方法
它的思想主要是通過像素和像素之間的關系權重來綜合考慮,根據給出的閾值,將圖像一分為二。在實際運用中,每運行一次N-cut,只能切割一次圖片,為了分割出圖像上的多個物體,需要多次運行,下圖示例了對原圖a進行7次N-cut后,每次分割出的結果。
2、Grab Cut
增加了人機交互,在分割過程中,需要人工干預參與完成。需要人工選擇主體候選框,然后將中部作為主體參考,然后剔除和主體差異較大的部分,留下結果。
此技術中,摳出來的部分叫“前景”,剔除的部分叫“背景”。缺點也很明顯,首先,它同N-cut一樣也只能做二類語義分割,說人話就是一次只能分割一類,非黑即白,多個目標圖像就要多次運算。其次,它需要人工干預,這個弱點在將來批量化處理和智能時代簡直就是死穴。
3、segNet
4、DeconvNet
這樣的對稱結構有種自編碼器的感覺在里面,先編碼再解碼。這樣的結構主要使用了反卷積和上池化。
5、DeepLab
現在的很多改進是基于這個網絡結構的進行的。
為了保證之后輸出的尺寸不至于太小,FCN的作者在第一層直接對原圖加了100的padding,可想而知,這會引入噪聲。
DeepLab非常優雅的做法:將pooling的stride改為1,再加上 1 padding。這樣池化后的圖片尺寸并未減小,并且依然保留了池化整合特征的特性。
因為池化層變了,后面的卷積的感受野也對應的改變了,這樣也不能進行fine-tune了。所以,Deeplab提出了一種新的卷積,帶孔的卷積:Atrous Convolution.
.
延伸一:Pixel Objectness —— 更好的自動摳圖、圖像檢索、圖像重定向技術
論文《Pixel Objectness》提出了一個用于前景對象分割的端到端學習框架。給定一個單一的新穎圖像,我們的方法為所有“像對象”區域 - 即使對于在訓練期間從未見過的對象類別,產生像素級掩碼。我們將任務制定為使用深完全卷積網絡實現的將前景/背景標簽分配給每個像素的結構化預測問題。
我們的想法的關鍵是采用訓練與圖像級對象類別示例,以及采用相對較少的注釋的邊界級圖像合。我們的方法大大改善了ImageNet和MIT數據集上的前景分割的最先進的水平 - 在某些情況下,有19%的絕對改進。此外,在超過100萬的圖像,我們顯示它很好地歸納到用于訓練的前景地圖中看不見的對象類別。
最后,我們演示了我們的方法如何有利于圖像檢索和圖像重定向,這兩種方法在給定的高質量前景圖的領域將會有好的效果。
總結
以上是生活随笔為你收集整理的matlab 图像语义分割,笔记︱图像语义分割(FCN、CRF、MRF)、论文延伸(Pixel Objectness、)...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 二叉树的相关性质及其前中后层序遍历实现
- 下一篇: C++引入抽象基类和纯虚函数的作用和目的