注: 本文僅供自己學習記錄
感謝良心up同濟子豪兄精彩講解
【精讀AI論文】GoogLeNet(Inception V1)深度學習影像分類演算法_嗶哩嗶哩_bilibili
GoogLeNet(Inception V1)論文筆記
論文概要
WE NEED TO GO DEEPER
Inception的技術演變

Inception不同于其他大型網路模型,可以方便的部署任何地方(邊緣計算設備)

Inception原理圖

將資料進行四路處理(不同尺度的卷積和一個池化),之后再匯總到cincatenate ,最后匯總的深度可以不同,長寬應該相同
提出了兩種結構,
a是原生模塊,問題是疊加越來愈大,導致計算量爆炸(尤其是池化層的計算量大)
b是改進版本(減少引數量和運算量),在進行3x3和5x5卷積之前,先使用1x1卷積進行降維,在池化層將池化后的資料進行1x1的卷積降維

其中GoogLeNet中的“Le"是在致敬LeNet-5
結構的優點
不管影像中需要提取的特征是占據影像大范圍、占據部分影像還是占據小范圍等情況,都可以通過不同卷積核(多尺度并行)提取到特征,并進行識別

1x1卷積核功能介紹

上圖中一個原尺寸為64x64x192的資料塊,使用1x1x192的卷積核掃描之后就可以得到一個64x64的二維影像,這是1x1卷積降維的做法
類似使用一把錐子將原三維影像扎在平面中,可以實作跨通道資訊交流

主要作用:
降維或者升維
跨通道資訊交融
減少引數量
增加模型深度,提高非線性表示能力
思路來源
使用多個型別卷積核進行掃描再合并的思路來源于論文:Network In Network

其中將5x5的卷積使用16個1x1卷積核降維,再用32個5x5卷積核升維,這樣做的效果和使用5x5直接進行卷積的效果是一樣的,但是引數量相較之前少了很多
最后使用GAV(globle average pooling)代替全連接層,也可以大大減少引數量
卷積程序:

網路結構
將九個Inception模塊累加起來,隨著層數的增加,3x3和5x5的卷積核比例也在增加

GAP(globle average pooling)

每一個資料層都是用一個平均值來代表這一層,把一個三維的向量變成了一個一維的向量,大大減少了引數量,
傳統的全連接層是將三維的向量拉成一個一維向量,由于和前面層中權重等引數的聯系,所以中間要進行大量運算,

GAP不光可以減少引數量,還可以進行遷移學習

還可以用在類似注意力機制的方法中,在經過全卷積神經網路之后(空間資訊沒有丟失),進行softmax激活,把所有的權重值和之前全部層的資料相加就可以得到一張Class Activation Map,這張圖體現了該分類在原圖上的關注區域
該方法可以使用分類的模型進行定位、語意分割這樣的弱監督或半監督學習

卷積核操作
可以將Inception結構中的5x5卷積拆分成兩個3x3的卷積

也可以把3x3卷積在進行拆分,拆分成若干個1xn或nx1的卷積,可以在深度和寬度兩個方向進行拆分在進行堆疊
Inception模型
Tensorflow和Pytorch 都有提供Inception的預訓練模型,可以進行微調和遷移學習,我們可以通過模型在任何一個領域實作自己想要的結果
cs231n的課程中有相關Inception的延伸

Cs231n中對Inception的介紹
由于VGG是一個體量特別大,且計算量超大的模型,GoogLeNet采取另一種方式進行改進,使用Inception結構
傳統結構的Inception結構的缺點就是引數量不夠小,因為池化層的存在,

途中因為池化層的厚度為256,要保持整個輸出厚度相同,其他的也要變成256,因此引數量增加,引數量的計算是由圖中Conv Ops的計算方法,資料大小*感受野

網路中還有兩個輔助的分類器,分類器的作用是讓網路更快的學習到分類的特征,起到正則化的作用,可以做到淺層和中間層都進行梯度注入功能,右下角為最終的損失函式公式

論文正文
論文作者團隊

