一、目標(biāo)檢測概述
-
什么是目標(biāo)檢測?
?目標(biāo)檢測不僅要在圖像中找出目標(biāo)物體,還要標(biāo)記出其具體位置。目標(biāo)檢測.png 目標(biāo)檢測的難點?

-
常見的問題:
?定位不準(zhǔn)確
?識別的類別錯位
?把背景誤認(rèn)為是目標(biāo)
?檢測的目標(biāo)物錯位

二、傳統(tǒng)目標(biāo)檢測
?傳統(tǒng)的目標(biāo)檢測一般分為三個階段:首先在給定的圖像上選擇一些候選的區(qū)域,然后對這些區(qū)域提取特征,最后使用訓(xùn)練的分類器進行分類。
-
區(qū)域選擇
采用窮舉法滑動窗口,選擇出目標(biāo)可能存在的窗口。 -
特征提取
手動特征提取,常用的特征提取法有SIFT和HOG等。 -
分類器
主要有SVM,Adaboost等
?,傳統(tǒng)目標(biāo)檢測存在兩個主要問題:1.基于滑動窗口的區(qū)域選擇策略沒有針對性,時間復(fù)雜度高,窗口冗余;2.是手工設(shè)計的特征對于多樣性沒有很好的魯棒性。
1.基于HOG的目標(biāo)檢測
1)圖像預(yù)處理(統(tǒng)一亮度、色彩強度)
2)計算圖像中每一個像素點的梯度大小和方向
3)將圖像分為像素的模塊,使用HOG計算次模塊的向量表達(向量長度為9)
4)與4個相鄰的區(qū)域做四次Normalization,將四次的Normalization的結(jié)果連接為一個長度為36的向量,并且將其正則化成為單位向量
5)將圖像向量作為分類器的輸入,訓(xùn)練圖像并分類。

三、RCNN家族系列
?針對傳統(tǒng)目標(biāo)檢測中存在的兩個問題:窮舉法滑動窗口冗余和手動特征提取效果不好,RCNN系列采取了相應(yīng)的解決措施。
RCNN
針對滑動窗口
RNN采用了,對圖像進行region proposal(候選區(qū)域)的選取。這可以保證在選取較少窗的情況保持較高的召回率,并且獲取的候選窗口要比滑動窗口的質(zhì)量更高。
針對特征選取
RNN采用進行圖像特征提取。
?使用Region proposal+CNN的RCNN框架,代替了使用的滑動窗口+手工設(shè)計特征的傳統(tǒng)目標(biāo)檢測結(jié)構(gòu),使得目標(biāo)檢測取得了巨大突破。
1.1 RCNN檢測的總體流程:
?1)用selective search算法選取候選框
?2)將候選區(qū)域resize成CNN輸入的尺寸,進行特征提取
?3)使用SVM進行分類(為每個類都訓(xùn)練一個SVM分類器)

1.2 RCNN訓(xùn)練階段的流程:
1)預(yù)訓(xùn)練
?先在ImageNet上訓(xùn)練一個分類神經(jīng)網(wǎng)絡(luò)(CNN)
2)選取候選框
?用selective search算法選取候選框,并將候選框resize為同樣大小
3)Fine-tuning
?在自己的訓(xùn)練數(shù)據(jù)集中微調(diào)預(yù)訓(xùn)練好的CNN:把ImageNet上預(yù)訓(xùn)練的網(wǎng)絡(luò)從1000個輸出,改為K+1個輸出,作為一個識別K+1種類別的分類問題。(其中K為自己訓(xùn)練數(shù)據(jù)集中感興趣的目標(biāo)類別數(shù),1為背景類:IOU<0.5的預(yù)選框)
4)提取特征向量
?將每一個候選區(qū)域輸入到Fine-tune后的CNN中,去掉CNN的最后一個分類層,就得到了圖像的特征向量(類似Image caption項目)
5)訓(xùn)練SVM分類器
?使用特征向量為每一個類別訓(xùn)練一個二元SVM分類器。(候選區(qū)域與真實區(qū)域的IOU值大于0.3的為正樣本,其它為負(fù)樣本)
6)預(yù)測目標(biāo)位置
?為了減少Selective Search選取的候選區(qū)定位差誤,使用regression模型預(yù)測新的定位(x, y, w, h)
1.3 RCNN預(yù)測階段的流程:
?訓(xùn)練階段,數(shù)據(jù)做了什么處理,測試階段也要做同樣的處理。在RCNN中,測試集數(shù)據(jù)也要先使用selective算法提取圖像預(yù)選框,然后再進行模型預(yù)測。
1)選取預(yù)選框
?使用selective search選取測試圖像的預(yù)選框,并resize為固定大小
2)提取圖像特征向量
?將預(yù)選框輸入到訓(xùn)練好的CNN中,進行圖像特征提取
3)類別預(yù)測
?將特征向量輸入到為該類別訓(xùn)練的SVM分類器進行類別預(yù)測
4)位置預(yù)測
?使用Bounding-box回歸,預(yù)測目標(biāo)最終的位置
1.4 RCNN架構(gòu)

