目標(biāo)檢測算法

  1. 滑窗(SW):其基本原理就是采用不同大小和比例(寬高比)的窗口在整張圖片上以一定的步長進(jìn)行滑動,然后對這些窗口對應(yīng)的區(qū)域做圖像分類,這樣就可以實(shí)現(xiàn)對整張圖片的檢測了。
    缺點(diǎn):致命的缺點(diǎn)就是你并不知道要檢測的目標(biāo)大小是什么規(guī)模,所以你要設(shè)置不同大小和比例的窗口去滑動,而且還要選取合適的步長。但是這樣會產(chǎn)生很多的子區(qū)域,并且都要經(jīng)過分類器去做預(yù)測,這需要很大的計算量,所以你的分類器不能太復(fù)雜,因?yàn)橐WC速度。

2.CNN:實(shí)現(xiàn)更高效的滑動窗口方法,網(wǎng)絡(luò)中用卷積層代替了全連接層,一次CNN計算就可以實(shí)現(xiàn)窗口滑 動的所有子區(qū)域的分類預(yù)測,圖片的空間位置信息的不變性,盡管卷積過程中圖片大小減少,但是位置對應(yīng)關(guān)系還是保存的。
缺點(diǎn):固定大小與步長的窗口,定位不夠準(zhǔn)確,定位框形狀固定。

3.YOLO算法:把圖像劃分為NXN個小區(qū)域,以小區(qū)域?yàn)閱挝唤o目標(biāo)設(shè)定一個(BX5+C)個值的標(biāo)簽,5包括:置信度,x,y,w,h;C是要檢測的目標(biāo)類別。最后卷積產(chǎn)生形狀為NXNX(BX5+C)大小的張量來擬合各個小區(qū)域的目標(biāo)標(biāo)簽。解決了定位框大小固定的問題。
缺點(diǎn):一個單元格內(nèi)存在多個目標(biāo),這時候Yolo算法就只能選擇其中一個來訓(xùn)練;Yolo各個單元格僅僅預(yù)測兩個邊界框,而且屬于一個類別;對于小物體,Yolo的表現(xiàn)會不如人意。這方面的改進(jìn)可以看SSD,其采用多尺度單元格。也可以看Faster R-CNN,其采用了anchor boxes。Yolo對于在物體的寬高比方面泛化率低,就是無法定位不尋常比例的物體。當(dāng)然Yolo只使用NXN的網(wǎng)格,定位不準(zhǔn)確也是很大的問題。

4.區(qū)域連通分析(CC):對象是一張二值化后的圖像。
有兩種方法:Two-Pass和Seed-Filling。Seed-Filling:
1)掃描圖像,直到當(dāng)前像素點(diǎn)B(x,y) == 1:
a、將B(x,y)作為種子(像素位置),并賦予其一個label,然后將該種子相鄰的所有前景像素都壓入棧中;
b、彈出棧頂像素,賦予其相同的label,然后再將與該棧頂像素相鄰的所有前景像素都壓入棧中;
c、重復(fù)b步驟,直到棧為空;
此時,便找到了圖像B中的一個連通區(qū)域,該區(qū)域內(nèi)的像素值被標(biāo)記為label;
2)重復(fù)第(1)步,直到掃描結(jié)束;
掃描結(jié)束后,就可以得到圖像B中所有的連通區(qū)域;

5.多尺度候選區(qū)域的方法:
R-CNN:Selective Search得到大小不以的候選區(qū)域-->針對每個候選區(qū)域做warp縮放成統(tǒng)一大小的候選區(qū)域-->針對每個區(qū)域做CNN提取特征,并保存到硬盤-->SVM對各個候選區(qū)域特征做分類。
缺點(diǎn):非端到端,做warp圖像失真,Selective Search和對每一個候選區(qū)域做CNN導(dǎo)致速度慢。

Fast R-CNN:Selective Search得到大小不以的候選區(qū)域-->針對原圖做CNN提取全圖特征-->全圖特征對候選區(qū)做映射,得到各個候選區(qū)特征-->針對大小不一的候選區(qū)做ROI Pooling(SPP Net)將候選區(qū)特征大小統(tǒng)一-->Linear+softmax分類+Bounding-box regression。
ROI pooling具體操作如下:
(1)根據(jù)輸入image,將ROI映射到feature map對應(yīng)位置;
(2)將映射后的區(qū)域劃分為相同大小的sections(sections數(shù)量與輸出的維度相同);
(3)對每個sections進(jìn)行max pooling操作;
缺點(diǎn):Selective Search仍然慢

Faster R-CNN:對全圖CNN-->Region Proposal Network(RPN)代替Selective Search,RPN是在全圖特征圖上做滑窗,對滑窗內(nèi)特征做物體分類+框位置回歸(設(shè)置了anchor box和標(biāo)定了Ground Truth)-->對候選區(qū)特征做ROI Pooling-->Linear+softmax分類+Bounding-box regression。
RPN

6.YOLO的回歸思想速度快但定位精度不算高,候選區(qū)方法(Region Proposal)精度高但速度不是特別快,把兩者結(jié)合-->SSD,精度高VOC2007上mAP達(dá)到72.1%,在GPU上58幀每秒。

一、SSD網(wǎng)絡(luò)總體架構(gòu)
1