Abstract
通過精心制作的一個結構上,在增加網路深度和寬度的同時減少引數量和計算量
該方法來源于兩個哲學理論,赫布理論和多尺度資訊處理
赫布理論:神經元突觸“用進廢退” Fire together,wire together
多尺度資訊處理:不同神經元(不同卷積核)提取到的不同特征進行融合
上面的結構最后歸化為一個GoogLeNet,這是一個22層的深度網路,該結構在影像分類和目標檢測的表現都不錯
1、Introduction(背景介紹)
由于過去幾年神經網路的發展(2012-2014),目標檢測和物體識別得到了快速發展,不僅得益于硬體,資料集和更龐大復雜的模型,更得益于新的模型思路和改進結構
但是前幾個優秀的網路框架是在僅使用當年的資料集的情況下(未擴展資料集)達到了最好的效果,因此不能只通過硬體提升和增大資料集來提升模型精度,還需要更優秀的演算法
GoogLeNet比AlexNet少12倍引數量,但更加準確
該結構已經過時:這之前目標識別領域效果最好的模型是R-CNN,它是深度學習+傳統計算機視覺協同的目標檢測模型(先用候選框標出,在進行深度網路進行識別)
不能一味的追求精度提升,更要兼顧計算效率、能耗、記憶體占用以及部署在移動設備和嵌入式設備中的難度,
保證模型在測驗階段乘-加運算次數少于15億次,不僅僅是實驗室學術成果,更要貼近現實,保證基本的泛化性,可以使用在更大規模資料集,
兩個是思想來源:
1)電影《盜夢空間》中的"we need to go deeper"
2)重要文獻1:網中網
1x1卷積升維-降維 Global Average Pooling層取代全連接層
3)重要文獻2:《Provable bounds for learning some deep representations》
用稀疏、分散的網路取代之前龐大密集臃腫的網路
2、Related Work(文獻綜述)
從1998年LeNet-5開始,奠定了CNN基礎結構:(卷積+normalization+最大池化)xn + 全連接層xm
通過疊加卷積層提高精度,例如AlexNet和ZFNet
通過擴大寬度(layer size)提高精度,例如ZFNet、overfeat
使用dropout降低過擬合(dropout有專門的論文,具體可參考改論文)
Improving neural networks by preventing co-adaptation of feature detectors
雖然池化層丟失了空間像素精確資訊,但是我們依然可以使用CNN進行定位和目標檢測
受神經科學研究成果啟發->多尺度資訊融合(每一個視覺神經元關注的資訊不同)
Network-in-Network文獻中說到:
(既要增加深度也要增加寬度)
Inception模塊中1x1卷積作用:
1)降維
2)減少引數量和運算量
3)增加模型深度提高非線性表達能力
之前最先進的網路機構是RBG大神(Gireshick)提出的R-CNN,
兩階段方法:
1)從影像的底層資訊中找出候選框
2)再從候選框中使用CNN進行分類和回歸
注:multi-bok方法可以提高候選框包含真實目標的比例,可以做到節省資源
3、Motivation and High Leval Considerations(哲學問題,Inception模塊思想來源)
傳統提高模型性能的方法:
1)增加深度(層數)
2)怎家寬度(卷積核個數)
適用于大規模標注好的資料集
上面方法的缺點:
1)引數過多,很容易導致過擬合
2)對小資料集和獲取標注成本大的資料集不適用
例如:(細粒度)對于圖片中兩種狗的差別普通人很難區分,需要專家對兩種類別進行標識,增大了成本

計算效率也是問題之一:兩個相連卷積層,兩層同步增加卷積核個數,計算量將平方增加,
如果很多權重訓練后接近0,這部分計算效率就被浪費,
問題總結:不能不考慮計算效率,不計成本追求精度
解決思路:想要從根本上解決這些問題(過擬合和計算效率),可以使用稀疏連接結構取代密集連接
文中舉例:Inception結構使用四路分支進行卷積處理,傳統的VGG或者是ALEX結構只是一路,相比之下Inception就是使用的稀疏結構,另外一個文獻提到了一種類似于赫布學習法則(神經元之間的突觸用進廢退)的假設,人的每個神經元(機器神經元類似)有識別物體不同部位的功能,一只貓的耳朵、眼睛、鼻子等部位會被相應功能的神經元提取,如果一張圖片中有貓出現,那么這些特征肯定都會同時出現,
稀疏結構的問題:現有的設備(CPU或者GPU),它們在密集連接中是高效的,在稀疏結構中是低效的,盡管計算量相比密集連接少了100倍,對于查表運算和快取失準的開支都會導致計算瓶頸
對于稀疏結構的解釋(有點哲學意味):
1)首先卷積的程序就具有稀疏連接的用法,在卷積核對圖片掃描的程序中,一次卷積僅提取一部分的特征
2)在Le-Net中,將上一層的部分通道組合后傳入下一層,到了AlexNet,使用上一層所有通道一起參與卷積,實作更好的并行運算加速
提出了一個新問題:能否在仍舊利用現有硬體進行密集矩陣運算的條件下,改進模型結構,哪怕只是在卷積層水平改進,從而能夠利用額外的稀疏性呢?
另外將系數矩陣分解為密集的子矩陣,能夠加速矩陣乘法,也許在不遠的未來會有人實作這種
non-uniform deep-learning architectures
Inception結構是在基于密集連接運算的情況使用稀疏連接結構,以此達到精度最高且運算效率最高的情況,在目標檢測領域,使用R-CNN和Inception結構結合可以達到很好的效果(文中在原理介紹這里提到的猜測成分,我沒看太懂,不過不影響整體結構)
Inception背后原理需要進一步探索,如果自動機器學習工具Automl能在各種情景下設計出類似結構的網路,那么證明Inception思路是正確的(還是再說這個想法是猜想)
4、Architectural Details(結構具體介紹)
設計思想
用密集模塊去近似出區域最優稀疏結構,聚合高相關性的特征輸入到下一層,
區域資訊由1x1卷積提取,越靠前面的層越提取區域資訊,大范圍空間資訊由大卷積核提取,越靠后面的層越提取大范圍空間資訊
為了保證四個支路輸出大小相同使用patch對齊,使用pading填充長寬相同,通道數不同
池化分支很有用,所以四路中應該有一個池化分支
整體結構特征是3x3和5x5卷積核比例隨模型加深提高
原生Inception模塊問題,通道數越大,引數量爆炸

