卷積由feature map到全連接層的設置節點個數也為一個超參數,可以進行設置;同時,這個過程也可以看作是一個卷積的過程。
全連接層實際就是卷積核大小為上層特征大小的卷積運算,一個卷積核卷積后的結果為一個節點,就對應全連接層的一個神經元。
假設: 最后一個卷積層的輸出為7×7×512,連接此卷積層的全連接層為1×1×4096(相當於全連接網絡有4096個神經元)。
相當於一個全鏈接網絡的輸入層有7×7×512個輸入神經元,下一層有4096個神經元。
如果將這個全連接層轉化為卷積層:
1.共需要4096組濾波器
2.每組濾波器含有512個卷積核
3.每個卷積核的大小為7×7
4.則輸出為1×1×4096
由於每個濾波核的大小和上一層的feature map大小一樣,所有feature map上的cell不共享權重,而全連接網絡就不是共享權重的,保證了轉換后的卷積層的運算結果和全連接層是一樣的。
如果: 后面再連接一個1×1×2048的全連接層(相當於全連接網絡有4096個神經元)。
則其對應的轉換后的卷積層的參數為:
1.共有2048組濾波器
2.每組濾波器含有4096個卷積核
3.每個卷積核的大小為1×1
4.則輸出為1×1×2048
拓展:
全連接層的壞處就在於其會破壞圖像的空間結構,因此人們便開始用卷積層來“代替”全連接層,通常采用1×1的卷積核,這種不包含全連接的CNN成為全卷積神經網絡(FCN),FCN最初是用於圖像分割任務,之后開始在計算機視覺領域的各種問題上得到應用,事實上,Faster R-CNN中用來生成候選窗口的CNN就是一個FCN。FCN的特點就在於輸入和輸出都是二維的圖像,並且輸入和輸出具有相對應的空間結構,在這種情況下,我們可以將FCN的輸出看作是一張熱度圖,用熱度來指示待檢測的目標的位置和覆蓋的區域。在目標所處的區域內顯示較高的熱度,而在背景區域顯示較低的熱度,這也可以看成是對圖像上的每一個像素點都進行了分類,這個點是否位於待檢測的目標上。