<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          基于深度學(xué)習(xí)方法的圖像分割

          共 8039字,需瀏覽 17分鐘

           ·

          2021-01-15 11:54


          點擊上方小白學(xué)視覺”,選擇加"星標(biāo)"或“置頂

          重磅干貨,第一時間送達


          轉(zhuǎn)自|深藍學(xué)院

          CNN圖像語義分割基本上是這個套路:

          1. 下采樣+上采樣:Convlution + Deconvlution/Resize
          2. 多尺度特征融合:特征逐點相加/特征channel維度拼接
          3. 獲得像素級別的segement map:對每一個像素點進行判斷類別
          即使是更復(fù)雜的DeepLab v3+依然也是這個基本套路。
          圖13 DeepLab v3+

          Image Segmentation

          (圖像分割)網(wǎng)絡(luò)結(jié)構(gòu)比較

          FCNImage Segmentation

          (圖像分割)族譜

          • DeepLab
          • DeconvNet
          • SegNet
          • PSPNet
          • Mask-RCNN

          按分割目的劃分

          普通分割

          將不同分屬不同物體的像素區(qū)域分開。?
          如前景與后景分割開,狗的區(qū)域與貓的區(qū)域與背景分割開。

          語義分割

          在普通分割的基礎(chǔ)上,分類出每一塊區(qū)域的語義(即這塊區(qū)域是什么物體)。?
          如把畫面中的所有物體都指出它們各自的類別。

          實例分割

          在語義分割的基礎(chǔ)上,給每個物體編號。?
          如這個是該畫面中的狗A,那個是畫面中的狗B。

          論文推薦

          圖像的語義分割(Semantic Segmentation)是計算機視覺中非常重要的任務(wù)。它的目標(biāo)是為圖像中的每個像素分類。如果能夠快速準(zhǔn)去地做圖像分割,很多問題將會迎刃而解。因此,它的應(yīng)用領(lǐng)域就包括但不限于:自動駕駛、圖像美化、三維重建等等。
          語義分割是一個非常困難的問題,尤其是在深度學(xué)習(xí)之前。深度學(xué)習(xí)使得圖像分割的準(zhǔn)確率提高了很多,下面我們就總結(jié)一下近年來最具有代表性的方法和論文。

          Fully Convolutional Networks (FCN)

          我們介紹的第一篇論文是Fully Convolutional Networks for Semantic Segmentation,簡稱FCN。
          這篇論文是第一篇成功使用深度學(xué)習(xí)做圖像語義分割的論文。論文的主要貢獻有兩點:
          提出了全卷積網(wǎng)絡(luò)。將全連接網(wǎng)絡(luò)替換成了卷積網(wǎng)絡(luò),使得網(wǎng)絡(luò)可以接受任意大小的圖片,并輸出和原圖一樣大小的分割圖。只有這樣,才能為每個像素做分類。
          使用了反卷積層(Deconvolution)。分類神經(jīng)網(wǎng)絡(luò)的特征圖一般只有原圖的幾分之一大小。想要映射回原圖大小必須對特征圖進行上采樣,這就是反卷積層的作用。
          雖然名字叫反卷積層,但其實它并不是卷積的逆操作,更合適的名字叫做轉(zhuǎn)置卷積(Transposed Convolution),作用是從小的特征圖卷出大的特征圖。
          這是神經(jīng)網(wǎng)絡(luò)做語義分割的開山之作,需徹底理解。

          DeepLab

          DeepLab有v1 v2 v3,第一篇名字叫做DeepLab: Semantic Image Segmentation with Deep Convolutional Nets, Atrous Convolution, and Fully Connected CRFs。
          這一系列論文引入了以下幾點比較重要的方法:
          第一個是帶洞卷積,英文名叫做Dilated Convolution,或者Atrous Convolution。帶洞卷積實際上就是普通的卷積核中間插入了幾個洞,如下圖。

          它的運算量跟普通卷積保持一樣,好處是它的“視野更大了”,比如普通3x3卷積的結(jié)果的視野是3x3,插入一個洞之后的視野是5x5。視野變大的作用是,在特征圖縮小到同樣倍數(shù)的情況下可以掌握更多圖像的全局信息,這在語義分割中很重要。

          Pyramid Scene Parsing Network

          Pyramid Scene Parsing Network的核心貢獻是Global Pyramid Pooling,翻譯成中文叫做全局金字塔池化。它將特征圖縮放到幾個不同的尺寸,使得特征具有更好地全局和多尺度信息,這一點在準(zhǔn)確率提升上上非常有用。
          其實不光是語義分割,金字塔多尺度特征對于各類視覺問題都是挺有用的。

          Mask R-CNN

          Mask R-CNN是大神何凱明的力作,將Object Detection與Semantic Segmentation合在了一起做。它的貢獻主要是以下幾點。
          第一,神經(jīng)網(wǎng)絡(luò)有了多個分支輸出。Mask R-CNN使用類似Faster R-CNN的框架,F(xiàn)aster R-CNN的輸出是物體的bounding box和類別,而Mask R-CNN則多了一個分支,用來預(yù)測物體的語義分割圖。
          也就是說神經(jīng)網(wǎng)絡(luò)同時學(xué)習(xí)兩項任務(wù),可以互相促進。
          第二,在語義分割中使用Binary Mask。原來的語義分割預(yù)測類別需要使用0 1 2 3 4等數(shù)字代表各個類別。在Mask R-CNN中,檢測分支會預(yù)測類別。這時候分割只需要用0 1預(yù)測這個物體的形狀面具就行了。
          第三,Mask R-CNN提出了RoiAlign用來替換Faster R-CNN中的RoiPooling。RoiPooling的思想是將輸入圖像中任意一塊區(qū)域?qū)?yīng)到神經(jīng)網(wǎng)絡(luò)特征圖中的對應(yīng)區(qū)域。
          RoiPooling使用了化整的近似來尋找對應(yīng)區(qū)域,導(dǎo)致對應(yīng)關(guān)系與實際情況有偏移。這個偏移在分類任務(wù)中可以容忍,但對于精細度更高的分割則影響較大。
          為了解決這個問題,RoiAlign不再使用化整操作,而是使用線性插值來尋找更精準(zhǔn)的對應(yīng)區(qū)域。效果就是可以得到更好地對應(yīng)。
          實驗也證明了效果不錯。下面展示了與之前方法的對比,下面的圖是Mask R-CNN,可以看出精細了很多。
          U-Net
          U-Net是原作者參加ISBI Challenge提出的一種分割網(wǎng)絡(luò),能夠適應(yīng)很小的訓(xùn)練集(大約30張圖)。U-Net與FCN都是很小的分割網(wǎng)絡(luò),既沒有使用空洞卷積,也沒有后接CRF,結(jié)構(gòu)簡單。
          圖9 U-Net網(wǎng)絡(luò)結(jié)構(gòu)圖
          整個U-Net網(wǎng)絡(luò)結(jié)構(gòu)如圖9,類似于一個大大的U字母:首先進行Conv+Pooling下采樣;然后Deconv反卷積進行上采樣,crop之前的低層feature map,進行融合;然后再次上采樣。
          重復(fù)這個過程,直到獲得輸出388x388x2的feature map,最后經(jīng)過softmax獲得output segment map??傮w來說與FCN思路非常類似。

          為何要提起U-Net?

          是因為U-Net采用了與FCN完全不同的特征融合方式:拼接!
          圖10 U-Net concat特征融合方式
          與FCN逐點相加不同,U-Net采用將特征在channel維度拼接在一起,形成更“厚”的特征。
          所以語義分割網(wǎng)絡(luò)在特征融合時也有2種辦法:

          1. FCN式的逐點相加,對應(yīng)caffe的EltwiseLayer層,對應(yīng)tensorflow的tf.add()

          2. U-Net式的channel維度拼接融合,對應(yīng)caffe的ConcatLayer層,對應(yīng)tensorflow的tf.concat()

          綜述介紹

          ?圖像語義分割,簡單而言就是給定一張圖片,對圖片上的每一個像素點分類

          從圖像上來看,就是我們需要將實際的場景圖分割成下面的分割圖:
          不同顏色代表不同類別。經(jīng)過閱讀“大量”論文和查看 PASCAL VOC Challenge performance evaluation server,發(fā)現(xiàn)圖像語義分割從深度學(xué)習(xí)引入這個任務(wù)(FCN)到現(xiàn)在而言,一個通用的框架已經(jīng)大概確定了。即:
          • FCN-全卷積網(wǎng)絡(luò)

          • CRF-條件隨機場

          • MRF-馬爾科夫隨機場

          前端使用FCN進行特征粗提取,后端使用CRF/MRF優(yōu)化前端的輸出,最后得到分割圖。

          前端

          為什么需要FCN?

          我們分類使用的網(wǎng)絡(luò)通常會在最后連接幾層全連接層,它會將原來二維的矩陣(圖片)壓扁成一維的,從而丟失了空間信息,最后訓(xùn)練輸出一個標(biāo)量,這就是我們的分類標(biāo)簽。
          而圖像語義分割的輸出需要是個分割圖,且不論尺寸大小,但是至少是二維的。
          所以,我們需要丟棄全連接層,換上全卷積層,而這就是全卷積網(wǎng)絡(luò)了。

          具體定義請參看論文:

          Fully Convolutional Networks for Semantic Segmentation

          前端結(jié)構(gòu)

          FCN

          此處的FCN特指Fully Convolutional Networks for Semantic Segmentation論文中提出的結(jié)構(gòu),而非廣義的全卷積網(wǎng)絡(luò)。
          作者的FCN主要使用了三種技術(shù):
          • 卷積化(Convolutional)

          • 上采樣(Upsample)

          • 跳躍結(jié)構(gòu)(Skip Layer)

          卷積化
          卷積化即是將普通的分類網(wǎng)絡(luò),比如VGG16,ResNet50/101等網(wǎng)絡(luò)丟棄全連接層,換上對應(yīng)的卷積層即可。
          上采樣
          此處的上采樣即是反卷積(Deconvolution)。當(dāng)然關(guān)于這個名字不同框架不同,Caffe和Kera里叫Deconvolution,而tensorflow里叫conv_transpose。
          CS231n這門課中說,叫conv_transpose更為合適。
          眾所諸知,普通的池化(為什么這兒是普通的池化請看后文)會縮小圖片的尺寸,比如VGG16 五次池化后圖片被縮小了32倍。為了得到和原圖等大的分割圖,我們需要上采樣/反卷積。
          反卷積和卷積類似,都是相乘相加的運算。只不過后者是多對一,前者是一對多。而反卷積的前向和后向傳播,只用顛倒卷積的前后向傳播即可。
          所以無論優(yōu)化還是后向傳播算法都是沒有問題。圖解如下:
          ?
          但是,雖然文中說是可學(xué)習(xí)的反卷積,但是作者實際代碼并沒有讓它學(xué)習(xí),可能正是因為這個一對多的邏輯關(guān)系。代碼如下:
          layer { name: "upscore" type: "Deconvolution" bottom: "score_fr" top: "upscore" param { lr_mult: 0 } convolution_param { num_output: 21 bias_term: false kernel_size: 64 stride: 32 }}


          可以看到lr_mult被設(shè)置為了0.
          跳躍結(jié)構(gòu)
          (這個奇怪的名字是我翻譯的,好像一般叫忽略連接結(jié)構(gòu))這個結(jié)構(gòu)的作用就在于優(yōu)化結(jié)果,因為如果將全卷積之后的結(jié)果直接上采樣得到的結(jié)果是很粗糙的,所以作者將不同池化層的結(jié)果進行上采樣之后來優(yōu)化輸出。具體結(jié)構(gòu)如下:

          而不同上采樣結(jié)構(gòu)得到的結(jié)果對比如下:

          當(dāng)然,你也可以將pool1, pool2的輸出再上采樣輸出。不過,作者說了這樣得到的結(jié)果提升并不大。
          這是第一種結(jié)構(gòu),也是深度學(xué)習(xí)應(yīng)用于圖像語義分割的開山之作,所以得了CVPR2015的最佳論文。但是,還是有一些處理比較粗糙的地方,具體和后面對比就知道了。

          SegNet/DeconvNet

          這樣的結(jié)構(gòu)總結(jié)在這兒,只是我覺得結(jié)構(gòu)上比較優(yōu)雅,它得到的結(jié)果不一定比上一種好。
          SegNet
          ?DeconvNet
          ?
          這樣的對稱結(jié)構(gòu)有種自編碼器的感覺在里面,先編碼再解碼。這樣的結(jié)構(gòu)主要使用了反卷積和上池化。即:
          ??
          反卷積如上。而上池化的實現(xiàn)主要在于池化時記住輸出值的位置,在上池化時再將這個值填回原來的位置,其他位置填0即OK。
          DeepLab
          接下來介紹一個很成熟優(yōu)雅的結(jié)構(gòu),以至于現(xiàn)在的很多改進是基于這個網(wǎng)絡(luò)結(jié)構(gòu)的進行的。
          首先這里我們將指出一個第一個結(jié)構(gòu)FCN的粗糙之處:為了保證之后輸出的尺寸不至于太小,F(xiàn)CN的作者在第一層直接對原圖加了100的padding,可想而知,這會引入噪聲。
          而怎樣才能保證輸出的尺寸不會太小而又不會產(chǎn)生加100 padding這樣的做法呢?
          可能有人會說減少池化層不就行了,這樣理論上是可以的,但是這樣直接就改變了原先可用的結(jié)構(gòu)了,而且最重要的一點是就不能用以前的結(jié)構(gòu)參數(shù)進行fine-tune了。
          所以,Deeplab這里使用了一個非常優(yōu)雅的做法:將pooling的stride改為1,再加上 1 padding。這樣池化后的圖片尺寸并未減小,并且依然保留了池化整合特征的特性。
          但是,事情還沒完。因為池化層變了,后面的卷積的感受野也對應(yīng)的改變了,這樣也不能進行fine-tune了。所以,Deeplab提出了一種新的卷積,帶孔的卷積:Atrous Convolution.即:

          ?而具體的感受野變化如下:

          a為普通的池化的結(jié)果,b為“優(yōu)雅”池化的結(jié)果。我們設(shè)想在a上進行卷積核尺寸為3的普通卷積,則對應(yīng)的感受野大小為7.而在b上進行同樣的操作,對應(yīng)的感受野變?yōu)榱?.感受野減小了。

          但是如果使用hole為1的Atrous Convolution則感受野依然為7.

          所以,Atrous Convolution能夠保證這樣的池化后的感受野不變,從而可以fine tune,同時也能保證輸出的結(jié)果更加精細。即:
          總結(jié)
          這里介紹了三種結(jié)構(gòu):FCN, SegNet/DeconvNet,DeepLab。當(dāng)然還有一些其他的結(jié)構(gòu)方法,比如有用RNN來做的,還有更有實際意義的weakly-supervised方法等等。
          后端
          終于到后端了,后端這里會講幾個場,涉及到一些數(shù)學(xué)的東西。我的理解也不是特別深刻,所以歡迎吐槽。
          全連接條件隨機場(DenseCRF)
          對于每個像素具有類別標(biāo)簽還有對應(yīng)的觀測值,這樣每個像素點作為節(jié)點,像素與像素間的關(guān)系作為邊,即構(gòu)成了一個條件隨機場。
          而且我們通過觀測變量來推測像素對應(yīng)的類別標(biāo)簽。條件隨機場如下:
          ?
          條件隨機場符合吉布斯分布:(此處的即上面說的觀測值)
          其中的是能量函數(shù),為了簡便,以下省略全局觀測
          其中的一元勢函數(shù)即來自于前端FCN的輸出。而二元勢函數(shù)如下:
          二元勢函數(shù)就是描述像素點與像素點之間的關(guān)系,鼓勵相似像素分配相同的標(biāo)簽,而相差較大的像素分配不同標(biāo)簽,而這個“距離”的定義與顏色值和實際相對距離有關(guān)。
          所以這樣CRF能夠使圖片盡量在邊界處分割。
          而全連接條件隨機場的不同就在于,二元勢函數(shù)描述的是每一個像素與其他所有像素的關(guān)系,所以叫“全連接”。
          關(guān)于這一堆公式大家隨意理解一下吧... ...而直接計算這些公式是比較麻煩的(我想也麻煩),所以一般會使用平均場近似方法進行計算。
          而平均場近似又是一堆公式,這里我就不給出了(我想大家也不太愿意看),愿意了解的同學(xué)直接看論文吧。
          CRFasRNN
          最開始使用DenseCRF是直接加在FCN的輸出后面,可想這樣是比較粗糙的。
          而且在深度學(xué)習(xí)中,我們都追求end-to-end的系統(tǒng),所以CRFasRNN這篇文章將DenseCRF真正結(jié)合進了FCN中。
          這篇文章也使用了平均場近似的方法,因為分解的每一步都是一些相乘相加的計算,和普通的加減(具體公式還是看論文吧),所以可以方便的把每一步描述成一層類似卷積的計算。
          這樣即可結(jié)合進神經(jīng)網(wǎng)絡(luò)中,并且前后向傳播也不存在問題。
          當(dāng)然,這里作者還將它進行了迭代,不同次數(shù)的迭代得到的結(jié)果優(yōu)化程度也不同(一般取10以內(nèi)的迭代次數(shù)),所以文章才說是as RNN。
          優(yōu)化結(jié)果如下:

          馬爾科夫隨機場(MRF)
          在Deep Parsing Network中使用的是MRF,它的公式具體的定義和CRF類似,只不過作者對二元勢函數(shù)進行了修改:
          其中,作者加入的為label context,因為只是定義了兩個像素同時出現(xiàn)的頻率,而可以對一些情況進行懲罰,比如,人可能在桌子旁邊,但是在桌子下面的可能性就更小一些。
          所以這個量可以學(xué)習(xí)不同情況出現(xiàn)的概率。而原來的距離只定義了兩個像素間的關(guān)系,作者在這兒加入了個triple penalty,即還引入了附近的,這樣描述三方關(guān)系便于得到更充足的局部上下文。具體結(jié)構(gòu)如下:

          ?這個結(jié)構(gòu)的優(yōu)點在于:

          • 將平均場構(gòu)造成了CNN

          • 聯(lián)合訓(xùn)練并且可以one-pass inference,而不用迭代

          高斯條件隨機場(G-CRF)
          這個結(jié)構(gòu)使用CNN分別來學(xué)習(xí)一元勢函數(shù)和二元勢函數(shù)。這樣的結(jié)構(gòu)是我們更喜歡的:
          而此中的能量函數(shù)又不同于之前:
          而當(dāng)是對稱正定時,求的最小值等于求解:
          而G-CRF的優(yōu)點在于:
          • 二次能量有明確全局

          • 解線性簡便很多?

          感悟
          FCN更像一種技巧。隨著基本網(wǎng)絡(luò)(如VGG, ResNet)性能的提升而不斷進步。
          深度學(xué)習(xí)+概率圖模型(PGM)是一種趨勢。其實DL說白了就是進行特征提取,而PGM能夠從數(shù)學(xué)理論很好的解釋事物本質(zhì)間的聯(lián)系。
          概率圖模型的網(wǎng)絡(luò)化。因為PGM通常不太方便加入DL的模型中,將PGM網(wǎng)絡(luò)化后能夠是PGM參數(shù)自學(xué)習(xí),同時構(gòu)成end-to-end的系統(tǒng)。
          引用
          [1]Fully Convolutional Networks for Semantic Segmentation
          [2]Learning Deconvolution Network for Semantic Segmentation
          [3]Efficient Inference in Fully Connected CRFs with Gaussian Edge Potentials
          [4]Semantic Image Segmentation with Deep Convolutional Nets and Fully Connected CRFs
          [5]Conditional Random Fields as Recurrent Neural Networks
          [6]DeepLab: Semantic Image Segmentation with Deep Convolutional Nets, Atrous Convolution, and Fully Connected CRFs
          [7]Semantic Image Segmentation via Deep Parsing Network
          [8]Fast, Exact and Multi-Scale Inference for Semantic Image Segmentation with Deep Gaussian CRFs
          [9]SegNet

          作者? |?AiguoFu@CSDN?

          來源
          https://blog.csdn.net/weixin_41923961/article/details/80946586
          下載1:OpenCV-Contrib擴展模塊中文版教程
          在「小白學(xué)視覺」公眾號后臺回復(fù):擴展模塊中文教程,即可下載全網(wǎng)第一份OpenCV擴展模塊教程中文版,涵蓋擴展模塊安裝、SFM算法、立體視覺、目標(biāo)跟蹤、生物視覺、超分辨率處理等二十多章內(nèi)容。

          下載2:Python視覺實戰(zhàn)項目31講
          小白學(xué)視覺公眾號后臺回復(fù):Python視覺實戰(zhàn)項目31講,即可下載包括圖像分割、口罩檢測、車道線檢測、車輛計數(shù)、添加眼線、車牌識別、字符識別、情緒檢測、文本內(nèi)容提取、面部識別等31個視覺實戰(zhàn)項目,助力快速學(xué)校計算機視覺。

          下載3:OpenCV實戰(zhàn)項目20講
          小白學(xué)視覺公眾號后臺回復(fù):OpenCV實戰(zhàn)項目20講,即可下載含有20個基于OpenCV實現(xiàn)20個實戰(zhàn)項目,實現(xiàn)OpenCV學(xué)習(xí)進階。

          下載4:leetcode算法開源書
          小白學(xué)視覺公眾號后臺回復(fù):leetcode即可下載。每題都 runtime beats 100% 的開源好書,你值得擁有!





          交流群


          歡迎加入公眾號讀者群一起和同行交流,目前有SLAM、三維視覺、傳感器、自動駕駛、計算攝影、檢測、分割、識別、醫(yī)學(xué)影像、GAN算法競賽等微信群(以后會逐漸細分),請掃描下面微信號加群,備注:”昵稱+學(xué)校/公司+研究方向“,例如:”張三?+?上海交大?+?視覺SLAM“。請按照格式備注,否則不予通過。添加成功后會根據(jù)研究方向邀請進入相關(guān)微信群。請勿在群內(nèi)發(fā)送廣告,否則會請出群,謝謝理解~


          瀏覽 50
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  奇米影视狠狠 | 一级片在线直播 | 成人18毛片 | 国产精选第一页 | 国产又粗又猛又爽又黄的视频网站 |