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

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

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

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

1.2 RCNN訓(xùn)練階段的流程:
1)預(yù)訓(xùn)練
?先在ImageNet上訓(xùn)練一個(gè)分類神經(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個(gè)輸出,改為K+1個(gè)輸出,作為一個(gè)識(shí)別K+1種類別的分類問題。(其中K為自己訓(xùn)練數(shù)據(jù)集中感興趣的目標(biāo)類別數(shù),1為背景類:IOU<0.5的預(yù)選框)
4)提取特征向量
?將每一個(gè)候選區(qū)域輸入到Fine-tune后的CNN中,去掉CNN的最后一個(gè)分類層,就得到了圖像的特征向量(類似Image caption項(xiàng)目)
5)訓(xùn)練SVM分類器
?使用特征向量為每一個(gè)類別訓(xùn)練一個(gè)二元SVM分類器。(候選區(qū)域與真實(shí)區(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ù)選框,然后再進(jìn)行模型預(yù)測。
1)選取預(yù)選框
?使用selective search選取測試圖像的預(yù)選框,并resize為固定大小
2)提取圖像特征向量
?將預(yù)選框輸入到訓(xùn)練好的CNN中,進(jìn)行圖像特征提取
3)類別預(yù)測
?將特征向量輸入到為該類別訓(xùn)練的SVM分類器進(jìn)行類別預(yù)測
4)位置預(yù)測
?使用Bounding-box回歸,預(yù)測目標(biāo)最終的位置
1.4 RCNN架構(gòu)

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

Bounding-box回歸
?Bounding-box 回歸是用來微調(diào)預(yù)選框的,使預(yù)測出來的目標(biāo)定位更加準(zhǔn)確。但并非所有的預(yù)選框都包含真實(shí)的目標(biāo),Bounding-box Regression只計(jì)算包含目標(biāo)的預(yù)選框(IOU>0.6),其它預(yù)選框則拋棄。
?在Bounding-box Regression的訓(xùn)練過程中,為預(yù)選框的位置,
為真實(shí)框的位置,Bounding-box Regression的目標(biāo)就是學(xué)會(huì)一種映射將P轉(zhuǎn)換為G。這種映射關(guān)系公式為:
關(guān)于Bounding-box回歸,:
?訓(xùn)練時(shí),其目標(biāo)就是找到預(yù)選框和真實(shí)框之間的映射關(guān)系;
?測試時(shí),采用這種'映射關(guān)系',對預(yù)測出的預(yù)選框進(jìn)行微調(diào),使得預(yù)選框定位更加準(zhǔn)確。
2.Fast RCNN
?Fast-RCNN不再像RCNN一樣,把每個(gè)候選框都單獨(dú)通過CNN提取特征,而是將整個(gè)圖像通過CNN一次性提取特征,大大減少了計(jì)算量,提高了目標(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ò)中,進(jìn)行目標(biāo)檢測(分類+回歸)

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

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

