AlexNet、ResNet 到 Mask RCNN

新智元編譯

最近,物體識別已經成爲計算機視覺和AI最令人激動的領域之一。即時地識別出場景中所有的物體的能力似乎已經不再是祕密。隨着卷積神經網絡架構的發展,以及大型訓練數據集和高級計算技術的支持,計算機現在可以在某些特定設置(例如人臉識別)的任務中超越人類的識別能力。

我感覺每當計算機視覺識別方面有什麼驚人的突破發生了,都得有人再講一遍是怎麼回事。這就是我做這個圖表的原因。它試圖用最簡潔的語言和最有吸引力的方式講述物體識別的現代史。故事開始於2012年AlexNet贏得了ILSVRC(ImageNet大規模視覺識別挑戰賽)。信息圖由2頁組成,第1頁總結了重要的概念,第2頁則勾畫了歷史。每一個圖解都是重新設計的,以便更加一致和容易理解。所有參考文獻都是精挑細選的,以便讀者能夠知道從哪裏找到有關細節的解釋。

計算機視覺6大關鍵技術

圖像分類:根據圖像的主要內容進行分類。數據集:MNIST,CIFAR,ImageNet物體定位:預測包含主要物體的圖像區域,以便識別區域中的物體。數據集:ImageNet物體識別:定位並分類圖像中出現的所有物體。這一過程通常包括:劃出區域然後對其中的物體進行分類。數據集:PASCAL,COCO語義分割:把圖像中的每一個像素分到其所屬物體類別,在樣例中如人類、綿羊和草地。數據集:PASCAL,COCO實例分割:把圖像中的每一個像素分到其物體類別和所屬物體實例。數據集:PASCAL,COCO關鍵點檢測:檢測物體上一組預定義關鍵點的位置,例如人體上或者人臉上的關鍵點。數據集:COCO

關鍵人物

這種圖列出了物體識別技術中的關鍵人物:J.Schmidhuber;YoshuaBengio;YannLecun;GeoreyHinton;AlexGraves;AlexKrizhevsky;IlyaSutskever;AndrejKarpathy;ChristopherOlah;RossGirshick;MatthewZeiler;RobFergus;KaimingHe;PierreSermanet;ChristianSzegedy;JosephRedmon;ShaoqingRen;WeiLiu;KarenSimonyan;AndrewZisserman;EvanShelhamer;JonathanLong;TrevorDarrell;Springenberg;Mordvintsev;V.Dumoulin;FrancescoVisin;AditDeshpande……

重要的CNN概念

1.特徵(圖案,神經元的激活,特徵探測)

當一個特定的圖案(特徵)被呈現在輸入區(接受域)中時,一個隱藏的神經元就被會被激活。

神經元識別的團可以被進行可視化,其方法是:1)優化其輸入區,將神經元的激活(deepdream)最大化;2)將梯度(gradient)可視化或者在其輸入像素中,引導神經元激活的梯度(反向傳播以及經引導的反向傳播)3)將訓練數據集中,激活神經元最多的圖像區域進行可視化。

2.感受野(特徵的輸入區)

輸入圖像區會影響特徵的激活。換句話說,它就是特徵參考的區域。

通常,越高層上的特徵會的接受域會更寬,這能讓它能學會捕捉更多的複雜/抽象圖案。ConvNet的架構決定了感受野是如何隨着層數的改變而改變的。

3.特徵地圖(featuremap,隱藏層的通道)

指的是一系列的特徵,通過在一個滑動窗口(例如,卷積)的方式,在一個輸入地圖中的不同位置應用相同的特徵探測器來創造。在相同的特徵地圖上的特徵,有着一致的可接收形狀,並且會尋找不同位置上的相同圖案。這構成了ConvNet的空間不變性。

4.特徵量(卷積中的隱藏層)

這是一組特徵地圖,每一張地圖會在輸入地圖中的一些固定位置搜尋特定的特徵。所有的特徵的接受域大小都是一樣的。

5.作爲特徵量的全連接層

