目标检测(R-CNN、Fast R-CNN、Fater R-CNN)
目標檢測(R-CNN、Fast R-CNN、Faster R-CNN)
1、目標檢測(object detection)
圖像識別是輸入一張圖像,輸出該圖像對應的類別。目標檢測的輸入同樣是一張國像,但輸出不單單是圖像的類別,而是該圖像中所含的所有目標物體以及它們的位置,通常使用矩形框來標識物體的位置。
大部分的目標檢測方法流程是:生成區域候選框,對這些區域框提取特征(SIFT 特征 、HOG 特征、CNN),使用圖像識別方法分類(SVM、CNN),得到所有分類成功的區域后,通過非極大值抑制( Non-maximum suppression )輸出結果。
2、候選框(bounding boxes)
區域候選框的生成主要有兩種方法,一種是窮舉法、一種是選擇性搜索。
- 窮舉法:也叫滑窗法。使用不同大小的窗口在圖片上從左到右,從上到下滑動,每次滑動就是一個候選框,由于是全局搜索而且要考慮窗口的長寬比,計算量大、效率低下。
- 選擇搜索(Selective Search):首先,使用圖像分割(邊緣等特性)算法,分割出許多小區域;然后,根據這些小區域之間相似性(顏色、紋理等)進行區域合并,不斷的進行區域迭代合并。每次迭代過程中對這些合并的子區域做 bounding boxes (外切矩形)就生成了候選框。
3、R-CNN:Region-CNN
R-CNN 算法原理:
- Selective Search 生成候選框
- 候選框區域縮放到統一大小,使用 CNN 對每個候選框提取特征
- 提取出特征后使用 SVM 進行分類
- 通過非極大值抑制輸出結果
R-CNN 訓練步驟:
- 在數據集上訓練CNN。R-CNN 論文中使用的 CNN 網絡是AlexNet,數據集為ImageNet 。
- 在目標檢測的數據集上,對訓練好的 CNN 做微調 。
- 用 Selective Search 搜索候選區域,統一使用微調后的 CNN 對這些區域提取特征,并將提取到的特征存儲起來。
- 使用存儲起來的特征,訓練SVM 分類器。
R-CNN 訓練步驟性能:
VOC 2007 數據集上,傳統方法最高的平均精確度mAP ( mean Average Precision )為40%左右,而R-CNN 的mAP 達到了58.5%.
R-CNN 的缺點是計算量太大。在一張圖片中,通過Selective Search 得到的有效區域往往在1000 個以上,這意昧著要重復計算1000 多次神經網絡,非常耗時。另外,在訓練、階段,還需要把所高特征保存起來,再通過SVM進行訓練,這也是非常耗時且麻煩的
4、Fast R-CNN
SPPNet:
SPPNet 的英文全稱是Spatial Pyramid Pooling Convolutional Networks 中文是“空間金字塔池化卷積網絡” 。
SPPNet 將 CNN 的輸入從固定尺寸改進為任意尺寸。SPPNet 在普通的 CNN 結構中加入了 ROI 池化層( ROI Pooling ),使得網絡的輸入圖像可以是任意尺寸的,輸出則不變,同樣是一個固定維數的向量。
ROI 池化層:對輸入的寬w、高h、通道數c的卷積特征進行劃分。分別劃分為4×4、2×2、1×1的網格,對每個網格中的每個通道進行最大值池化(取最大值),得到的特征是16c+4c+c = 21c 維的特征。很顯然,這個輸出特征的長度與w 、h 兩個值是無關的,因此ROI 池化層可以把任意寬度、高度的卷積特征轉換為固定長度的向量。
SPPNet 原理:先對圖像進行一遍卷積計算,得到整個圖像的卷積特征。接著, 對于原始圖像中的各種候選框,只需要在卷積特征中找到對應的位置框,再使用 ROI 池化層對位置框中的卷積提取特征,就可以完成特征提取工作。在提取特征后,使用了SVM 進行分類。
R-CNN 要對每個區域(有重疊)計算卷積,而SPPNet 只需要對整張圖片計算一次,因此 SPPNet 的效率比 R-CNN 高得多。
Fast R-CNN:
在SPPNet 中,實際上特征提取和區域分類兩個步驟還是分離的,還是使用傳統的 SVM 作為分類器。Fast R-CNN 相比 SPPNet 更進一步,不再使用 SVM 作為分類器,而是使用神經網絡進行分類,這樣就可以同時訓練特征提取網絡和分類網絡,從而取得比SPPNet 更高的準確度。
Fast R-CNN 使用全連接層進行分類。全連接層有兩個輸出,一個輸出負責分類(Softmax),另一個輸出負責框回歸(bbox regressor)。對于分類,假設要在圖像中檢測 K 類物體,那么最終的輸出應該是 K+ I 個數(一類“背景類”),每個數都代表該區域為某個類別的概率。對于框回歸,框回歸是對原始的檢測框進行某種程度的校準。因為使用 Selective Search 獲得的框可能存在一定偏差??虻乃膫€參數為(x,y,w,h),其中(x,y)表示框左上角的坐標位置,(w,h)表示框的寬度和高度。
5、Faster R-CNN
RPN( Region Proposal Network )網絡:
RPN 需要先使用一個CNN 網絡對原始圖片提取特征,使圖片變為 W×H×C 的網絡。網絡中的每一個格子負責該位置上 k 個不同的 anchor 是否存在一個物體。
使用一個 3x3 的滑動窗口,將每個位置轉為一個統一維數的特征,這個恃征對應了兩部分的輸出。一部分表示該位置的 anchor 為物體的概率,總輸出長度為2xk(一個 anchor 對應兩個輸出,是物體的概率+不是物體的概率)。另一部分為框回歸,一個 anchor 對應4 個框回歸參數,因此框回歸部分的總輸出的長度為4xk。
Faster R-CNN:
Faster R-CNN 使用 RPN 取代了 Selective Search 生成候選框后,剩下的網絡結構和 Fast R -CNN 中的結構一模一樣。在訓練過程中,需要訓練兩個網絡,一個是RPN 網絡,一個是在得到框之后的分類網絡。通常的做法是交替訓練,即在一個 batch 內,先訓練RPN 網絡一次,再訓練分類網絡一次。
6、總結
| 提取候選框 | Selective Search | Selective Search | RPN網絡 |
| 提取特征 | CNN | CNN+ROI池化 | CNN+ROI池化 |
| 分類 | SVM | 全連接 | 全連接 |
從R-CNN,到Fast R-CNN ,再到Faster R-CNN ,不僅檢測速度越來越快,而且檢測的精確度也在不斷提升。在出現R-CNN方法前,VOC 2007數據集上傳統方法所能達到的最高平均精確度( mAP )為40% 左右, R-CNN 將該值提高到了58.5%,Fast R-CNN 為70%,Faster R-CNN 又將該值提高到了78.8% 。這幾種方法既一脈相承,又不斷改進,不斷的 CNN 化。
GOOD LUCK!
總結
以上是生活随笔為你收集整理的目标检测(R-CNN、Fast R-CNN、Fater R-CNN)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php默认语法,php基本语法
- 下一篇: fasterrcnn tensorflo