天天看點

論文筆記《Fully Convolutional Networks for Semantic Segmentation》

一、Abstract

提出了一種end-to-end的做semantic segmentation的方法,也就是FCN,是我個人覺得非常厲害的一個方法。

二、亮點

1、提出了全卷積網絡的概念,将Alexnet這種的最後的全連接配接層轉換為卷積層,好處就是可以輸入任意的scale。

    隻不過在輸出的scale不同的時候,feature map的大小也不同,因為這裡的目的是最piexl的語義分割,是以其實不重要。

    在Alexnet基礎上, 最後的channel=4096的feature map經過一個1x1的卷積層, 變為channel=21的feature map, 然後經過上采樣和crop, 變為與輸入圖像同樣大小的channel=21的feature map, 也就是圖中的pixel-wise prediction。 在Longjon的試驗中一共有20個語義類别, 加上背景類别每個像素應該有21個softmax預測類, 是以pixel-wise prediction中channel=21。

2、如何做上采樣的?

     對CNN的輸出結果進行upsampling,上采樣的參數是可學習的,這裡采用的方法是反卷積,其實跟BP的求卷積層的梯度是一樣的算法,最後得到一個和原圖一樣大小的輸出,輸出結果為對每個像素的分類。

3、如何把全連接配接層轉換為卷積層?

    這篇博文寫的很好http://blog.csdn.net/u010668083/article/details/46650877,這裡有一個概念我之前一直模糊了,把全連接配接層轉換為卷積層,實際上是用一個和輸入的圖像一樣大小的卷積核去做這個操作。對于一個7*7*512的cov輸出,連接配接到一個1*1*4096的全連接配接層,轉換的方法也就是:用4096組濾波器,每組濾波器有512組,每組的大小是7*7的(是以我的了解就是..這個濾波器的大小實際上是7*7*512),這樣的話,參數數量一緻,最後的輸出也是一緻的。在輸出變大的時候,因為是都是卷積層,最後當然可以得到一個上面那張圖的輸出。

4.refinement

作者發現,直接這樣做效果并不是很好,于是拿出了祖傳trick來解決問題了。

如下圖所示,在最後upsampling的時候,不隻用最後一層,還要結合前面幾層一起來做一個fusion,這個很好了解,前面幾層的感受野是比較小的,是以在局部的輸出結果上是不錯的,而後面的輸出感受野是越來越大的,可以說準确率會高一點,進行融合以後,效果好的飛起..

三、結論

語義分割方面FCN可以說是開了一個山頭了,我覺得這個想法很好,對于之後的instance segmentation也有很大的幫助。

繼續閱讀