結構細節介紹
對于改進版Inception的方法,
使用1x1進行降維,盡可能的減少產數量,但是也不能使用太多的降維計算,太過密集壓縮的嵌入向量不便于模型處理(既要使用降維 解決引數爆炸,也要盡可能減少使用,保證稀疏結構),所以是在3x3和5x5卷積層之前應用1x1卷積降維,之后在使用relu線性激活函 數,其作用是降維、減少引數量、增加非線性,增加模型深度,
Inception模塊的位置:
底層先用普通卷積層,后面用Inception模塊堆疊,主要考慮到訓練時的記憶體
好處:
因為使用了1x1的卷積,所以在堆疊模塊時沒有計算量爆炸
視覺資訊多尺度并行分開處理再融合匯總,比較符合人類神經系統
增加模型寬度和深度,精心調整后可實作,比相同精度普通網路快2~3倍
5、GoogLeNet
名字來源:This name is an homage to Yann LeCuns pioneering LeNet 5 network (致敬LeNet網路)
GoogLeNet網路結構及相關引數
前幾層是普通神經網路
后面堆疊九個Inception模塊
最后進行Global Average Pooling(全域平均池化):一個channel用平均值代表,取代全連接層 減少引數量
權重和計算量均勻分配給各層
這是在試驗了多個中結構之后效果最好的網路結構,具體引數如下表

細節介紹
1)所有卷積使用Relu激活函式,1x1卷積后面也是用Relu激活函式
2)在計算資源,記憶體讀寫首先設備上便于部署22層有權重的層,算上Inception內部共100層
3)用GAP代替全連接層(展平層):
1.便于fine-tune遷移學習
2.提升了0.6%的top-1準確率
4)最后一層需要使用dropout防止過擬合
5)增加了兩個輔助分類器
淺層特征對于分類已經有足夠的區分性, 在4a和4d模塊后面加輔助分類器
輔助分類器的引數被提供給訓練最后的損失函式
L=L(最后)+0.3xL(輔1)+0.3xL(輔2)

測驗階段需要去掉輔助分類器
注:淺層的輔助分類器后面被證實沒太大用處,作者在Inception v2/v3的論文中去掉了淺層輔助分類器
完整結構圖如下:

下圖為同濟子豪決議圖:




6、Training Methodology
方法設定:
1)資料并行,一個batch均分K份,讓不同節點前向和反向傳播,再由中央param server優化更新權重
把一個大的batch分成K份處理,可以在通的時間內處理更多資料
2)由于使用資料并行處理,所以也要使用異步隨機梯度下降,動量為0.9,學習率每八輪降低4%,指數衰減平均(動量)
3)調參玄學(一些調整引數的小技巧)
1.裁剪為原圖8%到100之間,寬高比3/4和4/3之間
2.data enhancement(資料增強)
3.使用隨機插值(bilinear, area, nearest neighbor and cubic,with equal probability)等概率使用不同差值方法
注:以上的調參方法和影像增強技巧對最后結果有沒有用作者也說不清楚
7、ILSVRC 2014 Classification Challenge Setup and Results (分類競賽)
其中2014年的分類競賽一共是有一百二十萬張訓練集影像,五萬張驗證集影像和十萬張測驗集影像,1000個分類,每個影像有一個標簽
兩個評價指標:
1)TOP1:第一個猜想結果就是答案
2)TOP5:前五個猜測結果中包含答案
識別分類:
1)一個好的模型應該是好而不同,文中用到的七個模型集成,每個模型使用相同的初始化方法甚至相同的初始值,相同的學習率策略,僅在影像采樣和輸入順序有區別,這里作者在文中也承認了這個錯誤,由于一些疏忽導致了這樣的結果
2)將原圖縮放為短邊長度256,288,320,352的四個尺度,每個尺度裁出左中右(或上中下)三張小圖,每張小圖取四個角和中央的五張224x224的patch以及每張小圖縮放至224x224,一共是六個patch,同時取其鏡像,綜上一共4x3x6x2=144個patch
七個模型對一張圖的144個patch進行處理再融合,
對144個patch的softmax分類結果取平均
注:這種方式太過激進,在現實應用中不需要,因為可以看到裁剪144個相對于裁剪10個的精度提升不大,裁剪數量對精度的提升是有限的
結果比較如下:

