R-CNN算法介紹(R-CNN專題)
R-CNN(Region-based Convolutional Neural Networks)是利用深度學(xué)習(xí)進(jìn)行目標(biāo)檢測的開山之作,由Ross Girshick等人在2014年提出,論文地址:https://arxiv.org/abs/1311.2524;
R-CNN算法流程:


第一步:通過Selective Search算法,在一張圖像上生成1k~2k個(gè)候選框
Selective Search算法通過圖像分割的方法得到一些原始區(qū)域,然后使用一些合并策略將這些區(qū)域合并,得到具有層次化的區(qū)域結(jié)構(gòu),這些區(qū)域結(jié)構(gòu)就包含著可能需要的物體,如下圖所示。

Selective Search算法代碼實(shí)現(xiàn)
第二步:通過CNN網(wǎng)絡(luò)對每個(gè)候選框進(jìn)行特征提取,每個(gè)候選框生成4096維特征向量
將Selective Search算法生成的2000個(gè)候選框Resize成227*227的大小,然后輸入到AlexNet網(wǎng)絡(luò),得到對應(yīng)的2000個(gè)4096維特征向量,如下圖。

第三步:將每個(gè)特征向量輸入到每一類的SVM分類器,判定是否屬于該類
將2000個(gè)4096維特征向量(2000*4096矩陣)與20個(gè)SVM分類器(用于訓(xùn)練的Pascal VOC 2007數(shù)據(jù)集有20個(gè)類別)組成的4096*20權(quán)值矩陣進(jìn)行相乘,得到2000*20矩陣,表示每個(gè)候選框是某個(gè)類別的得分;對于同一類別的候選框,使用非極大值抑制NMS算法(參考:算法崗面試總結(jié)—目標(biāo)檢測篇(第二題))剔除多余的候選框。

第四步:使用回歸器調(diào)整候選框的位置
對于NMS處理后剩余的候選框,再通過20個(gè)回歸器,使用最小二乘法,通過最小化誤差(候選框和標(biāo)注框之間的差)的平方和尋找最佳函數(shù)匹配。
R-CNN算法的缺點(diǎn):
訓(xùn)練速度慢:訓(xùn)練過程及其繁瑣;
訓(xùn)練空間大:每張圖片會生成2000個(gè)候選框,需要對所有候選框進(jìn)行特征提取,而Pascal VOC 2007訓(xùn)練集有5000多張圖片,所有候選框的特征向量占內(nèi)存空間很大;
測試速度慢:Selective Search算法提取候選框需要2s左右,再對所有候選框進(jìn)行特征提取,最后檢測一張圖片需要大約53s(CPU)。