全連接層(fclayers,在識別任務中通常粘附在一個ConvNet的尾端),這一特徵量在每一張特徵滴入上都有一個特徵,其接收域會覆蓋整張圖像。全連接層中的權重矩陣W可以被轉化成一個CNN核。

將一個核wxhxk卷積成一個CNN特徵量wxhxd會得到一個1x1xk特徵量(=FClayerwithknodes)。將一個1x1xk的過濾核卷積到一個1x1xd特徵量,得到一個1x1xk的特徵量。通過卷積層替換完全連接的圖層可以使ConvNet應用於任意大小的圖像。

6.反捲積

這一操作對卷積中的梯度進行反向傳播。換句話說,它是卷積層的反向傳遞。反向的卷積可以作爲一個正常的卷積部署,並且在輸入特徵中不需要任何插入。

左圖,紅色的輸入單元負責上方四個單元的激活(四個彩色的框),進而能從這些輸出單元中獲得梯度。這一梯度反向傳播能夠通過反捲積(右圖)部署。

7.端到端物體識別管道(端到端學習/系統)

這是一個包含了所有步驟的物體識別管道(預處理、區域建議生成、建議分類、後處理),可以通過優化單個對象函數來進行整體訓練。單個對象函數是一個可差分的函數,包含了所有的處理步驟的變量。這種端到端的管道與傳統的物體識別管道的完全相反。在這些系統中,我們還不知道某個步驟的變量是如何影響整體的性能的,所以,麼一個步驟都必須要獨立的訓練,或者進行啓發式編程。

重要的目標識別概念

1.Boundingboxproposal

提交邊界框(Boundingboxproposal,又稱興趣區域,提交區域,提交框)

輸入圖像上的一個長方形區域,內含需要識別的潛在對象。提交由啓發式搜索(對象、選擇搜索或區域提交網絡RPN)生成。

一個邊界框可以由4元素向量表示,或表達爲2個角座標(x0,y0,x1,y1),或表達爲一箇中心座標和寬與高(x,y,w,h)。邊界框通常會配有一個信心指數,表示其包含對象物體的可能性。

兩個邊界框的區別一般由它們的向量表示中的L2距離在測量。w和h在計算距離前會先被對數化。

2.IntersectionoverUnion

重疊聯合比(IntersectionoverUnion,又稱IoU,Jaccard相似度)

兩個邊界框相似度的度量值=它們的重疊區域除以聯合區域

3.非最大抑制(NonMaxiumSuppression,又稱NMS)

一個融合重疊邊界框(提交或偵測出的)的一般性算法。所有明顯和高信度邊界框重疊的邊界框(IoU>IoU_threshold)都會被抑制(去除)。

4.邊界框迴歸(邊界框微調)

觀察一個輸入區域,我們可以得到一個更適合隱含對象的邊界框,即使該對象僅部分可見。下圖顯示了在只看到一部分對象時,得出真實邊界框(groundtruthbox)的可能性。因此,可以訓練迴歸量,來觀察輸入區域,並預測輸入區域框和真實框之間的offset△(x,y,w,h)。如果每個對象類別都有一個迴歸量,就稱爲特定類別迴歸量,否則就稱爲不可知類別(class-agnostic,一個迴歸量用於所有類別)。邊界框迴歸量經常伴有邊界框分類器(信度評分者),來評估邊界框中在對象存在的可信度。分類器既可以是特定類別的,也可以是不可知類別的。如果不定義首要框,輸入區域框就扮演首要框的角色。

5.首要框(Priorbox,又稱默認框、錨定框)

如果不使用輸入區域作爲唯一首要框,我們可以訓練多個邊界框迴歸量,每一個觀測相同的輸入區域,但它們各自的首要框不同。每一個迴歸量學習預測自己的首要框和真實框之間的offset。這樣,帶有不同首要框的迴歸量可以學習預測帶有不同特性(寬高比,尺寸,位置)的邊界框。相對於輸入區域,首要框可以被預先定義,或者通過羣集學習。適當的框匹配策略對於使訓練收斂是至關重要的。

6.框匹配策略

