模型進化過程
傳統方法----RCNN
RCNN主要分爲三部分:區域生成(selective search,SS)、特性提取(CNN)、分類器(SVM),網絡模型可以分爲四個模塊。
模塊1:使用選擇性搜索,獲取2000個區域,這2000個區域與分類無關,只是包含每個物品的窗口,之後區域預處理,將尺寸變爲227x227大小。
模塊2:使用AlexNet網絡,對所有區域進行提取特徵。
模塊3:SVM分類器,對CNN特徵進行分類,每一個分類,一個2分類SVM。
模塊4:Bounding box迴歸模型,對SS提供區域精化,每個分類一個迴歸模型。
R-CNN缺點
- 卷積特徵重複計算量太大,每張圖片的2000區域都會計算CNN特徵
SPP-Net:基於空間金字塔池化的優化RCNN方法
RCNN計算方式會給網絡帶來巨大的計算量,提出優化金字塔方法。空間金字塔池化(Spatial Pyramid Pooling,SPP)最大特點是不在關心輸入圖片尺寸,而是根據輸出類別的個數,通過算法來生成多個不同範圍內的池化層,由它們對輸入進行並行池化處理,最終的輸出特徵個數與生成類別個數相等,接着在進行類別比較和判定。應用這種技術的網絡爲SPP-Net。該網絡對比RCNN的兩大改進:
- 直接輸入整張圖,所有區域共享卷積計算(僅一遍),在conv5層上提取所有區域特徵。
- 引入空間金字塔池化,爲不同尺寸的區域提取特徵,再將特徵映射到尺寸固定的全連接層上。
SPP-Net效率要比RCNN快30-170倍,並有更高的準確率。
黑色圖片代表卷積之後的特徵圖,接着我們以不同大小的塊來提取特徵,分別是4*4,2*2,1*1,將這三張網格放到下面這張特徵圖上,就可以得到16+4+1=21種不同的塊(Spatial bins),我們從這21個塊中,每個塊提取出一個特徵,這樣剛好就是我們要提取的21維特徵向量。這種以不同的大小格子的組合方式來池化的過程就是空間金字塔池化(SPP)。比如,要進行空間金字塔最大池化,其實就是從這21個圖片塊中,分別計算每個塊的最大值,從而得到一個輸出單元,最終得到一個21維特徵的輸出。
SPP-Net訓練流程
- M—在ImageNet上對CNN模型進行預訓練
- F—計算所有SS區域的SPP特徵
- M1—使用F特徵訓練fc6->fc7->fc8層
- F1—計算M1的fc7特徵
- C—使用F1特徵訓練線性SVM分類器
- R—使用F特徵訓練Bounging box迴歸模型。
SPP-Net新缺點
- 需要存儲大量特性
- 複雜多樣訓練
- 訓練時間長度爲25.5小時,仍長
下面爲RCNN與SPP-Net網絡結構對比圖,左邊爲RCNN網絡,右邊爲SPP-Net網絡。
Fast-RCNN網絡
Fast-RCNN在SPP-Net的基礎上進行了改進,並將它嫁接到VGG16上形成的網絡,在網絡中引入2點新技術:
- 將空間空間金字塔池化(SPP)改爲感興趣區域池化(ROI pooling),實際上ROI pooling爲SPP的簡化形式,SPP層中包含不同尺度的池化層,而ROI pooling中只包含一種尺度。它先將原來圖片進行相同尺度裁剪,每個字快變爲ROI 然後對ROI 單獨max-Pool,得到每個block最大值。
- 引入多任務損失函數
Fast-RCNN在SPP-Net上的改進點
- 不在使用SVM線性分類器,使用softmax classifer和bounding box迴歸聯合訓練更新參數,實現網絡的端到訓練。
- 所有層參數都可以fine train
- 不需要離線存儲文件
- 訓練時間更快9.5H
Faster-RCNN網絡
Faster-RCNN網絡在Fast-RCNN網絡基礎上添加了Region Proposal Network(RPN)網絡,Faster-RCNN=Fast-RCNN+RPN,PRN取代了離線的Selective Search模塊,進一步共享卷積計算,並且引導Fast-RCNN關注區域,高準確率,高recall。 Faster-RCNN分爲4個階段訓練:
- 訓練RPN網絡
- 訓練Fast-RCNN網絡
- 調優RPN
- 調優Fast-RCNN
下面爲Fast-RCN與Faster-RCN網絡結構對比圖。
RPN網絡
RPN是指,先用nxn的滑動窗口在原圖像上掃描,生成M個特徵值,這M個特徵值,將M個特徵值接到兩個卷積網絡reglayer與classlayer中輸出。reglayer裏面包含圖像座標x與y以及長寬,classlayer裏面有判斷這部分是前景還是背景的標誌值。在訓練時,一個小批次是由一幅圖片與256個候選框組成的,其中正負樣本的比例爲1:1。對於正負樣本的標註是,reglayer 範圍內對應的classlayer的重合度大於0.7(即爲正樣本),如果都不大於0.7,則爲其中最大值爲正樣本。最終通過softmax loss和regression loss 按照一定權重比例計算loss。
R-FCN-----區域全卷積神經網絡(2016)
R-FCN的出現是因爲基於舊結構設計的RCNN出現問題
- 結構:ROI-Wise的字網絡無隱含層
- 性能:檢測性能和分類性能不一致
應用困難:
- 檢測網絡的變化敏感性
- 分類網絡變換的不變形,卷積層越深,不變性越強,對變化越不敏感
R-FCN的提出適應全卷積化CNN的結構,提出全卷積化設計共享所有卷積層並引入變換敏感性
變換敏感性:
- 位置敏感分值圖 特殊設計的卷積層 ,輸出kxk個Grid位置信息(相對)+類別分值(C個物體類+1個背景類)
- 位置敏感池化 無訓練參數,無全連接網絡的類別推斷