關於卷積神經網絡旋轉不變性的一點研究


今天一直在思考CNN的旋轉不變性,眾所周知,CNN具有平移不變性,但是是否具有旋轉不變性呢。我們來研究下吧。

1 查閱資料

查閱了許多國內外資料,在解釋旋轉不變性的時候,普遍得出來,CNN具有一定的旋轉不變性,但是這個旋轉不變性是有一定的角度控制的,當然起作用的是maxpooling 層,當我們正面拍一些照片的時候,在某些地方會得到activation.然后旋轉一定的角度之后,這個依然在相同的點得到activation區域。當然決定這個區域的是maxpooling 層,所以說maxpooling越大可以旋轉保持抽取特征不變性的角度就越大。現在很多人解決這種問題的方法都是用data augmentation

data augmentation:人工增加訓練集的大小. 通過平移, 翻轉, 加噪聲等方法從已有數據中創造出一批""的數據

當然這位仁兄介紹的比較仔細,傳送門:http://www.cnblogs.com/love6tao/p/5841648.html,但是這種方法,很容易導致模型過擬合。有沒有一種方法能解決這個問題呢,下面我來介紹一篇CVPR 2016上的文章。

2 論文介紹

論文名字:RIFD-CNN: Rotation-Invariant and Fisher Discriminative Convolutional Neural Networks for Object Detection

當然這篇文章介紹了旋轉不變性改進,和判別改進,但是我這里只介紹一種。

R-CNN模型圖:

它這個模型其實很簡答,前面就是data augmentation. 然后放上傳統的CNN層(VGGNet,AlexNet).是傳統網絡分類層的前一層。本模型是在之間加了層以保證模型的旋轉不變性。

模型分為兩層:一層data augmentation 和model training.

Data augmentation:給一些列初始的訓練樣本,我們通過旋轉變化得到了一系列新的訓練樣本:,其中是正樣本,是負樣本,是一些列的k個旋轉角度。

model training:為了達到旋轉不變的特性,文章增加了一個旋轉不變全連接層中的m是除了分類層次的所有層數。不像傳統的卷積神經網絡,僅僅優化多項邏輯斯蒂回歸,即y的值是多項的,是大於2分類的(0,1,2)。具體不多說,傳送門,講的很詳細:http://www.docin.com/p-586309778.html

但是本文提出的R-CNN模型,通過加上正則約束項優化一個新的目標函數,以確保訓練樣本在旋轉之前和之后分享相似的特征。

為了減少訓練損耗,直接把之前神經網絡訓練好的參數,帶進去。假設層的輸出,的輸出。是分類層的參數。那么我們就可以得到:

其中是RELU 和softmax激活函數。關於激活函數我這里就不說了。

那么給出訓練樣本以及他們對應的標簽,假設總的參數為.

那么就可以得到下面的優化公式:

其中為平衡三個目標公式的約束項。其中為softmax 分類器的損失函數:. 其中N是訓練樣本個數,K是每個樣本旋轉的次數。

第二,是作為旋轉不變正則化約束項。可以表示為:

是RI-CNN旋轉之后特征的平均值,表示為:

目標函數的第三項作為一個權值衰減組,為了控制權重,防止過擬合。

整個模型的優化都是用隨機梯度下降來優化。

下面貼出這個算法:

總結:算法不是太難,但是想法很好。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM