一文了解padding在深度學習模型中重要嗎?
本文來自公眾號CV技術指南的技術總結系列
歡迎關注CV技術指南 ,專注于計算機視覺的技術總結、最新技術跟蹤、經典論文解讀。
前言
本文介紹了兩個實驗,展示了padding在深度學習模型中的影響。
實驗一
卷積是平移等變的:將輸入圖像平移 1 個像素,輸出圖像也平移 1 個像素(見圖 1)。如果我們對輸出應用全局平均池化(即對所有像素值求和),我們會得到一個平移不變模型:無論我們如何平移輸入圖像,輸出都將保持不變。
在 PyTorch 中,模型如下所示:y = torch.sum(conv(x), dim=(2, 3)) 輸入 x,輸出 y。

圖 1:頂部:包含一個白色像素的輸入圖像(原始和 1 個像素移位版本)。中:卷積核。底部:輸出圖像及其像素總和。
是否可以使用此模型來檢測圖像中像素的絕對位置?
對于像所描述的那樣的平移不變模型,它應該是不可能的。
讓我們訓練這個模型對包含單個白色像素的圖像進行分類:如果像素在左上角,它應該輸出 1,否則輸出 0。訓練很快收斂,在一些圖像上測試二元分類器表明它能夠完美地檢測像素位置(見圖 2)。

圖 2:頂部:輸入圖像和分類結果。底部:輸出圖像和像素總和。
模型如何學習對絕對像素位置進行分類?這僅可能由于我們使用的填充類型:
圖 3 顯示了經過一些 epoch 訓練后的卷積核
當使用“same”填充(在許多模型中使用)時,內核中心在所有圖像像素上移動(隱式假設圖像外的像素值為 0)
這意味著內核的右列和底行永遠不會“接觸”圖像中的左上像素(否則內核中心將不得不移出圖像)
但是,當在圖像上移動時,內核的右列和/或底行會接觸所有其他像素
我們的模型利用了像素處理方式的差異
只有正(黃色)內核值應用于左上白色像素,從而只產生正值,這給出了正和
對于所有其他像素位置,還應用了強負內核值(藍色、綠色),這給出了負和

圖 3:3×3 卷積核。
盡管模型應該是平移不變的,但事實并非如此。問題發生在由所使用的填充類型引起的圖像邊界附近。
實驗二
輸入像素對輸出的影響是否取決于其絕對位置?
讓我們再次嘗試使用只有一個白色像素的黑色圖像。該圖像被送入由一個卷積層組成的神經網絡(所有內核權重設置為 1,偏置項設置為 0)。輸入像素的影響是通過對輸出圖像的像素值求和來衡量的。“valid”填充意味著完整的內核保持在輸入圖像的邊界內,而“same”填充已經定義。
圖 4 顯示了每個輸入像素的影響。對于“valid”填充,結果如下所示:
內核接觸圖像角點的位置只有一個,角點像素的值為 1 反映了這一點
對于每個邊緣像素,3×3 內核在 3 個位置接觸該像素
對于一般位置的像素,有 9 個核位置,像素和核接觸

圖 4:將單個卷積層應用于 10×10 圖像。左:“same”填充。右:“valid”填充。
邊界附近像素對輸出的影響遠低于中心像素,當相關圖像細節靠近邊界時,這可能會使模型失敗。對于“same相同”填充,效果不那么嚴重,但從輸入像素到輸出的“路徑”較少。
最后的實驗(見圖 5)顯示了當從 28×28 輸入圖像(例如,來自 MNIST 數據集的圖像)開始并將其輸入具有 5 個卷積層的神經網絡(例如,一個簡單的 MNIST 分類器可能看起來像這樣)。特別是對于“valid”填充,現在存在模型幾乎完全忽略的大圖像區域。

圖 5:將五個卷積層應用于 28×28 圖像。左:“same”填充。右:“valid”填充。
結論
這兩個實驗表明,填充的選擇很重要,一些糟糕的選擇可能會導致模型性能低下。有關更多詳細信息,請參閱以下論文,其中還提出了如何解決問題的解決方案:
1. MIND THE PAD – CNNS CAN DEVELOP BLIND SPOTS
2. On Translation Invariance in CNNs: Convolutional Layers can Exploit Absolute Spatial Location
作者:Harald Scheidl
編譯:CV技術指南

歡迎關注公眾號 CV技術指南 ,專注于計算機視覺的技術總結、最新技術跟蹤、經典論文解讀。
請輸入評論內容...
請輸入評論/評論長度6~500個字


分享













