FCN特點
1.卷積化
即是將普通的分類網絡丟棄全連接層,換上對應的卷積層即可2.上采樣
方法是雙線性上采樣差
此處的上采樣即是反卷積3.因為如果將全卷積之后的結果直接上采樣得到的結果是很粗糙的,
所以作者將不同池化層的結果進行上采樣之后來優化輸出
3.跳躍結構:
現在我們有1/32尺寸的heatMap,1/16尺寸的featureMap和1/8尺寸的featureMap,1/32尺寸的heatMap進行upsampling操作之后,因為這樣的操作還原的圖片僅僅是
conv5中的卷積核中的特征,限於精度問題不能夠很好地還原圖像當中的特征,因此
在這里向前迭代。把conv4中的卷積核對上一次upsampling之后的圖進行反卷積補充
細節(相當於一個差值過程),最后把conv3中的卷積核對剛才upsampling之后的
圖像進行再次反卷積補充細節,最后就完成了整個圖像的還原。
http://www.cnblogs.com/gujianhan/p/6030639.html
https://blog.csdn.net/qq_38906523/article/details/80520950
CNN對輸入圖片尺寸有要求,而FCN沒有的原因
經過卷積層之后的outputsize和inputsize之間的關系是固定的,outputsize = (inputsize - kernelsize) / stride + 1,但它們
並不用相互關心。
cnn在經過每個卷積層之后,產生一個feature map,這個feature map(n*n)的大小是由神經網絡的結構所決定的,
feature map進入全連接層后要變成一個長向量,這個長向量每個元素(假設為n個)需要與下一層的所有神經元相連接,
(全鏈接層輸入向量的維數對應全鏈接層的神經元個數)神經網絡
的結構一旦確定,權值參數的個數就確定,故參數個數都已確定。向前推導即是每個層得到的結果都必須是確定的,
所以,cnn對於輸入圖片的尺寸大小有要求,全連接層的輸入是固定大小的,如果輸入向量的維數不固定,那么全連接的權值參數
的量也是不固定的,就會造成網絡的動態變化,無法實現參數訓練目的
修正理解:
feature map輸入進入全連接層要變成一個長向量,這個長向量與全連接層的神經元相連接(相對應),而神經網絡整個結構一旦確定,
權值參數就確定,如果輸入向量的位數不固定,那么權值參數就會也不固定,造成網絡的動態變化,無法訓練參數。
fcn沒有全連接層,所以feature map大小不受限制,卷積結束之后,通過上采樣得到原圖片的大小。
upsampling的方法
經過對比研究,upsampling采用反卷積(有的地方叫法不同)的方法得到的效果比較好。
而在全卷積層之后直接進行Upsampling的效果並不好,因為中間的pooling操作忽略了很多有用的信息。
所以采用了一種跳躍結構,這種結構則是吧前面的pooling層的結果與卷積最后得到的結果一起做加和,
然后再進行upsampling,這樣的效果更好。如下圖:
以上介紹了FCN的各種重點知識,下面介紹整體流程及細節
1.FCN與CNN的區別就在於把CNN最后的全連接層換成卷積層來進行逐像素的分類識別,輸入圖片后經過前部分的
卷積層之后會得到一個feature map,由這個feature map進行上采樣得到與原始圖像尺寸相同的結果,從而恢復了
對每個像素的分類,最后通過softmax分類計算像素損失得到最終預測結果。結構如下圖:
FCN的缺點:
1.對像素與像素之間的關系並沒有考慮到,忽略了在通常的基於像素分類的分割方法中使用的空間規整(spatial regularization)步驟,缺乏空間一致性。
2.雖然8倍的上采樣效果還可以,但還有待提高,不夠精細,細節還有待提高。