Rethinking the inception architecture for computer vision的 paper 相關知識


這一篇論文很不錯,也很有價值;它重新思考了googLeNet的網絡結構--Inception architecture,在此基礎上提出了新的改進方法;
文章的一個主導目的就是:充分有效地利用computation;

 

第一部分: 文章提出了四個principles:

原則1:設計網絡的時候需要避免 representational bottlenecks; 什么意思呢? 文章中說: 層與層之間進行 information 傳遞時,要避免這個過程中的數據的extreme compression,也就是說,數據的 scale 不能減小的太快;(數據從輸入到輸出大致是減少的,這個變化過程一定要gently,而不是快速的,    一定是慢慢的變少。。。。。。)       當數據的維數extreme下降的時候,就相當於引入了 representational bottelneck.

原則2:沒有怎么看明白什么意思啊?復制過來。Higher dimensional representations are easier to process locally within a network. Increasing the activations per tile in a convolutional network allows for more

disentangled features. The resulting networks will train faster.  (可以結合 figure7 下面的注釋, 我感覺: 在高維表示時,對於局部的特征更容易處理,意思就是local 卷積,用1*1啦, 或3*3, 別用太大的)

原則3: spatial aggregation can be done over lower dimensional embedding without much or any loss in representational power.    直接翻譯真的不會翻譯啊

原則4: 應該均衡網絡的寬度與深度;

 

第二部分:網絡的改進方法:

基於以上原則,開始對網絡進行改進了。

1. 把大的卷積層分解為小的卷積層,提高計算效率:

第一種:可以把一個5*5的卷積卷積層分解成兩個 3*3 的卷積層。       一個細節就是:把底層的 filters 為m 時, 上層的filters 為 n 時,這時兩層的小的卷積層的每一個filters 為多少呢? 細節2: 當原來的 激活函數為線性激活函數時,現在變為兩層的激活函數如何選擇?(文中說明了全部使用 relu 激活函數會好一些)

image

2. 非對稱分解:

把一個 n*n 的卷積層分解為兩個 1*N 和 N*1 的卷積層;         (文中說了這種分解在網絡的開始幾層效果垃圾, but is gives very good result on medium grid-sizes)

 

image

 

3.  auxiliary classifiers 分類器的真正作用

文章都過實驗發現 輔助分類器的真正作用為:regularizer。  意思就是吧,這個輔助分類器並不會加快網絡的訓練,不會加快 low-level 特征的 evlove , 它只會在最后的時候提高了一點 performance. 文章還說了,如果加上 batch-mormalized 效果更好一些,這也說明了 batch-normalized 也算一種 regularizer吧。

 

4. 有效的 grid-size 的reduction 的方法 ,即減少 feature map 的size 的方法:

文中出發點:1 ,避免 representational bottleneck ,其實我理解的就是避免 data的 dimension 急劇下降,一定也慢慢的來,別太快了;   2, 提高計算效率; 

    下圖中的兩種方法不滿足條件:(左邊不滿足條件1, 右邊不滿足條件2)

image

 

    下圖的方法為論文中提出來的:

image

 

5. Label smoothing Regularization 方法:

這里要涉及到了一些計算過程,用語言說明一下:網絡采用softmax分類器以及交叉熵函數作為loss函數時,對於類別 K 的最上層的導數等於:網絡實際輸出的 類別 K 的后驗概率 - 真實的類別 K的后驗概率;     而真實的類別 K的后驗概率 要么為1,要么為0. 這個容易出一個問題: 1,過擬合,為什么呢?這樣會使促使 網絡去學習 的實際輸出的 類別 K 的后驗概率為 1 或0 ,it is not guaranteed to generalize; 2, 這個也限制了導數的變化, 因為吧, 容易上層數為0 啊。。( 自己推導好好理解一下)

所以呢,文中提出了一個方法:  真實的類別 K的后驗概率別這個confident (要么為1 要么為0,不好,雖然后驗概率就是這樣的),  然后引入了:

image

其中的u(k)是自己引入的, 文章用了均勻分布; 另外文章也建議了使用訓練樣本中的 k 的分布來表示 u(k), 其實吧,訓練樣本中的每一個類別的樣本可能差不多相同吧,所以呢,用均勻分布也挺合適的;

 

第三部分: Inception V-2網絡;

image

 

 

第四部分:訓練方法:

看看,參考文獻很好;

 

第五部分:如何處理 small object的分類問題?

由於 object 比較小,所以呢, 像素少, 分辨率低,怎么辦?

文中呢,通過試驗說明了在計算力相同的情況下,不同的分辨率的輸入的效果其實差不多的。

所以呢,當輸入的分辨率低時,適當地調節網絡的前幾層,來保證 computational cost 相同 ,這樣的話,最終的 perpormance 其實沒有多大的差別的;

 

第六部分:對比實驗:

這一部分對比了其它的實驗結果, 注意:Inception-V3.

 

 

參考文獻:Szegedy C, Vanhoucke V, Ioffe S, et al. Rethinking the inception architecture for computer vision[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2016: 2818-2826.


免責聲明!

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



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