1. 程式人生 > >RCNN系列(1):R-CNN—用於精準目標檢測和語義分割的功能結構

RCNN系列(1):R-CNN—用於精準目標檢測和語義分割的功能結構

論文地址: Rich feature hierarchies for accurate object detection and semantic segmentation
MATLAB實現:github連結

0. 摘要

  論文中提出的方法包含兩個關鍵的點

  • 將卷積神經網路和區域提議selective search方法結合
  • 當訓練資料匱乏,在ImageNet上的有監督預訓練和微調仍然能夠產生大幅效能提升

1. 介紹

  論文使用卷積神經網路來提取特徵,因為方法將區域提議和卷積神經網路結合,該方法可以被稱為R-CNN:Regions with CNN features,該方法包含四個階段:

  • 對每個輸入影象生成2000左右的候選區域
  • 對每個候選區域使用卷積神經網路進行特徵提取
  • 使用SVM判斷區域的特徵,判斷其是否屬於該類
  • 使用迴歸器精細化邊框
      定位問題解決之後,還有另一個問題即:有效標註的資料匱乏導致訓練大規模的卷積神經網路的訓練非常困難。傳統的方法是使用無監督的預訓練,但該文提出先將卷積神經網路在大的通用資料集比如ImageNet上進行訓練後再在小的比如PASCAL VOC資料集上進行微調。

2. 使用R-CNN進行目標檢測

  R-CNN包含三個模組,有區域提議模組,特徵提取模組(卷積神經網路)和分類模組SVMs。

2.1 模組設計

區域提議;使用selective search選擇性搜尋區別於滑動視窗的暴力區域識別,可以避免目標碎片,提升檢測效率。selective search是結合直覺分割和窮舉搜尋演算法提出的,前者希望集合圖片的結構層次從下至上來分割,後者希望得到可能是目標的所有區域,集合二者,得到多樣化抽樣演算法。它具有三個特點即:

  • 使用於所有尺寸
  • 多樣化的策略,包括顏色空間,紋理吻合度等
  • 計算快速
      選擇型搜尋使用的是按層次合併演算法,基本思路是:通過對一張圖片從低向上來進行層次劃分,當劃出一個大區域時,繼續在這個大區域中迭代劃分,知到劃不出區域為止,並將這個過程中產生的所有的區域記錄下來,再通過顏色、紋理、吻合度、大小[合併後總面積小的,保證合併的尺度均勻,避免大區域吃掉小區域]來將這些細碎的區域進行合併,具體流程如下圖:
    在這裡插入圖片描述
  1. 使用Efficient Graph-Based Image Segmentation中的方法按層次來快速得到分割區域R
  2. 初始化相似度集合S
  3. 從分割區域集合R中來兩兩計算相似度,放入相似度集合中
  4. 從相似度集合中取出相似度最高的兩個分割區域,然後合併並放入R中,然後從相似度集合中去除掉這兩個區域相關聯的屈居,然後計算合併的新區域和它鄰近區域的相似性,放入S中,迴圈知到S集合為空集
  5. 重複s知到這個區域變為1
  6. 輸出這個過程中所有的變化的區域
      多樣策略分為兩個部分,顏色空間多樣性和區域相似度多樣性,
  • 顏色空間多樣性包括RGB,灰度圖,Lab,RGB影象中歸一化的rg通道和影象灰度圖,HSV,歸一化的rgb,C,H
  • 區域相似度多樣性包括紋理、吻合度、大小這幾個特徵
    特徵提取;要從每個候選區域中提取一個4096維的特徵向量,需要將圖片轉化為有效的神經網路的輸入再進行封裝。因為得到的矩形框尺寸各異,不能直接輸入CNN,需要將所有的候選框縮小的固定的大小,有兩種方法可選:
  • 各向異性縮放:直接縮放不論長寬比
  • 各向同性縮放:不論長寬比進行縮放造成的圖片扭曲估計會對後續CNN的訓練精度有影響,各向同性縮放方案有兩種辦法:一是先擴充後裁剪,二是先裁剪後擴充[滑動視窗來定位的化對於深層網路大圖片太難了]
      VGG16選擇較小的卷積核核較小的步長,網路精度高但是計算量大,但是CNN訓練的時候本來就是對邊界框中的物體進行識別分類訓練,最後一層softmax就是分類層,那麼之前的計算量那麼大的特徵提取階段再把特徵用於訓練SVM的目的是什麼?
      SVM訓練核CNN訓練過程的正負樣本定義方式各有不同,導致最後採用CNN softmax輸出比svm精度還低。因為cnn在訓練的時候對訓練資料做了寬鬆的標註,每一個邊界框可能只包含物體的一部分也被稱為正樣本以訓練CNN,這樣主要是因為cnn容易過擬合,因此需要大量訓練資料,所以訓練階段位置限制條件寬鬆,iou大於0.5都被標註為正樣本。而SVM訓練使用於少樣本,對訓練樣本要求較高。可以簡單看一下SVM的訓練過程
      只有當邊界框完全包含物體被稱為正樣本,沒有包含車輛的稱為負樣本。而檢測的時候檢測視窗只有部分物體,該論文測試了不同的IOU閾值發現,低於0.3的標為負樣本效果最好。這樣當特徵提取出來之後(fc7的輸出),為每個類別訓練一個svm分類器,每個svm包含4096個權值。

2.2 測試階段

  測試階段,先在每張測試圖片上劃分出2000個左右的區域框,然後封裝並計算以抽取特徵;然後對於每個類別通過SVM得到一個分數;接著對每個類分別應用非極大值抑制來剔除與分數較大的框的交併比大於某個學習到的閾值的提議框。
  非極大值抑制是指剔除沒用的矩形框,比如有六個矩形框,最大概率的一個與其他五個分別比較,去掉超過某一閾值的框,並標記概率最大的一個,保留;剩下的三個,重複上一個步驟,直到找到所有被保留下來的。
執行時分析
  有兩個特效能夠使檢測更加高效,一是卷積神經網路的引數在各個階段是共享的;二是通過CNN得到的特徵向量維度低。

2.3 流程

在這裡插入圖片描述