卷積網(wǎng)絡(CNN)的采樣問題
卷積神經(jīng)網(wǎng)絡(CNN)是一種強大的非結(jié)構(gòu)化數(shù)據(jù)抽象特征抽取模型严衬,其最基本的結(jié)構(gòu)卷積層為一個權(quán)值共享矩陣弓候,但是在不考慮池化(pooling)層的情況下膨蛮,單純的卷積操作對圖像的仿射變換(平移因篇、縮放、剪切猴娩、旋轉(zhuǎn))缺乏不變性橡娄。這種缺陷與CNN默認的采樣方法(矩陣采樣)有很大的關(guān)系拔莱。所以,為了使網(wǎng)絡獲得對仿射變換的不變性匿又,通常采用了改變采樣方式的做法(如采用pooling方式的采樣使網(wǎng)絡獲得了一定的平移方灾、縮放、剪切不變性和較小的旋轉(zhuǎn)不變性)碌更。
在以往的卷積網(wǎng)絡中裕偿,采樣方式通常以強先驗的方式直接給出(如基于hough變換的位置修正),但是顯然強先驗的方式通用性較差痛单,我們看到基于矩陣的pooling只能通過數(shù)據(jù)增強的方式獲得對旋轉(zhuǎn)的識別能力嘿棘。很容易聯(lián)想到,基于學習的啟發(fā)式采樣旭绒,可能是一種更通用的采樣方式鸟妙。本文將介紹兩篇啟發(fā)式采樣方面的相關(guān)工作:空間變換網(wǎng)絡(STN)和可變形卷積網(wǎng)絡(DCN)焦人。
空間變換網(wǎng)絡(Spatial Transform Network)
《Spatial Transformer Networks》是一篇2015年deepmind的研究。這篇文章提出了一種以啟發(fā)式仿射變換矩陣為基礎的結(jié)構(gòu)來為網(wǎng)絡提供一定的空間不變性重父。
1.仿射變換與雙線性插值
有點懶花椭,待補充
2.空間變換結(jié)構(gòu)
正如前文所說,通過仿射矩陣可以求得特征矩陣上的點在經(jīng)過特定仿射變換后對應輸出的位置房午,通過雙線性插值个从,我們可以得到一個新的特征矩陣。我們可以通過學習來設定仿射矩陣的參數(shù)歪沃,從而通過仿射矩陣對特征矩陣進行有效歸一,我們稱其為空間變換器(Spatial Transformers)嫌松。來論文的第一部分沪曙,只介紹了單變換器(即對一個feature map只有一個仿射矩陣)。
空間變換結(jié)構(gòu)包含三個部分:
Localisation Network:以的feature map作為輸入萎羔,以變換矩陣的元素作為輸出的網(wǎng)絡結(jié)構(gòu)液走,變換矩陣可以為任意形式,對于仿射變換矩陣而言贾陷,為一個6參數(shù)矩陣缘眶。
網(wǎng)絡可以是以回歸層為終止的多種網(wǎng)絡結(jié)構(gòu),可以采用全連接結(jié)構(gòu)也可以采用卷積結(jié)構(gòu)髓废。-
Parameterised Sampling Grid:根據(jù)Localisation Network的參數(shù)巷懈,我們對一個一般的feature map產(chǎn)生一個特定的變換后的grid(通過逆變換)。通過仿射變換:
同時將輸入的橫縱坐標范圍和輸出的橫縱左邊范圍歸一化為[-1,+1]慌洪。由此對圖像進行裁剪顶燕、平移、旋轉(zhuǎn)冈爹、拉伸及扭曲形成輸出的feture map涌攻。
左圖為一般采樣下的grid,右圖為空間變換采樣的grid -
Differentiable Image Sampling:在獲得相應的grid和變換矩陣后频伤,需要對原featrue map進行采樣從而得到新的feature map恳谎。
通過變換矩陣相關(guān)的采樣核:
將原feature map映射到新feature map中,如雙線性插值:
雙線性插值
該變換可以求梯度:
(變換矩陣反向傳播憋肖?)
通過以上三個結(jié)構(gòu)因痛,就形成了了一個空間變換器。該結(jié)構(gòu)可以背放在卷積網(wǎng)絡的任意位置瞬哼,通過訓練學習如何得到最有效的變換方式婚肆。
STN的基本原理大致就是這樣,文章之后還討論了multiple spatial transformers坐慰、 半監(jiān)督的co-localisation较性、higher dimensional transformers等應用形式用僧。
STN網(wǎng)絡確實是一個好的想法,但是比較懷疑這種針對全局的變換在比較復雜的任務(如分類較多時)中是否依然有效赞咙。
可變形卷積網(wǎng)絡(Deformable Convolutional Networks)
《Deformable Convolutional Networks》是一篇2017年Microsoft Research Asia的研究责循。基本思想也是卷積核的采樣方式是可以通過學習得到的攀操。作者提出了兩種新的op:deformable convolution和deformable roi pooling院仿,主要是通過給傳統(tǒng)卷積采樣點加offsets的方式來獲得新的采樣點。
1.Deformable Convolution
在傳統(tǒng)的卷積中采樣的grid為一個矩形速和,如對于一個3*3的卷積核來說歹垫,其grid為 :
在每一個輸出feature map位置上做卷積操作:
在可變形卷積中,給每一個grid位置上的pn加上offset颠放,即:
用于加上offset后排惨,位置可能會出現(xiàn)非整數(shù)的情況,故需要采用插值的方式(如二次線性插值)確定非整位置下對應的值:
在實際應用中碰凶,對于一個的輸入暮芭,若使用3*3的卷積核,則先通過卷積欲低,生成一個新的channel數(shù)為2*3*3的feature map(大小不變)辕宏,分別代表不同方向上x,y的offset值。
在訓練過程中砾莱,offset通過二次線性插值進行反向傳播(見STN)瑞筐。
2.Deformable RoI Pooling
Roi Pooling是detection中的一種方法,目的是將一個任意大小的feature map映射到特定大小的feature map上恤磷。在傳統(tǒng)的Roi Pooling中:
如同Deformable Convolution中面哼,我們給每一個位置加入偏置:
同樣的,offset可能為非整數(shù)扫步,使用插值的方式獲取非整數(shù)位置對應的值魔策。
在實際使用中,若pooling的目標為一個3*3的featrue map河胎,那么我們需要233個偏置對應每一個bin闯袒,首先將輸入的featrue map進行roi pooling為3*3大小的feature,然后通過全連接游岳,輸出為每一個bin對應的offset政敢。同時為了保證采樣大小,需要對offset進行normalization胚迫。
Deformable ConvNets
Deformable Convolution和Deformable RoI Pooling兩種結(jié)構(gòu)都可以直接應用到conv網(wǎng)絡中去喷户,同時直接端到端訓練達到啟發(fā)式采樣的目的。
總結(jié)
STN和DCN兩篇文章都提出了啟發(fā)式的CNN采樣方法访锻。bilinear interpolation確實是個好方法褪尝,即解決了采樣問題也解決了反向問題闹获,實際實驗里也確實work了。但是為什么會work河哑,還是不明白避诽。
兩篇文章都是端到端的方法,非常有啟發(fā)性璃谨,但是也都沒有完全逃離傳統(tǒng)采樣沙庐,期待以后的工作。