影像增強和影像裁剪實驗的對比結果,發現模型集成越多,影像裁剪-增強越多,整個模型的精度就越高,也證明了該操作對提升精度是有用的,

之后對模型的優秀分類能力進行介紹(略)
8、ILSVRC 2014 Detection Challenge Setup and Results(物體檢測競賽)
評判標準:如果演算法給出的框分類正確且與正確標簽框的交并比IOU(Jaccard相似度)>0.5,就認為這個框預測正確
使用map作為模型評估指標,每個類別不同閾值下precison-recall曲線圍成的面積--AP(0-100,越高越好)
識別結果對比表:


與R-CNN的比較:
1)結合selective search 和multi-box prediction減少無用的候選框
2)沒有使用框回歸直接對候選框分類
3)使用Inception模型作為分類器
9 、Conclusions
我們的結果似乎提供了一個堅實的證據,即通過現成的密集構建塊逼近預期的最佳稀疏結構是改進計算機視覺神經網路的一種可行方法,該方法的主要優點是在計算需求適度增加的情況下,顯著提高了質量,
我們的方法提供了堅實的證據,證明轉向更稀疏的體系結構總體上是可行和有用的,這表明在[2]的基礎上,未來有希望以自動化方式創建更稀疏、更精細的結構,
References
[1]Know your meme: We need to go deeper.http://knowyourmeme.com/memes/we-need-to-go-deeper. Accessed: 2014-09-15.
網路流行梗,盜夢空間
[2]Sanjeev Arora, Aditya Bhaskara, Rong Ge, and Tengyu Ma. Provable bounds for learning some deep representations.CoRR, abs/1310.6343, 2013
涉及到大量的數學推導,主要思想是用稀疏、分散的網路代替龐大臃腫的、密集的網路
[3]ümit V . C ? atalyürek, Cevdet Aykanat, and Bora Uc ?ar. On two-dimensional sparse matrix partitioning: Models, methods, and a recipe.SIAM J. Sci. Comput., 32(2):656–683, February 2010.
將稀疏矩陣分解為密集的子矩陣,能加速矩陣乘法
[6]Ross B. Girshick, Jeff Donahue, Trevor Darrell, and Jitendra Malik. Rich feature hierarchies for accurate object detection and semantic segmentation. InComputer Vision and Pattern Recognition, 2014. CVPR 2014. IEEE Conference on, 2014.
R-CNN目標檢測模型論文
[9]Alex Krizhevsky, Ilya Sutskever, and Geoff Hinton. Imagenet classification with deep convolutional neural networks. InAdvances in Neural Information Processing Systems 25, pages 1106–1114, 2012.
AlexNet網路框架論文
[12]Min Lin, Qiang Chen, and Shuicheng Yan. Network in network.CoRR, abs/1312.4400, 2013.
文中提出1x1卷積和Global Average Pooling
[19]Alexander Toshev and Christian Szegedy. Deeppose: Human pose estimation via deep neural networks.CoRR, abs/1312.4659, 2013.
deeppose人體姿態估計模型
[20]Koen E. A. van de Sande, Jasper R. R. Uijlings, Theo Gevers, and Arnold W. M. Smeulders. Segmentation as selective search for object recognition. InProceedings of the 2011 International Conference on Computer Vision, ICCV ’11, pages 1879–1886, Washington, DC, USA, IEEE Computer Society.
selective search生成目標檢測候選框的region proposal方法
[21]Matthew D. Zeiler and Rob Fergus. Visualizing and understanding convolutional networks. In David J. Fleet, Tomás Pajdla, Bernt Schiele, and Tinne Tuytelaars, editors,Computer Vision ECCV 2014 - 13th European Conference, Zurich, Switzerland, September 6-12, 2014, Proceedings, Part I, volume 8689 ofLecture Notes in Computer Science, pages 818–833. Springer,2014.
ZFNet 2013年ILSVRC分類競賽冠軍(文中涉及到反卷積和卷積可視化的做法和成果)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/397503.html
標籤:其他