1.5 RCNN缺點:
-
預(yù)選框選取速度慢。
對于每一張圖,需要使用Selective Search算法選擇2000個候選框,這個過程本身就比較慢。 -
特征提取速度慢。
每個預(yù)選框都要單獨進入CNN中進行特征提取,存在大量重復(fù)計算 -
四個分離的部分沒有重用計算:
Selective Search:選擇候選區(qū)域
CNN:提取圖像特征
SVM:目標(biāo)類別識別
Bounding-box回歸:定位
Selective Search算法原理
1)使用圖像分割算法創(chuàng)建候選區(qū)域
2)使用貪心算法合并候選區(qū)域(通過相鄰區(qū)域的相似度)
3)重復(fù)迭代第二步,直到達到停止條件

Bounding-box回歸
?Bounding-box 回歸是用來微調(diào)預(yù)選框的,使預(yù)測出來的目標(biāo)定位更加準(zhǔn)確。但并非所有的預(yù)選框都包含真實的目標(biāo),Bounding-box Regression只計算包含目標(biāo)的預(yù)選框(IOU>0.6),其它預(yù)選框則拋棄。
?在Bounding-box Regression的訓(xùn)練過程中,為預(yù)選框的位置,
為真實框的位置,Bounding-box Regression的目標(biāo)就是學(xué)會一種映射將P轉(zhuǎn)換為G。這種映射關(guān)系公式為:
關(guān)于Bounding-box回歸,:
?訓(xùn)練時,其目標(biāo)就是找到預(yù)選框和真實框之間的映射關(guān)系;
?測試時,采用這種'映射關(guān)系',對預(yù)測出的預(yù)選框進行微調(diào),使得預(yù)選框定位更加準(zhǔn)確。
2.Fast RCNN
?Fast-RCNN不再像RCNN一樣,把每個候選框都單獨通過CNN提取特征,而是將整個圖像通過CNN一次性提取特征,大大減少了計算量,提高了目標(biāo)檢測的加速。
2.1 Fast RCNN工作流程:
1)將一整張圖像直接輸入到CNN網(wǎng)絡(luò)中,一次性提取圖像特征,得到CNN特征矩陣
2)仍然使用select search算法對圖像提取預(yù)選框
3)將可能包含目標(biāo)的預(yù)選框,在第一步提取的CNN特征圖上,找到其對應(yīng)的特征矩陣
4)通過ROI Pooling層,將預(yù)選框?qū)?yīng)的特征矩陣,resize為同樣大小
5)將預(yù)選框特征圖輸入到CNN網(wǎng)絡(luò)中,進行目標(biāo)檢測(分類+回歸)

2.2 Fast RCNN優(yōu)缺點:
優(yōu)點:
- 使用ROI池化層將不同size的預(yù)選框特征圖,映射為同一大小
- 使用一個Softmax分類代替了多個SVM分類器
- 使用多任務(wù)損失函數(shù),同時進行分類和回歸
- 將RCNN中下面3個獨立模塊整合在一起:
CNN:提取圖像特征
SVM:目標(biāo)類別識別
Bounding-box回歸:定位
缺點:
- 預(yù)選框的選取仍然是使用Selective Search算法,非常耗時
- 并為實現(xiàn)真正意義上的“端到端”架構(gòu)
2.3 Fast RCNN架構(gòu)圖:

3.Faster RCNN
?Faster RCNN不再使用select search傳統(tǒng)的算法提取預(yù)選框,而是采用Region Proposal Netword神經(jīng)網(wǎng)絡(luò)直接產(chǎn)生預(yù)選框。
?Faster RCNN將一直以來分離的region proposal和CNN分類融合到了一起,使用端到端的網(wǎng)絡(luò)進行目標(biāo)檢測,在速度和精度上都得到了不錯的提高,實現(xiàn)真正意義上的“端到端”架構(gòu)。

四、RCNN家族系列總結(jié)

