天天看點

【一圖看懂】計算機視覺識别簡史:從 AlexNet、ResNet 到 Mask RCNN

[導讀]Medium 使用者 Đặng Hà Thế Hiển 制作了一張資訊圖示,用專業、簡潔并且最有吸引力的方式——資訊圖示,講述計算機視覺(CV)物體識别的現代史。不僅總結了CV 6 大關鍵技術和目辨別别的重要概念,整個資訊圖示從 2012年 AlexNet 赢得了 ILSVRC(ImageNet大規模視覺識别挑戰賽)說起,總結了至今關鍵的 13 大模型及其概念,比如 VGGNet、ResNet、Inception 到最近的 Mask RCNN。作者特别強調,所有參考文獻都精挑細選,以便讀者能夠知道從哪裡找到有關細節的解釋。

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

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

下載下傳位址:

https://github.com/Nikasa1889/HistoryObjectRecognition/find/master

【一圖看懂】計算機視覺識别簡史:從 AlexNet、ResNet 到 Mask RCNN
【一圖看懂】計算機視覺識别簡史:從 AlexNet、ResNet 到 Mask RCNN

點選圖檔放大檢視及儲存

計算機視覺 6 大關鍵技術

【一圖看懂】計算機視覺識别簡史:從 AlexNet、ResNet 到 Mask RCNN

圖像分類:根據圖像的主要内容進行分類。資料集:MNIST, CIFAR, ImageNet

物體定位:預測包含主要物體的圖像區域,以便識别區域中的物體。資料集:ImageNet

物體識别:定位并分類圖像中出現的所有物體。這一過程通常包括:劃出區域然後對其中的物體進行分類。資料集:PASCAL, COCO

語義分割:把圖像中的每一個像素分到其所屬物體類别,在樣例中如人類、綿羊和草地。資料集:PASCAL, COCO

執行個體分割:把圖像中的每一個像素分到其物體類别和所屬物體執行個體。資料集:PASCAL, COCO

關鍵點檢測:檢測物體上一組預定義關鍵點的位置,例如人體上或者人臉上的關鍵點。資料集:COCO

關鍵人物

這種圖列出了物體識别技術中的關鍵人物:J. Schmidhuber; Yoshua Bengio ;Yann Lecun; Georey Hinton ;Alex Graves ;Alex Krizhevsky ;Ilya Sutskever ;Andrej Karpathy; Christopher Olah ;Ross Girshick; Matthew Zeiler ;Rob Fergus ;Kaiming He ;Pierre Sermanet ;Christian Szegedy ;Joseph Redmon ;Shaoqing Ren ;Wei Liu ;Karen Simonyan;Andrew Zisserman;Evan Shelhamer ;Jonathan Long ;Trevor Darrell; Springenberg ;Mordvintsev ;V. Dumoulin ;Francesco Visin; Adit Deshpande ……

重要的 CNN 概念

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

【一圖看懂】計算機視覺識别簡史:從 AlexNet、ResNet 到 Mask RCNN

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

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

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

【一圖看懂】計算機視覺識别簡史:從 AlexNet、ResNet 到 Mask RCNN

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

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

3. 特征地圖(feature map,隐藏層的通道)

【一圖看懂】計算機視覺識别簡史:從 AlexNet、ResNet 到 Mask RCNN

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

4. 特征量(卷積中的隐藏層)

【一圖看懂】計算機視覺識别簡史:從 AlexNet、ResNet 到 Mask RCNN

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

5.作為特征量的全連接配接層

【一圖看懂】計算機視覺識别簡史:從 AlexNet、ResNet 到 Mask RCNN

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

将一個核wxhxk 卷積成一個CNN 特征量wxhxd會得到一個1x1xk特征量(=FC layer with k nodes)。将一個1x1xk 的過濾核卷積到一個1x1xd特征量,得到一個1x1xk的特征量。通過卷積層替換完全連接配接的圖層可以使ConvNet應用于任意大小的圖像。

6. 反卷積

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

【一圖看懂】計算機視覺識别簡史:從 AlexNet、ResNet 到 Mask RCNN

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

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

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

重要的目辨別别概念

1. Bounding box proposal

送出邊界框(Bounding  box proposal,又稱興趣區域,送出區域,送出框)

輸入圖像上的一個長方形區域,内含需要識别的潛在對象。送出由啟發式搜尋(對象、選擇搜尋或區域送出網絡RPN)生成。

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

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

2. Intersection over Union

【一圖看懂】計算機視覺識别簡史:從 AlexNet、ResNet 到 Mask RCNN

重疊聯合比(Intersection over Union,又稱 IoU,Jaccard 相似度)

兩個邊界框相似度的路徑成本=它們的重疊區域除以聯合區域

3. 非最大抑制(Non Maxium Suppression,又稱 NMS)

【一圖看懂】計算機視覺識别簡史:從 AlexNet、ResNet 到 Mask RCNN

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

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

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

5. 首要框(Prior box,又稱預設框、錨定框)

【一圖看懂】計算機視覺識别簡史:從 AlexNet、ResNet 到 Mask RCNN

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

