RCNN算法流程
RCNN算法流程可分為4個步驟
- 一張圖像生成1K~2K個候選區域(使用Selective Search方法)
- 對每個候選區域,使用深度網絡圖特征
- 特征送入每一類的SVM分類器,判別是否屬于該類
- 使用回歸期器細修正候選框位置
?1.候選區域的生成
????????利用Selective Search算法通過圖像分割的方法得到一些原始區域,然后使用一些合并策略將這些區域合并,得到一個層次化的區域結構,而這些結構就包含著可能需要的物體。
2.對每個候選區域,使用深度網絡提取特征
????????將2000候選區域縮放到227x227pixel,接著將候選區域輸入事先訓練好的AlexNet CNN網絡獲取4096維的特征得到2000X4096維矩陣。
?3.特征送入每一類的SVM分類器,判定類別
????????將2000X4096維特征與20個SVM組成的權值矩陣4096X20相乘獲得2000X20維矩陣表示每個建議框是某個目標類別的得分(建議框歸屬于每一個類別的概率)。分別對上述2000X20維矩陣中每一列即每一類進行非極大值抑制剔除重疊建議框,得到該列即該類中得分最高的一些建議框。
???????將2000X4096的特征矩陣與20個SVM組成的權值矩陣4096X20相乘,獲得2000X20的概率矩陣,每一行代表一個建議框歸于每個目標類別的概率。分別對上述2000X20維矩陣中每一列即每一類進行非極大值抑制剔除重疊建議框,得到該列即該類中得分最高的一些建議框。
?最左邊是2000×4096的一個特征矩陣,在特征矩陣中,每一行就是我們一個候選框通過CNN網絡得到的一個特征向量,然后它有2000個候選框,所以它有2000行特征向量。
中間的圖是SVM權值矩陣,每一列對應著一個類別的的權值向量,一共有20個類別,拼接在一起就是4096×20的權值矩陣。(假設SVM分類器的第一列使我們所需要檢測的貓,第二列是我們所需檢測的狗......)
非最大抑制:抑制不是最大值的元素
4.使用回歸器精細修正候選框位置
????????對NMS處理后剩余的建議框進一步篩選。接著分別用20個回歸器對上述20個類別中剩余的建議框進行回歸操作,最終得到每個類別的修正后的得分最高的bounding box。
????????如圖,黃色框口P表示建議框Region Proposal,綠色窗口G表示實際框Ground Truth,紅色窗G表示Region Proposal進行回歸后的預測窗口,可以用最小二乘法解決的線性回歸問題。
R-CNN框架
?R-CNN存在的問題
1.測試速度慢:
????????測試一張圖片約53s(CPU)。用Selective Search算法提取候選框用時約2秒,一張圖像內候選框之間存在大量重疊,提取特征操作冗余。
2.訓練速度慢:
????????過程及其繁瑣
3.訓練所需空間大:
????????對于SVM和bbox回歸訓練,需要從每個圖像中的每個目標候選框提取特征,并寫入磁盤。對于非常深的網絡,如VGG16,從VOCO7訓練集上的5k圖像上提取的特征需要數百GB的存儲空間