2

SSD算法步驟:

1. 輸入一幅圖片(200x200),將其輸入到預(yù)訓(xùn)練好的分類網(wǎng)絡(luò)中來獲得不同大小的特征映射,修改了傳統(tǒng)的VGG16網(wǎng)絡(luò);將VGG16的FC6和FC7層轉(zhuǎn)化為卷積層,如圖1上的Conv6和Conv7;去掉所有的Dropout層和FC8層;添加了Atrous算法(hole算法);將Pool5從2x2-S2變換到3x3-S1;

  1. 抽取Conv4_3、Conv7、Conv8_2、Conv9_2、Conv10_2、Conv11_2層的feature map,然后分別在這些feature map層上面的每一個點(diǎn)構(gòu)造6個不同尺度大小的BB,然后分別進(jìn)行檢測和分類,生成多個BB,如圖1所示;

3. 將不同feature map獲得的BB結(jié)合起來,經(jīng)過NMS(非極大值抑制)方法來抑制掉一部分重疊或者不正確的BB,生成最終的BB集合(即檢測結(jié)果);

訓(xùn)練過程中:
1.數(shù)據(jù)增強(qiáng):旋轉(zhuǎn),放大,縮小等;

  1. Hard Negative Mining技術(shù)
    一般情況下negative default boxes數(shù)量是遠(yuǎn)大于positive default boxes數(shù)量,如果隨機(jī)選取樣本訓(xùn)練會導(dǎo)致網(wǎng)絡(luò)過于重視負(fù)樣本(因?yàn)槌槿〉截?fù)樣本的概率值更大一些),這會使得loss不穩(wěn)定。因此需要平衡正負(fù)樣本的個數(shù),我們常用的方法就是Hard Ngative Mining,即依據(jù)confidience score對default box進(jìn)行排序,挑選其中confidience高的box進(jìn)行訓(xùn)練,將正負(fù)樣本的比例控制在positive:negative=1:3,這樣會取得更好的效果。如果我們不加控制的話,很可能會出現(xiàn)Sample到的所有樣本都是負(fù)樣本(即讓網(wǎng)絡(luò)從這些負(fù)樣本中找正確目標(biāo),這顯然是不可以的),這樣就會使得網(wǎng)絡(luò)的性能變差。

  2. 匹配策略(即如何重多個default box中找到和ground truth最接近的box)
    首先,尋找與每一個ground truth有最大的IoU的default box,這樣就能保證ground truth至少有default box匹配;SSD之后又將剩余還沒有配對的default box與任意一個ground truth嘗試配對,只要兩者之間的IoU大于閾值(SSD 300 閾值為0.5),就認(rèn)為match;配對到ground truth的default box就是positive,沒有配對的default box就是negative。
    總之,一個ground truth可能對應(yīng)多個positive default box,而不再像MultiBox那樣只取一個IoU最大的default box。其他的作為負(fù)樣本(每個default box要么是正樣本box要么是負(fù)樣本box)。

SSD論文貢獻(xiàn):

1. 引入了一種單階段的檢測器,比以前的算法YOLO更準(zhǔn)更快,并沒有使用RPN和Pooling操作;

2. 使用一個小的卷積濾波器應(yīng)用在不同的feature map層從而預(yù)測BB的類別的BB偏差;

3. 可以在更小的輸入圖片中得到更好的檢測效果(相比Faster-rcnn);

4. 在多個數(shù)據(jù)集(PASCAL、VOC、COCO、ILSVRC)上面的測試結(jié)果表明,它可以獲得更高的mAp值;

SSD和其它算法的性能比較

Faster-rcnn與SSD比較:


圖6 Faster-rcnn與SSD比較

如圖所示,對于BB的生成,F(xiàn)aster-rcnn和SSD有不同的策略,但是都是為了同一個目的,產(chǎn)生不同尺度,不同形狀的BB,用來檢測物體。對于Faster-rcnn而言,其在特定層的Feature map上面的每一點(diǎn)生成9個預(yù)定義好的BB,然后進(jìn)行回歸和分類操作進(jìn)行初步檢測,然后進(jìn)行ROI Pooling和檢測獲得相應(yīng)的BB;而SSD則在不同的特征層的feature map上的每個點(diǎn)同時獲取6個不同的BB(6種滑窗),然后將這些BB結(jié)合起來,最后經(jīng)過NMS處理獲得最后的BB。
非極大值抑制的方法是:先假設(shè)有6個矩形框,根據(jù)分類器的類別分類概率做排序,假設(shè)從小到大屬于車輛的概率 分別為A、B、C、D、E、F。
(1)從最大概率矩形框F開始,分別判斷A~E與F的重疊度IOU是否大于某個設(shè)定的閾值;
(2)假設(shè)B、D與F的重疊度超過閾值,那么就扔掉B、D;并標(biāo)記第一個矩形框F,是我們保留下來的。
(3)從剩下的矩形框A、C、E中,選擇概率最大的E,然后判斷E與A、C的重疊度,重疊度大于一定的閾值,那么就扔掉;并標(biāo)記E是我們保留下來的第二個矩形框。
就這樣一直重復(fù),找到所有被保留下來的矩形框。

微信圖片_20191212120617.jpg
邊框回歸
邊框回歸
物體分類
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。