日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

SegNet 语义分割网络以及其变体 基于贝叶斯后验推断的 SegNet

發布時間:2025/3/15 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SegNet 语义分割网络以及其变体 基于贝叶斯后验推断的 SegNet 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

HomePage:?http://mi.eng.cam.ac.uk/projects/segnet/

SegNet Paper:?https://www.computer.org/csdl/trans/tp/2017/12/07803544.html

Dropout as ?Bayesian Paper:?http://mlg.eng.cam.ac.uk/yarin/PDFs/NIPS_2015_deep_learning_uncertainty.pdf

首先看一下Fate_fjh博主親自測試的實驗結果:


(Fate_fjh測試結果)

SegNet基于FCN,修改VGG-16網絡得到的語義分割網絡,有兩種SegNet,分別為正常版與貝葉斯版,同時SegNet作者根據網絡的深度提供了一個basic版(淺網絡)。

1. SegNet原始網絡模型


圖一:SegNet網絡模型

SegNet網絡結構如上所示,Input為輸入圖片,Output為輸出分割的語義圖像,不同顏色代表不同的分類。語義分割的重要性就在于不僅告訴你圖片中某個東西是什么,而且告知它在圖片的位置。SegNet是一個對稱網絡,由中間綠色pooling層與紅色upsampling層作為分割,左邊是卷積提取高維特征,并通過pooling使圖片變小,SegNet作者稱為Encoder,右邊是反卷積(在這里反卷積與卷積沒有區別)與upsampling,通過反卷積使得圖像分類后特征得以重現,upsampling使圖像變大,SegNet作者稱為Decoder,最后通過Softmax,輸出不同分類的最大值,這就是大致的SegNet過程。

1.1 關于卷積

SegNet的Encoder過程中,卷積的作用是提取特征,SegNet使用的卷積為same卷積,即卷積后不改變圖片大小;在Decoder過程中,同樣使用same卷積,不過卷積的作用是為upsampling變大的圖像豐富信息,使得在Pooling過程丟失的信息可以通過學習在Decoder得到。SegNet中的卷積與傳統CNN的卷積并沒有區別。

1.2 關于批量歸一化

批標準化的主要作用在于加快學習速度,用于激活函數前,在SegNet中每個卷積層都會加上一個bn層,bn層后面為ReLU激活層,bn層的作用過程可以歸納為:?
(1)訓練時:?
? ? 1.向前傳播,bn層對卷積后的特征值(權值)進行標準化,但是輸出不變,即bn層只保存輸入權值的均值與方差,權值輸出回到卷積層時仍然是當初卷積后的權值。?
? ? 2.向后傳播,根據bn層中的均值與方差,結合每個卷積層與ReLU層進行鏈式求導,求得梯度從而計算出當前的學習速率。?

(2)測試時:每個bn層對訓練集中的所有數據,求取總體的均值與方差,假設有一測試圖像進入bn層,需要統計輸入權值的均值與方差,然后根據訓練集中整體的無偏估計計算bn層的輸出。注意,測試時,bn層已經改變卷積的權值,所以激活層ReLU的輸入也被改變。

1.3 關于下采樣與上采樣的巧妙設計


圖二: 2x2-最大池化原理


圖三: SegNet中基于索引的下采樣與上采樣的實現

在SegNet中的Pooling與其他Pooling多了一個index功能,也就是每次Pooling,都會保存通過max選出的權值在2x2 filter中的相對位置,對于圖二的6來說,6在粉色2x2 filter中的位置為(1,1),黃色的3的index為(0,0)。同時,從圖一可以看到綠色的pooling與紅色的upsampling通過pool indices相連,實際上是pooling后的indices輸出到對應的upsampling。?

Upsamping就是Pooling的逆過程,Upsamping使得圖片變大2倍。我們清楚的知道Pooling之后,每個filter會丟失了3個權重,這些權重是無法復原的,但是在Upsamping層中可以得到在Pooling中相對Pooling filter的位置。所以Upsampling中先對輸入的特征圖放大兩倍,然后把輸入特征圖的數據根據Pooling indices放入,如圖三所示,Unpooling對應上述的Upsampling,switch variables對應Pooling indices。

從圖三中右邊的Upsampling可以知道,2x2的輸入,變成4x4的圖,但是除了被記住位置的Pooling indices,其他位置的權值為0,因為數據已經被pooling掉了。因此,SegNet使用的反卷積在這里用于填充缺失的內容(可以理解為解碼過程學習金標準信息),所以在圖一中跟隨Upsampling層后面的是也是卷積層。

1.4 關于Softmax分類

SegNet最后一個卷積層會輸出所有的類別。網絡最后連接一個softmax層,由于是end to end, 所以softmax需要求出所有每一個像素在所有類別最大的概率,最為該像素的label,最終完成圖像像素級別的分類。

可以看一下作者得到的實驗結果:


1.5 討論Relu的應用效益


在傳統的CNN網絡中,ReLU通常在全連接之后,結合偏置bias用于計算權值的輸出,但是在Seg?Net作者的研究中發現,激活層越多越有利于圖像語義分割。上圖為論文中,不同深度的卷積層增加與不增加激活函數的對比圖。?


2.?Bayesian SegNet

2.1 SegNet存在的一個問題


圖四 Bayesian SegNet 網絡模型

對比圖一與圖四,并沒有發現Bayesian SegNet與SegNet的差別,事實上,從網絡變化的角度看,Bayesian SegNet只是在卷積層中多加了一個DropOut層。最右邊的兩個圖Segmentation與Model Uncertainty,就是像素點語義分割輸出與其不確定度(顏色越深代表不確定性越大,即置信度越低)。

2.1 關于DropOut as Bayesian approximation

在傳統神經網絡中DropOut層的主要作用是防止權值過度擬合,增強學習能力。DropOut層的原理是,輸入經過DropOut層之后,隨機使部分神經元不工作(權值為0),即只激活部分神經元,結果是這次迭代的向前和向后傳播只有部分權值得到學習,即改變權值。?

因此,DropOut層服從二項分布,結果不是0,就是1,在CNN中可以設定其為0或1的概率來到達每次只讓百分之幾的神經元參與訓練或者測試。在Bayesian SegNet中,SegNet作者把概率設置為0.5,即每次只有一半的神經元在工作。因為每次只訓練部分權值,可以很清楚地知道,DropOut層會導致學習速度減慢。

在Bayesian SegNet中通過DropOut層實現多次采樣,多次采樣的樣本值為最后輸出,方差為其不確定度,方差越大不確定度越大,如圖四所示,mean為圖像語義分割結果,var為不確定大小。所以在使用Bayesian SegNet預測時,需要多次向前傳播采樣才能夠得到關于分類不確定度的灰度圖,Bayesian SegNet預測如圖六所示。?


圖六 Bayesian SegNet 測試結果

總結

以上是生活随笔為你收集整理的SegNet 语义分割网络以及其变体 基于贝叶斯后验推断的 SegNet的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。