1. 程式人生 > 其它 >OverFeat:Integrated Recognition, Localization and Detection using Convolutional Networks

OverFeat:Integrated Recognition, Localization and Detection using Convolutional Networks

目錄

Sermanet P., Eigen D., Zhang X., Mathieu M., Fergus R., LeCun Y. OverFeat:integrated recognition, localization and detection using convolutional networks. In International Conference on Learning Representations (ICLR), 2014.

通常的sliding windows需要大量的計算量: 首先我們需要框出一個區域, 再將該區域進行判斷, 當區域(windows)的數量很多的時候, 這麼做是非常耗時的.

但是本文作者發現, 通過卷積, 可以將所有的區域一次性計算, 使得大量重複計算能夠節省下來. 個人覺得還是非常有意思的.

主要內容

如上圖所示, 第一行展示了對一個普通圖片進行判斷的過程:

  1. input: \(14 \times 14 \times *\), 經過\(5 \times 5\)的卷積核(stride=1, padding=0), 得到:
  2. \(10 \times 10 \times *\)的mappings, 再經過\(2 \times 2\)的pooling (stride=2, padding=0), 得到:
  3. \(5 \times 5 \times *\)的mappings, 到此為特徵提取階段;
  4. 接下來, 是分類器部分, 實際上, 原本是全連線層部分, 我們首先以全連線層的角度過一遍, 令\(d_1=5 \times 5 \times *\):
  5. 通過\(W \in \mathbb{R}^{d_2 \times d_1}\) 將特徵對映為\(d_2\)的向量;
  6. 再通過\(W' \in \mathbb{R}^{C \times d_2}\) 將特徵對映為\(C\)的向量(C表示類別數目);
  7. 既然全連線層是特殊的卷積, 4相當於
  8. \(d_1\)\(5 \times 5\)的卷積作用於特徵, 5相當於
  9. \(d_2\)\(1 \times 1\)的卷積, 6相當於
  10. \(C\)\(1 \times 1\)
    的卷積.

再來看第二行, 其輸入為\(16 \times 16\)大小的圖片, 輸出是\(2 \times 2 \times C\), 而且藍色部分之間是相互對應的. 設想, 我們將\(16 \times 16\)的圖片通過sliding windows (stride=2)可以劃分出四幅圖片, 而這四個圖片經過網路所得到的logits正好是最後輸出的\(2\times 2\)中所對應的位置, 這意味著我們一次性計算了所有的windows, 但是計算量卻並沒有太多增加.

那麼, 相應的windows是怎麼劃分的呢?

倘若網路每一層的核的stride為\(s_1, s_2, \cdots, s_k\), 那麼windows之間的stride應該為

\[s_1 \times s_2 \times \cdots \times s_k. \]

注: stride是固定的, 但是圖片的大小不一定固定, 像ResNet, 由於全連線層前有一個average pooling的操作, 故我們可以傳入大小不定的圖片進去.

問: 但是有些卷積核還有padding的操作, 這個該如何理解呢?(小誤差?)