文章目錄
- 1 Abstract
- 2 Introduction
- 3 Related work
- 4 Fully convolutional networks
- 4.1 Adapting classifiers for dense prediction
- 4.2 Shift-and-stitch is filter rarefaction
- 4.3 Upsampling is backwards strided convolution
- 5 Segmentation Architecture
- 6 Results
- 7 Conclusion
1 Abstract
- 構建全卷積神經網絡,可以接受任意大小的輸入並輸出相應大小的輸出
- 詳細解釋了FCN在稠密預測任務中的應用,並和之前的模型進行了對比
- 改編了分類網絡:AlexNet、VGG、GooLeNet
- 定義了一個跳躍連接將深層的粗糙的語義信息與淺層的細緻的外觀信息結合起來以產生精確的、詳細的分割。
- 在分割數據集PASCAL VOC上取得了最先進的精確
2 Introduction
- FCN的方法是高效的,不需要其他工作中的一些複雜方法
- 全局信息決定是什麼,局部信息決定在哪(定義了一個跳躍連接將深層的粗糙的語義信息與淺層的細緻的外觀信息結合起來以產生精確的、詳細的分割。)
3 Related work
方法基於深度分類網路和遷移學習的最新成功
3.1 Fully convolutional network
- Matan等人首先提出將卷積網絡擴展到任意大小的輸入
- FCN以前的應用:
Sermanet等人的滑動窗口預測
Pinheiro 和 Collobert 的語義分割,
Eign等人的圖像修復
Tomspon等人有效的使用全卷積神經網絡進行了像素到像素的訓練- He等人扔掉了分類網絡的非卷積部分來製作一個特徵提取器
3.2 Dense prediction with convnet
- 幾個最近的應用卷積網絡進行稠密預測的工作
Ning et al., Farabet et al., and Pinheiro and Collobert 等人的語義分割
Ciresan et al.的電子顯微鏡的成像的邊界預測
Ganin and Lempitsky 的 natural images by a hybrid convnet/nearest neighbor model
Eigen et al.的圖像修復和深度估計
- 這些方法的共同原理
小模型限制了能力和接收域
patchwise訓練
通過超像素投影、隨機場正則化、濾波或局部分類進行後處理
進行輸入移位和輸出偏移來達到稠密輸出
多尺度金字塔處理
飽和tanh非線性
ensembles
- FCN模型
沒有使用這些機制,
研究patchwise訓練和"shift-and-stitch"稠密輸出
改變深度分類架構,使用圖像分類進行監督的
微調全卷積
4 Fully convolutional networks
理解平移不變形見:https://www.cnblogs.com/Terrypython/p/11147490.html
感受野
卷積網絡的平移不變形
實數損失函數
4.1 Adapting classifiers for dense prediction
把全連接層改成卷積層
4.2 Shift-and-stitch is filter rarefaction
理解shift-and-stitch借用這篇博客:https://www.jianshu.com/p/e534e2be5d7d
4.3 Upsampling is backwards strided convolution
5 Segmentation Architecture
訓練和交叉驗證集用的是PASCAL VOC 2011分割挑戰賽
損失函數是逐像素的多項式邏輯損失(per-pixel multinomial logistic loss)
交叉驗證用的是mean pixel intersection over union,其中均值來自於所有類別,包括背景
訓練中忽略的像素被從真值中mask out(有歧義或者困難)
5.1 From classifier to dense FCN
改造了三個分類網絡:AlexNet、VGG-16、GooLeNet(只用了最後的損失層,並通過丟棄最後的平均池化層實現了效果的提升)
改造方法:將這些網絡最後的分類層去掉,用卷積層替代所有的全連接層。用1X1卷積(通道數21)來預測所有coarse output中在PASCAL上對應的每個類別(包括背景),再用deconvolution layer對coarse outputs進行雙線性上採樣實現像素級稠密估計
5.2 Combine what and where
對原圖像進行卷積conv1、pool1後原圖像縮小爲1/2;
之後對圖像進行第二次conv2、pool2後圖像縮小爲1/4;
接着繼續對圖像進行第三次卷積操作conv3、pool3縮小爲原圖像的1/8,此時保留pool3的featureMap;
接着繼續對圖像進行第四次卷積操作conv4、pool4,縮小爲原圖像的1/16,保留pool4的featureMap;
最後對圖像進行第五次卷積操作conv5、pool5,縮小爲原圖像的1/32,然後把原來CNN操作中的全連接變成卷積操作conv6、conv7,圖像的featureMap數量改變但是圖像大小依然爲原圖的1/32,此時進行32倍的上採樣可以得到原圖大小,這個時候得到的結果就是叫做FCN-32s.
在FCN-32s的基礎上進行fine tuning,把pool4層和conv7的2倍上採樣結果相加之後進行一個16倍的上採樣,得到的結果是FCN-16s.
之後在FCN-16s的基礎上進行fine tuning,把pool3層和2倍上採樣的pool4層和4倍上採樣的conv7層加起來,進行一個8倍的上採樣,得到的結果就是FCN-8s.
參考:https://blog.csdn.net/ztsucceed/article/details/80564113
5.3 Experimental framework
Optimization
SGD with momentum
minibatch size of 20 images
fixed learning rates
Fine-tuning
More Training Data
Patch Sampling
Class Balancing
Dense Prediction
Augmentation
嘗試通過隨機鏡像和將圖像各個維度jittering至最高32像素(相對於coarse scale of prediction)來擴張輸入,但是這個操作沒有帶來明顯提升。
Implementation
6 Results
在PASCAL VOC,NYUDv2和SIFT Flow上進行了測試
Metrics
PASCAL VOC
NYUDv2
SIFT FLOW
7 Conclusion
Recognizing this extending these classification nets to segmentation, and improving the architecture with multi-resolution layer combinations dramatically improves the state-of-the-art, while simultaneously simplifying and speeding up learning and inference