我們不能指望一個邊界框迴歸量可以預測一個離它輸入區域或首要框(更常見)太遠的對象邊界框。因此,我們需要一個框匹配策略,來判斷哪一個首要框與真實框相匹配。每一次匹配對迴歸來說都是一個訓練樣本。可能的策略有:(多框)匹配每一個帶有最高IoU的首要框的真實框;(SSD,FasterRCNN)匹配帶有任何IoU高於0.5的真實框的首要框。

7.負樣本挖掘(Hardnegativeexamplemining)

對於每個首要框,都有一個邊界框分類器來評估其內部含有對象的可能性。框匹配之後,所有其他首要框都爲負。如果我們用了所有這些負樣本,正負之間本會有明顯的不平衡。可能的解決方案是:隨機挑選負樣本(FasterRCNN),或挑選那些分類器判斷錯誤最嚴重的樣本,這樣負和正之間的比例大概是3:1。

重要視覺模型發展:AlexNet→ZFNet→VGGNet→ResNet→MaskRCNN

一切從這裏開始:現代物體識別隨着ConvNets的發展而發展,這一切始於2012年AlexNet以巨大優勢贏得ILSVRC2012。請注意,所有的物體識別方法都與ConvNet設計是正交的(任意ConvNet可以與任何對象識別方法相結合)。ConvNets用作通用圖像特徵提取器。

2012年AlexNet:AlexNet基於有着數十年曆史的LeNet,它結合了數據增強、ReLU、dropout和GPU實現。它證明了ConvNet的有效性,啓動了ConvNet的光榮迴歸,開創了計算機視覺的新紀元。

RCNN:基於區域的ConvNet(RCNN)是啓發式區域提案法(heuristicregionproposalmethod)和ConvNet特徵提取器的自然結合。從輸入圖像,使用選擇性搜索生成約2000個邊界框提案。這些被推出區域被裁剪並扭曲到固定大小的227x227圖像。然後,AlexNet爲每個彎曲圖像提取4096個特徵(fc7)。然後訓練一個SVM模型,使用4096個特徵對該變形圖像中的對象進行分類。並使用4096個提取的特徵來訓練多個類別特定的邊界框迴歸器來改進邊界框。

OverFeat:OverFeat使用AlexNet在一個輸入圖像的多個層次下的多個均勻間隔方形窗口中提取特徵。訓練一個對象分類器和一個類別不可知盒子迴歸器,用於對Pool5層(339x339接收域窗口)中每5x5區域的對象進行分類並對邊界框進行細化。OverFeat將fc層替換爲1x1xN的卷積層,以便能夠預測多尺度圖像。因爲在Pool5中移動一個像素時,接受場移動36像素,所以窗口通常與對象不完全對齊。OverFeat引入了詳盡的池化方案:Pool5應用於其輸入的每個偏移量,這導致9個Pool5卷。窗口現在只有12像素而不是36像素。

2013年ZFNet:ZFNet是ILSVRC2013的冠軍得主,它實際上就是在AlexNet的基礎上做了鏡像調整(mirrormodification):在第一個卷積層使用7×7核而非11×11覈保留了更多的信息。

SPPNet:SPPNet(SpatialPyramidPoolingNet)本質上是RCNN的升級,SFFNet引入了2個重要的概念:適應大小池化(adaptively-sizedpooling,SPP層),以及對特徵量只計算一次。實際上,Fast-RCNN也借鑑了這些概念,通過鏡像調整提高了RCNN的速度。

SPPNet用選擇性搜索在每張圖像中生成2000個區域(regionproposal)。然後使用ZFNet-Conv5從整幅圖像中抓取一個共同的全體特徵量。對於每個被生成的區域,SPPNet都使用spatialpyramidpooling(SPP)將該區域特徵從全體特徵量中pool出來,生成一個該區域的長度固定的表徵。這個表徵將被用於訓練目標分類器和boxregressor。從全體特徵量pooling特徵,而不是像RNN那樣將所有圖像剪切(crops)全部輸入一個完整的CNN,SPPNet讓速度實現了2個數量級的提升。需要指出,儘管SPP運算是可微分的,但作者並沒有那麼做,因此ZFNet僅在ImageNet上訓練,沒有做finetuning。

