天天看點

CNN提取的特征中是否含有物體的位置資訊

前言

這篇文章解釋了CNN是怎麼學到圖檔内的絕對位置資訊。探究了CNN到底有沒有編碼位置資訊,這些位置資訊在哪些神經元中被編碼、這些位置資訊又是如何被暴露給神經網絡學習的。

這是一篇ICLR2020接收的文章。此前,關注位置資訊隻在NLP的任務中,因為字元位置不同,文本表達的語義不同。但是,CV一直沒有這個需求,大家一緻認為CNN具有平移不變性。在CV的三大物體感覺任務中,分類不需要位置資訊,語義分割關注的是像素級别的語義分類,也不覺得需要位置資訊(其實位置資訊很有用);也許你會覺得物體檢測會用到位置資訊,然而,物體檢測模型都是通過檢測Anchor中的特征做分類工作,最後得到的坐标資訊來自于Anchor。

CNN提取的特征中是否含有物體的位置資訊

上圖一共有三組圖檔,每組由原圖和剪切圖構成。可以發現,顯著區域将會因為圖檔中心位置的改變而改變。

Position Encoding Network

CNN提取的特征中是否含有物體的位置資訊

作者提出了一種提取位置的模型Position Encoding Network(PosENet)。首先挑選VGG和ResNet作為特征提取網絡,接着從淺層到深層提取5個leve的特征送入PosENet。其中用bi-linear插值到同一size後concat。最後PosENet的輸出是一張能表示位置資訊的gradient-like。PosENet模型提取出真實的位置資訊,對作者添加的梯度狀的圖檔GT進行拟合。梯度狀圖檔GT圖檔如下:

CNN提取的特征中是否含有物體的位置資訊

如果在分類任務上訓練的前饋網絡能夠隐式的學到位置資訊,那麼作者設計的位置編碼子產品經過訓練後就能對隐藏的位置資訊與梯度狀的圖檔GT之間的關系進行模組化,如果特征圖中沒有編碼的位置資訊,那麼輸出将是随機的。

具體實驗

實驗效果

作者做了如圖所示的實驗:

CNN提取的特征中是否含有物體的位置資訊

其中最左邊一列是輸入,第二列是GT,第三列是沒有backbone直接接入position encoding module,第四列用VGG backbone,第五列resnet backbone。其中backbone的參數都當機,position encoding module都不padding。

第三清單明沒有backbone的pretrain權重,網絡無法通過輸入直接映射到gt。在沒有padding的情況下,輸出隻會響應在輸入的具體内容上,不能預測和内容無關的位置資訊。第四、五列說明了pretrain的網絡輸出的特征中編碼了位置資訊,這幫助了後面接的position encoding module預測到gt。

實驗資料

下圖可以看出PosENet(VGG和ResNet)可以很容易地從經過訓練的CNN模型中提取位置資訊,特别是基于ResNet的PosENet模型。然而,單獨訓練PosENet(PosENet)直接從圖像來預測的得分要低得多(并且越深的特征層效果越好)。這一結果表明,僅從輸入圖像中提取位置資訊是非常困難的。隻有與深度編碼網絡相耦合,PosENet才能提取出與地面真實位置圖一緻的位置資訊。

CNN提取的特征中是否含有物體的位置資訊

padding影響

從下圖可以看出,随着pad數增加,可視化結果越接近gt。

在這裡插入圖檔描述

CNN提取的特征中是否含有物體的位置資訊

文章最終得到的結論

CNN隐性的編碼了位置資訊,并且随着網絡層數的增加和卷積核的增加,即感受野的增加,能夠更好的編碼位置資訊。其中,這個位置資訊是由zero-padding造成的,圖像邊緣的zero-padding提供了圖像的邊界資訊。本來,網絡是不知道每個像素點或者特征點的位置。但是,通過padding的zero,提供給模型一個相對位置資訊,知道每個特征點距離zero邊界的距離資訊。

論文位址:How much position information do convolutional neural networks encode?

公衆号:深度學習視覺

參考網站

繼續閱讀