6. 框比對政策

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

7. 負樣本挖掘(Hard negative example mining)

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

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

→ResNet→MaskRCNN

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

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

【一圖看懂】計算機視覺識别簡史:從 AlexNet、ResNet 到 Mask RCNN

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

【一圖看懂】計算機視覺識别簡史:從 AlexNet、ResNet 到 Mask RCNN

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

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

SPPNet:SPPNet(Spatial Pyramid Pooling Net)本質上是 RCNN 的更新,SFFNet 引入了 2 個重要的概念:适應大小池化(adaptively-sized pooling,SPP 層),以及對特征量隻計算一次。實際上,Fast-RCNN 也借鑒了這些概念,通過鏡像調整提高了 RCNN 的速度。

【一圖看懂】計算機視覺識别簡史:從 AlexNet、ResNet 到 Mask RCNN

SPPNet 用選擇性搜尋在每張圖像中生成 2000 個區域(region proposal)。然後使用 ZFNet-Conv5 從整幅圖像中抓取一個共同的全體特征量。對于每個被生成的區域,SPPNet 都使用 spatial pyramid pooling(SPP)将該區域特征從全體特征量中 pool 出來,生成一個該區域的長度固定的表征。這個表征将被用于訓練目标分類器和 box regressor。從全體特征量 pooling 特征,而不是像 RNN 那樣将所有圖像剪切(crops)全部輸入一個完整的 CNN,SPPNet 讓速度實作了 2 個數量級的提升。需要指出,盡管 SPP 運算是可微分的,但作者并沒有那麼做,是以 ZFNet 僅在 ImageNet 上訓練,沒有做 finetuning。

MultiBox:MultiBox 不像是目辨別别,更像是一種基于 ConvNet 的區域生成解決方案。MultiBox 讓區域生成網絡(region proposal network,RPN)和 prior box 的概念流行了起來,證明了卷積神經網絡在訓練後,可以生成比啟發式方法更好的 region proposal。自此以後,啟發式方法逐漸被 RPN 所取代。

MultiBox 首先将整個資料集中的所有真實 box location 聚類,找出 200 個質心(centroid),然後将其用于priorbox的中心。每幅輸入的圖像都會被從中心被裁減和重新調整大小,變為 220×220。然後,MultiBox 使用 ALexNet 提取 4096 個特征(fc7)。再加入一個 200-sigmoid 層預測目标置信度分數,另外還有一個 4×200-linear 層從每個 prior box 預測 centre offset 和 box proposal。注意下圖中顯示的 box regressors 和置信度分數在看從整幅圖像中抓取的特征。 

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 種版本。

【一圖看懂】計算機視覺識别簡史:從 AlexNet、ResNet 到 Mask RCNN

Fast RCNN:Fast RCNN本質上源于SPPNET,不同的是 Fast RCNN 帶有訓練好的特征提取網絡,用 RolPooling 取代了 SPP 層。

YOLO:YOLO(You Only Look Once)是由 MultiBox 直接衍生而來的。通過加了一層 softmax 層,與 box regressor 和 box 分類器層并列,YOLO 将原本是區域生成的 MultiBox 轉為目辨別别的方法,能夠直接預測目标的類型。

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

【一圖看懂】計算機視覺識别簡史:從 AlexNet、ResNet 到 Mask RCNN

Faster RCNN:受 Multibox 的啟發,Faster RCNN 用啟發式區域生成代替了區域生成網絡(RPN)。在 Faster RCNN 中,PRN 是一個很小的卷積網絡(3×3 conv → 1×1 conv →  1×1 conv)在移動視窗中檢視 conv5_3 全體特征量。每個移動視窗都有 9 個跟其感受野相關的 prior box。PRN 會對每個 prior box 做 bounding box regression 和 box confidence scoring。通過結合以上三者的 loss 成為一個共同的全體特征量,整個管道可以被訓練。注意,在這裡 RPN 隻關注輸入的一個小的區域;prior box 掌管中心位置和 box 的大小,Faster RCNN 的 box 設計跟 MultiBox 和 YOLO 的都不一樣。

【一圖看懂】計算機視覺識别簡史:從 AlexNet、ResNet 到 Mask RCNN

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

2017 年 Mask RCNN:通過增加一支特定類别對象掩碼預測,Mask RCNN 擴充了面向執行個體分割的Faster RCNN,與已有的邊界框回歸量和對象分類器并行。由于 RolPool 并非設計用于網絡輸入和輸出間的像素到像素對齊,MaskRCNN 用 RolAlign 取代了它。RolAlign 使用了雙線性插值來計算每個子視窗的輸入特征的準确值,而非 RolPooling 的最大池化法。

參考文獻

【一圖看懂】計算機視覺識别簡史:從 AlexNet、ResNet 到 Mask RCNN

原文釋出時間為:2017-05-01

本文作者:Đặng Hà Thế Hiển

本文來自雲栖社群合作夥伴“資料派THU”,了解相關資訊可以關注“資料派THU”微信公衆号

繼續閱讀