MultiBox:MultiBox不像是目標識別,更像是一種基於ConvNet的區域生成解決方案。MultiBox讓區域生成網絡(regionproposalnetwork,RPN)和priorbox的概念流行了起來,證明了卷積神經網絡在訓練後,可以生成比啓發式方法更好的regionproposal。自此以後,啓發式方法逐漸被RPN所取代。MultiBox首先將整個數據集中的所有真實boxlocation聚類,找出200個質心(centroid),然後用將其用於priorbox的中心。每幅輸入的圖像都會被從中心被裁減和重新調整大小,變爲220×220。然後,MultiBox使用ALexNet提取4096個特徵(fc7)。再加入一個200-sigmoid層預測目標置信度分數,另外還有一個4×200-linear層從每個priorbox預測centreoffset和boxproposal。注意下圖中顯示的boxregressors和置信度分數在看從整幅圖像中抓取的特徵。

2014年VGGNet:雖然不是ILSVRC冠軍,VGGNet仍然是如今最常見的卷積架構之一,這也是因爲它簡單有效。VGGNet的主要思想是通過堆疊多層小核卷積層,取代大核的卷積層。VGGNet嚴格使用3×3卷積,步長和padding都爲1,還有2×2的步長爲2的maxpooling層。

2014年Inception:Inception(GoogLeNet)是2014年ILSVRC的冠軍。與傳統的按順序堆疊卷積和maxpooling層不同,Inception堆疊的是Inception模塊,這些模塊包含多個並行的卷積層和許多核的大小不同的maxpooling層。Inception使用1×1卷積層減少特徵量輸出的深度。目前,Inception有4種版本。

FastRCNN:FastRCNN本質上SPPNet,不同的是FastRCNN帶有訓練好的特徵提取網絡,用RolPooling取代了SPP層。

YOLO:YOLO(YouOnlyLookOnce)是由MultiBox直接衍生而來的。通過加了一層softmax層,與boxregressor和box分類器層並列,YOLO將原本是區域生成的MultiBox轉爲目標識別的方法,能夠直接預測目標的類型。

2015ResNet:ResNet以令人難以置信的3.6%的錯誤率(人類水平爲5-10%)贏得了2015年ILSVRC比賽。ResNet不是將輸入表達式轉換爲輸出表示,而是順序地堆疊殘差塊,每個塊都計算它想要對其輸入的變化(殘差),並將其添加到其輸入以產生其輸出表示。這與boosting有一點關。

FasterRCNN:受Multibox的啓發,FasterRCNN用啓發式區域生成代替了區域生成網絡(RPN)。在FasterRCNN中,PRN是一個很小的卷積網絡(3×3conv→1×1conv→1×1conv)在移動窗口中查看conv5_3全體特徵量。每個移動窗口都有9個跟其感受野相關的priorbox。PRN會對每個priorbox做boundingboxregression和boxconfidencescoring。通過結合以上三者的loss成爲一個共同的全體特徵量,整個管道可以被訓練。注意,在這裏RPN只關注輸入的一個小的區域;priorbox掌管中心位置和box的大小,FasterRCNN的box設計跟MultiBox和YOLO的都不一樣。

2016年SSD:SSD利用FasterRCNN的RPN,直接對每個先前的box內的對象進行分類,而不僅僅是對對象置信度(類似於YOLO)進行分類。通過在不同深度的多個卷積層上運行RPN來改善前一個box分辨率的多樣性。

2017年MaskRCNN:通過增加一支特定類別對象掩碼預測,MaskRCNN擴展了面向實例分割的FasterRCNN,與已有的邊界框迴歸量和對象分類器並行。由於RolPool並非設計用於網絡輸入和輸出間的像素到像素對齊,MaskRCNN用RolAlign取代了它。RolAlign使用了雙線性插值來計算每個子窗口的輸入特徵的準確值,而非RolPooling的最大池化法。

參考文獻

轉載自http://baijiahao.baidu.com/s?id=1566125622830479&wfr=spider&for=pc
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章