0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

最全綜述:圖像目標(biāo)檢測(cè)

新機(jī)器視覺(jué) ? 來(lái)源:新機(jī)器視覺(jué) ? 2023-02-09 14:40 ? 次閱讀

前言

圖片分類任務(wù)我們已經(jīng)熟悉了,就是算法對(duì)其中的對(duì)象進(jìn)行分類。而今天我們要了解構(gòu)建神經(jīng)網(wǎng)絡(luò)的另一個(gè)問(wèn)題,即目標(biāo)檢測(cè)問(wèn)題。這意味著,我們不僅要用算法判斷圖片中是不是一輛汽車, 還要在圖片中標(biāo)記出它的位置, 用邊框或紅色方框把汽車圈起來(lái), 這就是目標(biāo)檢測(cè)問(wèn)題。其中“定位”的意思是判斷汽車在圖片中的具體位置。

6aa6af6c-a831-11ed-bfe3-dac502259ad0.jpg



近幾年來(lái),目標(biāo)檢測(cè)算法取得了很大的突破。比較流行的算法可以分為兩類,一類是基于Region Proposal的R-CNN系算法(R-CNN,F(xiàn)ast R-CNN, Faster R-CNN等),它們是two-stage的,需要先算法產(chǎn)生目標(biāo)候選框,也就是目標(biāo)位置,然后再對(duì)候選框做分類與回歸。而另一類是Yolo,SSD這類one-stage算法,其僅僅使用一個(gè)卷積神經(jīng)網(wǎng)絡(luò)CNN直接預(yù)測(cè)不同目標(biāo)的類別與位置。第一類方法是準(zhǔn)確度高一些,但是速度慢,但是第二類算法是速度快,但是準(zhǔn)確性要低一些。這可以在下圖中看到。

6ac3205c-a831-11ed-bfe3-dac502259ad0.jpg



本文對(duì)常見(jiàn)目標(biāo)檢測(cè)算法進(jìn)行簡(jiǎn)要綜述,并最后總結(jié)了目標(biāo)檢測(cè)算法方向的一些大V方便大家學(xué)習(xí)查看。

1. R-CNN

目標(biāo)檢測(cè)有兩個(gè)主要任務(wù):物體分類和定位,為了完成這兩個(gè)任務(wù),R-CNN借鑒了滑動(dòng)窗口思想, 采用對(duì)區(qū)域進(jìn)行識(shí)別的方案,具體是:

輸入一張圖片,通過(guò)指定算法從圖片中提取 2000 個(gè)類別獨(dú)立的候選區(qū)域(可能目標(biāo)區(qū)域)

對(duì)于每個(gè)候選區(qū)域利用卷積神經(jīng)網(wǎng)絡(luò)來(lái)獲取一個(gè)特征向量

對(duì)于每個(gè)區(qū)域相應(yīng)的特征向量,利用支持向量機(jī)SVM 進(jìn)行分類,并通過(guò)一個(gè)bounding box regression調(diào)整目標(biāo)包圍框的大小

6ad2e41a-a831-11ed-bfe3-dac502259ad0.jpg

1.1. 提取候選區(qū)域

R-CNN目標(biāo)檢測(cè)首先需要獲取2000個(gè)目標(biāo)候選區(qū)域,能夠生成候選區(qū)域的方法很多,比如:

objectness

selective search

category-independen object proposals

constrained parametric min-cuts(CPMC)

multi-scale combinatorial grouping

Ciresan R-CNN 采用的是 Selective Search 算法。簡(jiǎn)單來(lái)說(shuō)就是通過(guò)一些傳統(tǒng)圖像處理方法將圖像分成很多小尺寸區(qū)域,然后根據(jù)小尺寸區(qū)域的特征合并小尺寸得到大尺寸區(qū)域,以實(shí)現(xiàn)候選區(qū)域的選取。

1.2. 提取特征向量

對(duì)于上述獲取的候選區(qū)域,需進(jìn)一步使用CNN提取對(duì)應(yīng)的特征向量,作者使用模型AlexNet (2012)。(需要注意的是 Alexnet 的輸入圖像大小是 227x227,而通過(guò) Selective Search 產(chǎn)生的候選區(qū)域大小不一,為了與 Alexnet 兼容,R-CNN 采用了非常暴力的手段,那就是無(wú)視候選區(qū)域的大小和形狀,統(tǒng)一變換到 227x227 的尺寸)。那么,該網(wǎng)絡(luò)是如何訓(xùn)練的呢?訓(xùn)練過(guò)程如下:

有監(jiān)督預(yù)訓(xùn)練:訓(xùn)練網(wǎng)絡(luò)參數(shù)

樣本:ImageNet

這里只訓(xùn)練和分類有關(guān)的參數(shù),因?yàn)镮mageNet數(shù)據(jù)只有分類,沒(méi)有位置標(biāo)注

圖片尺寸調(diào)整為227x227

最后一層:4097維向量->1000向量的映射。

特定樣本下的微調(diào) :訓(xùn)練網(wǎng)絡(luò)參數(shù)

樣本:

6aedd45a-a831-11ed-bfe3-dac502259ad0.png

采用訓(xùn)練好的AlexNet模型進(jìn)行PASCAL VOC 2007樣本集下的微調(diào),學(xué)習(xí)率=0.001(PASCAL VOC 2007樣本集上既有圖像中物體類別標(biāo)簽,也有圖像中物體位置標(biāo)簽)

mini-batch為32個(gè)正樣本和96個(gè)負(fù)樣本(由于正樣本太少)

修改了原來(lái)的1000為類別輸出,改為21維【20類+背景】輸出。

1.3. SVM分類

通過(guò)上述卷積神經(jīng)網(wǎng)絡(luò)獲取候選區(qū)域的特征向量,進(jìn)一步使用SVM進(jìn)行物體分類,關(guān)鍵知識(shí)點(diǎn)如下:

使用了一個(gè)SVM進(jìn)行分類:向SVM輸入特征向量,輸出類別得分

用于訓(xùn)練多個(gè)SVM的數(shù)據(jù)集是ImageNet數(shù)據(jù)

將2000×4096維特征(2000個(gè)候選框,每個(gè)候選框獲得4096的特征向量)與20個(gè)SVM組成的權(quán)值矩陣4096×20相乘(20種分類,SVM是二分類器,每個(gè)種類訓(xùn)練一個(gè)SVM,則有20個(gè)SVM),獲得2000×20維矩陣表示每個(gè)建議框是某個(gè)物體類別的得分

分別對(duì)上述2000×20維矩陣中每列即每一類進(jìn)行非極大值抑制剔除重疊建議框,得到該列即該類中得分最高的一些候選框;

6b02892c-a831-11ed-bfe3-dac502259ad0.jpg

SVM訓(xùn)練:

樣本:

6b3124f8-a831-11ed-bfe3-dac502259ad0.png

由于SVM是二分類器,需要為每個(gè)類別訓(xùn)練單獨(dú)的SVM;

SVM訓(xùn)練時(shí),輸入正負(fù)樣本是在AlexNet CNN網(wǎng)絡(luò)輸出的4096維特征向量,輸出為該類的得分

由于負(fù)樣本太多,采用hard negative mining的方法在負(fù)樣本中選取有代表性的負(fù)樣本

1.4 邊框修正

使用一個(gè)回歸器進(jìn)行邊框回歸:輸入為卷積神經(jīng)網(wǎng)絡(luò)pool5層的4096維特征向量,輸出為x、y方向的縮放和平移,實(shí)現(xiàn)邊框的修正。在進(jìn)行測(cè)試前仍需回歸器進(jìn)行訓(xùn)練?;貧w器訓(xùn)練

樣本:

6b41e464-a831-11ed-bfe3-dac502259ad0.png

在2014年R-CNN橫空出世的時(shí)候,顛覆了以往的目標(biāo)檢測(cè)方案,精度大大提升。對(duì)于R-CNN的貢獻(xiàn),可以主要分為兩個(gè)方面:1) 使用了卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行特征提取 2) 使用bounding box regression進(jìn)行目標(biāo)包圍框的修正 但是,我們來(lái)看一下,R-CNN有什么問(wèn)題:1) 耗時(shí)的selective search,對(duì)一張圖像,需要花費(fèi)2s 2) 耗時(shí)的串行式CNN前向傳播,對(duì)于每一個(gè)候選框,都需經(jīng)過(guò)一個(gè)AlexNet提取特征,為所有的候選框提取特征大約花費(fèi)47s 3) 三個(gè)模塊(CNN特征提取、SVM分類和邊框修正)是分別訓(xùn)練的,并且在訓(xùn)練的時(shí)候,對(duì)于存儲(chǔ)空間的消耗很大

2. Fast R-CNN

面對(duì)R-CNN的缺陷,Ross在2015年提出的Fast R-CNN進(jìn)行了改進(jìn),下面我們來(lái)概述一下Fast R-CNN的解決方案:

6b552d26-a831-11ed-bfe3-dac502259ad0.jpg

首先還是采用selective search提取2000個(gè)候選框RoI

使用一個(gè)卷積神經(jīng)網(wǎng)絡(luò)對(duì)全圖進(jìn)行特征提取

使用一個(gè)RoI Pooling Layer在全圖特征上摘取每一個(gè)RoI對(duì)應(yīng)的特征

分別經(jīng)過(guò)為21和84維的全連接層(并列的,前者是分類輸出,后者是回歸輸出) Fast R-CNN通過(guò)CNN直接獲取整張圖像的特征圖,再使用RoI Pooling Layer在特征圖上獲取對(duì)應(yīng)每個(gè)候選框的特征,避免了R-CNN中的對(duì)每個(gè)候選框串行進(jìn)行卷積(耗時(shí)較長(zhǎng))。

2.1 RoI Pooling Layer

對(duì)于每個(gè)RoI而言,需要從共享卷積層獲取的特征圖上提取對(duì)應(yīng)的特征,并且送入全連接層進(jìn)行分類。因此,RoI Pooling主要做了兩件事,第一件是為每個(gè)RoI選取對(duì)應(yīng)的特征,第二件事是為了滿足全連接層的輸入需求,將每個(gè)RoI對(duì)應(yīng)的特征的維度轉(zhuǎn)化成某個(gè)定值。RoI Pooling示意圖如下所示:

6b707ef0-a831-11ed-bfe3-dac502259ad0.png

如上圖所示,對(duì)于每一個(gè)RoI,RoI Pooling Layer將其映射到特征圖對(duì)應(yīng)位置,獲取對(duì)應(yīng)特征。另外,由于每一個(gè)RoI的尺度各不相同,所以提取出來(lái)的特征向量region proposal維度也不盡相同,因此需要某種特殊的技術(shù)來(lái)做保證輸入后續(xù)全連接層的特征向量維度相同。ROI Pooling的提出便是為了解決這一問(wèn)題的。其思路如下:

將region proposal劃分為目標(biāo)H×W大小的分塊

對(duì)每一個(gè)分塊中做MaxPooling(每個(gè)分塊中含有多個(gè)網(wǎng)格,每個(gè)分塊獲取一個(gè)特征值)

將所有輸出值組合起來(lái)便形成固定大小為H×W的feature map

6b8e4da4-a831-11ed-bfe3-dac502259ad0.jpg

6baab6a6-a831-11ed-bfe3-dac502259ad0.png

Fast R-CNN的貢獻(xiàn)可以主要分為兩個(gè)方面:

取代R-CNN的串行特征提取方式,直接采用一個(gè)CNN對(duì)全圖提取特征(這也是為什么需要RoI Pooling的原因)。

除了selective search,其他部分都可以合在一起訓(xùn)練。Fast R-CNN也有缺點(diǎn),體現(xiàn)在耗時(shí)的selective search還是依舊存在。

3. Faster R-CNN

Faster R-CNN 取代selective search,直接通過(guò)一個(gè)Region Proposal Network (RPN)生成待檢測(cè)區(qū)域,這么做,在生成RoI區(qū)域的時(shí)候,時(shí)間也就從2s縮減到了10ms。下圖是Faster R-CNN整體結(jié)構(gòu)。

6bc4693e-a831-11ed-bfe3-dac502259ad0.jpg

由上圖可知,F(xiàn)aster R-CNN由共享卷積層、RPN、RoI pooling以及分類和回歸四部分組成:

首先使用共享卷積層為全圖提取特征feature maps

將得到的feature maps送入RPN,RPN生成待檢測(cè)框(指定RoI的位置),并對(duì)RoI的包圍框進(jìn)行第一次修正

RoI Pooling Layer根據(jù)RPN的輸出在feature map上面選取每個(gè)RoI對(duì)應(yīng)的特征,并將維度置為定值

使用全連接層(FC Layer)對(duì)框進(jìn)行分類,并且進(jìn)行目標(biāo)包圍框的第二次修正。尤其注意的是,F(xiàn)aster R-CNN真正實(shí)現(xiàn)了端到端的訓(xùn)練(end-to-end training)。Faster R-CNN最大特色是使用了RPN取代了SS算法來(lái)獲取RoI,以下對(duì)RPN進(jìn)行分析。

3.1 RPN

經(jīng)典的檢測(cè)方法生成檢測(cè)框都非常耗時(shí),如OpenCV adaboost使用滑動(dòng)窗口+圖像金字塔生成檢測(cè)框;或如R-CNN使用SS(Selective Search)方法生成檢測(cè)框。而Faster R-CNN則拋棄了傳統(tǒng)的滑動(dòng)窗口和SS方法,直接使用RPN生成檢測(cè)框,這也是Faster R-CNN的巨大優(yōu)勢(shì),能極大提升檢測(cè)框的生成速度。首先來(lái)看看RPN的工作原理

6be5e294-a831-11ed-bfe3-dac502259ad0.jpg



上圖展示了RPN網(wǎng)絡(luò)的具體結(jié)構(gòu)。可以看到RPN網(wǎng)絡(luò)實(shí)際分為2條支線,上面一條支線通過(guò)softmax來(lái)分類anchors獲得前景foreground和背景background(檢測(cè)目標(biāo)是foreground),下面一條支線用于計(jì)算anchors的邊框偏移量,以獲得精確的proposals。而最后的proposal層則負(fù)責(zé)綜合foreground anchors和偏移量獲取proposals,同時(shí)剔除太小和超出邊界的proposals。其實(shí)整個(gè)網(wǎng)絡(luò)到了Proposal Layer這里,就完成了相當(dāng)于目標(biāo)定位的功能。anchor:簡(jiǎn)單地說(shuō),RPN依靠一個(gè)在共享特征圖上滑動(dòng)的窗口,為每個(gè)位置生成9種預(yù)先設(shè)置好長(zhǎng)寬比與面積的目標(biāo)框(即anchor)。這9種初始anchor包含三種面積(128×128,256×256,512×512),每種面積又包含三種長(zhǎng)寬比(1:1,1:2,2:1)。示意圖如下所示:

6bfd161c-a831-11ed-bfe3-dac502259ad0.png

由于共享特征圖的大小約為40×60,所以RPN生成的初始anchor的總數(shù)約為20000個(gè)(40×60×9)。其實(shí)RPN最終就是在原圖尺度上,設(shè)置了密密麻麻的候選anchor。進(jìn)而去判斷anchor到底是前景還是背景,意思就是判斷這個(gè)anchor到底有沒(méi)有覆蓋目標(biāo),以及為屬于前景的anchor進(jìn)行第一次坐標(biāo)修正。

6c1e6db2-a831-11ed-bfe3-dac502259ad0.jpg



判斷前景或背景:對(duì)于所有的anchors,首先需要判斷anchor是是否為前景。對(duì)于第一個(gè)問(wèn)題,RPN的做法是使用SoftmaxLoss直接訓(xùn)練,在訓(xùn)練的時(shí)候排除掉了超越圖像邊界的anchor;邊框修正:如圖綠色表示的是飛機(jī)的實(shí)際框標(biāo)簽(ground truth),紅色的表示的其中一個(gè)候選區(qū)域(foreground anchor),即被分類器識(shí)別為飛機(jī)的區(qū)域,但是由于紅色區(qū)域定位不準(zhǔn)確,這張圖相當(dāng)于沒(méi)有正確檢測(cè)出飛機(jī),所以我們希望采用一種方法對(duì)紅色的框進(jìn)行微調(diào),使得候選區(qū)域和實(shí)際框更加接近:

6c4ae4fa-a831-11ed-bfe3-dac502259ad0.jpg

對(duì)于目標(biāo)框一般使用四維向量來(lái)表示(x,y,w,h)(x,y,w,h) ,分別表示目標(biāo)框的中心點(diǎn)坐標(biāo)、寬、高,我們使用AA 表示原始的foreground anchor,使用GG 表示目標(biāo)的ground truth,我們的目標(biāo)是尋找一種關(guān)系,使得輸入原始的Anchor AA 經(jīng)過(guò)映射到一個(gè)和真實(shí)框GG 更接近的回歸窗口G′G′ ,即:

給定:

6c6ad99a-a831-11ed-bfe3-dac502259ad0.jpg

尋找一種變換F,使得

6c854f1e-a831-11ed-bfe3-dac502259ad0.jpg6c9e4870-a831-11ed-bfe3-dac502259ad0.jpg

6cb3e7ac-a831-11ed-bfe3-dac502259ad0.png

那么如何去計(jì)算F 呢?這里我們可以通過(guò)平移和縮放實(shí)現(xiàn)

6cd61dc2-a831-11ed-bfe3-dac502259ad0.jpg

平移:

6ce6f7f0-a831-11ed-bfe3-dac502259ad0.jpg

縮放:

6d005420-a831-11ed-bfe3-dac502259ad0.jpg

上面公式中,我們需要學(xué)習(xí)四個(gè)參數(shù),分別是

6d1a68e2-a831-11ed-bfe3-dac502259ad0.jpg

其中

6d30978e-a831-11ed-bfe3-dac502259ad0.jpg

表示的兩個(gè)框中心距離的偏移量

當(dāng)輸入的anchor A與G相差較小時(shí),可以認(rèn)為這種變換是一種線性變換, 那么就可以用線性回歸來(lái)建模對(duì)目標(biāo)框進(jìn)行微調(diào)(注意,只有當(dāng)anchors A和G比較接近時(shí),才能使用線性回歸模型,否則就是復(fù)雜的非線性問(wèn)題了)。接下來(lái)就是如何通過(guò)線性回歸獲得

6d1a68e2-a831-11ed-bfe3-dac502259ad0.jpg

線性回歸就是給定輸入的特征向量X ,學(xué)習(xí)一組參數(shù)W,使得線性回歸的輸出WX和真實(shí)值Y 的差很小。對(duì)于該問(wèn)題,輸入X是特征圖,我們使用? 表示,同時(shí)訓(xùn)練時(shí)還需要A到G變換的真實(shí)參數(shù)值:

6d55d3c8-a831-11ed-bfe3-dac502259ad0.jpg

輸出是

6d1a68e2-a831-11ed-bfe3-dac502259ad0.jpg

那么目標(biāo)函數(shù)可以表示為:

6d8335b6-a831-11ed-bfe3-dac502259ad0.jpg

其中?(A) 是對(duì)應(yīng)anchor的特征圖組成的特征向量,ww 是需要學(xué)習(xí)的參數(shù),d(A) 是得到預(yù)測(cè)值(表示x,y,w,h,也就是每一個(gè)變換對(duì)應(yīng)一個(gè)上述目標(biāo)函數(shù)),為了讓預(yù)測(cè)值和真實(shí)值差距最小,代價(jià)函數(shù)如下:

6d96e2aa-a831-11ed-bfe3-dac502259ad0.jpg

函數(shù)優(yōu)化目標(biāo)為:

6dad39c4-a831-11ed-bfe3-dac502259ad0.jpg

需要說(shuō)明,只有在G和A比較接近時(shí),才可近似認(rèn)為上述線性變換成立,下面對(duì)于原文中,A與G之間的平移參數(shù)和尺度因子為:

6dc6b70a-a831-11ed-bfe3-dac502259ad0.jpg

在得到每一個(gè)候選區(qū)域anchor A的修正參數(shù)之后,我們就可以計(jì)算出精確的anchor,然后按照物體的區(qū)域得分從大到小對(duì)得到的anchor排序,然后提出一些寬或者高很小的anchor(獲取其它過(guò)濾條件),再經(jīng)過(guò)非極大值抑制抑制,取前Top-N的anchors,然后作為proposals(候選框)輸出,送入到RoI Pooling層。那么,RPN怎么實(shí)現(xiàn)呢?這個(gè)問(wèn)題通過(guò)RPN的本質(zhì)很好求解,RPN的本質(zhì)是一個(gè)樹(shù)狀結(jié)構(gòu),樹(shù)干是一個(gè)3×3的卷積層,樹(shù)枝是兩個(gè)1×1的卷積層,第一個(gè)1×1的卷積層解決了前后景的輸出,第二個(gè)1×1的卷積層解決了邊框修正的輸出。來(lái)看看在代碼中是怎么做的:

6dde1c92-a831-11ed-bfe3-dac502259ad0.jpg

6e14b84c-a831-11ed-bfe3-dac502259ad0.jpg



從如上代碼中可以看到,對(duì)于RPN輸出的特征圖中的每一個(gè)點(diǎn),一個(gè)1×1的卷積層輸出了18個(gè)值,因?yàn)槭敲恳粋€(gè)點(diǎn)對(duì)應(yīng)9個(gè)anchor,每個(gè)anchor有一個(gè)前景分?jǐn)?shù)和一個(gè)背景分?jǐn)?shù),所以9×2=18。另一個(gè)1×1的卷積層輸出了36個(gè)值,因?yàn)槭敲恳粋€(gè)點(diǎn)對(duì)應(yīng)9個(gè)anchor,每個(gè)anchor對(duì)應(yīng)了4個(gè)修正坐標(biāo)的值,所以9×4=36。那么,要得到這些值,RPN網(wǎng)絡(luò)需要訓(xùn)練。在訓(xùn)練的時(shí)候,就需要對(duì)應(yīng)的標(biāo)簽。那么,如何判定一個(gè)anchor是前景還是背景呢?文中做出了如下定義:如果一個(gè)anchor與ground truth的IoU在0.7以上,那這個(gè)anchor就算前景(positive)。類似地,如果這個(gè)anchor與ground truth的IoU在0.3以下,那么這個(gè)anchor就算背景(negative)。在作者進(jìn)行RPN網(wǎng)絡(luò)訓(xùn)練的時(shí)候,只使用了上述兩類anchor,與ground truth的IoU介于0.3和0.7的anchor沒(méi)有使用。在訓(xùn)練anchor屬于前景與背景的時(shí)候,是在一張圖中,隨機(jī)抽取了128個(gè)前景anchor與128個(gè)背景anchor。

3.3. 分類和定位

Faster R-CNN中的RoI Pooling Layer與 Fast R-CNN中原理一樣。在RoI Pooling Layer之后,就是Faster R-CNN的分類器和RoI邊框修正訓(xùn)練。分類器主要是分這個(gè)提取的RoI具體是什么類別(人,車,馬等),一共C+1類(包含一類背景)。RoI邊框修正和RPN中的anchor邊框修正原理一樣,同樣也是SmoothL1 Loss,值得注意的是,RoI邊框修正也是對(duì)于非背景的RoI進(jìn)行修正,對(duì)于類別標(biāo)簽為背景的RoI,則不進(jìn)行RoI邊框修正的參數(shù)訓(xùn)練。對(duì)于分類器和RoI邊框修正的訓(xùn)練,可以損失函數(shù)描述如下:

6e3f751e-a831-11ed-bfe3-dac502259ad0.jpg

上式中u>=1表示RoI邊框修正是對(duì)于非背景的RoI而言的,實(shí)驗(yàn)中,上式的λ取1。在訓(xùn)練分類器和RoI邊框修正時(shí),步驟如下所示:1) 首先通過(guò)RPN生成約20000個(gè)anchor(40×60×9)。2) 對(duì)20000個(gè)anchor進(jìn)行第一次邊框修正,得到修訂邊框后的proposal。3) 對(duì)超過(guò)圖像邊界的proposal的邊進(jìn)行clip,使得該proposal不超過(guò)圖像范圍。4) 忽略掉長(zhǎng)或者寬太小的proposal。5) 將所有proposal按照前景分?jǐn)?shù)從高到低排序,選取前12000個(gè)proposal。6) 使用閾值為0.7的NMS算法排除掉重疊的proposal。7) 針對(duì)上一步剩下的proposal,選取前2000個(gè)proposal進(jìn)行分類和第二次邊框修正。總的來(lái)說(shuō),F(xiàn)aster R-CNN的loss分兩大塊,第一大塊是訓(xùn)練RPN的loss(包含一個(gè)SoftmaxLoss和SmoothL1Loss),第二大塊是訓(xùn)練Faster R-CNN中分類器的loss(包含一個(gè)SoftmaxLoss和SmoothL1Loss),F(xiàn)aster R-CNN的總的loss函數(shù)描述如下:

6e530200-a831-11ed-bfe3-dac502259ad0.jpg

4. Mask R-CNN

Mask R-CNN可以分解為如下的3個(gè)模塊:Faster-RCNN、RoI Align和Mask。算法框架如下:

6e652da4-a831-11ed-bfe3-dac502259ad0.jpg




圖6 Mask R-CNN算法框架

算法步驟:

首先,輸入一幅你想處理的圖片,然后進(jìn)行對(duì)應(yīng)的預(yù)處理操作,或者預(yù)處理后的圖片;

然后,將其輸入到一個(gè)預(yù)訓(xùn)練好的神經(jīng)網(wǎng)絡(luò)中(ResNeXt等)獲得對(duì)應(yīng)的feature map;

接著,對(duì)這個(gè)feature map中的每一點(diǎn)設(shè)定預(yù)定個(gè)的RoI,從而獲得多個(gè)候選RoI;

接著,將這些候選的RoI送入RPN網(wǎng)絡(luò)進(jìn)行二值分類(前景或背景)和BB回歸,過(guò)濾掉一部分候選的ROI;

接著,對(duì)這些剩下的RoI進(jìn)行RoIAlign操作(即先將原圖和feature map的pixel對(duì)應(yīng)起來(lái),然后將feature map和固定的feature對(duì)應(yīng)起來(lái));

最后,對(duì)這些RoI進(jìn)行分類(N類別分類)、BB回歸和MASK生成(在每一個(gè)ROI里面進(jìn)行FCN操作)。Mask R-CNN是一個(gè)非常靈活的框架,可以增加不同的分支完成不同的任務(wù),可以完成目標(biāo)分類、目標(biāo)檢測(cè)、語(yǔ)義分割、實(shí)例分割、人體姿勢(shì)識(shí)別等多種任務(wù),如下圖所示。

6e837728-a831-11ed-bfe3-dac502259ad0.jpg

6eb88fe4-a831-11ed-bfe3-dac502259ad0.jpg

4.1. ROI Align

Mask R-CNN使用RoIAlign取代了Faster RCNN中的RoIPooling,故下文對(duì)RoIPooling和RoIAlign進(jìn)行分析與比較

6ed9e6d0-a831-11ed-bfe3-dac502259ad0.jpg




如上圖所示,RoI Pooling和RoIAlign最大的區(qū)別是:前者使用了兩次量化操作,而后者并沒(méi)有采用量化操作,使用了線性插值算法,具體的解釋如下所示。

RoI Pooling

6efac8a0-a831-11ed-bfe3-dac502259ad0.jpg



如上圖所示,為了得到固定大?。?X7)的feature map,我們需要做兩次量化操作:1)圖像坐標(biāo) — feature map坐標(biāo),2)feature map坐標(biāo) — RoI feature坐標(biāo)。我們來(lái)說(shuō)一下具體的細(xì)節(jié),如圖我們輸入的是一張800x800的圖像,在圖像中有兩個(gè)目標(biāo)(貓和狗),狗的BB大小為665x665,經(jīng)過(guò)VGG16網(wǎng)絡(luò)后,我們可以獲得對(duì)應(yīng)的feature map,如果我們對(duì)卷積層進(jìn)行Padding操作,我們的圖片經(jīng)過(guò)卷積層后保持原來(lái)的大小,但是由于池化層的存在,我們最終獲得feature map 會(huì)比原圖縮小一定的比例,這和Pooling層的個(gè)數(shù)和大小有關(guān)。

在該VGG16中,我們使用了5個(gè)池化操作,每個(gè)池化操作都是2x2Pooling,因此我們最終獲得feature map的大小為800/32 x 800/32 = 25x25(是整數(shù)),但是將狗的BB對(duì)應(yīng)到feature map上面,我們得到的結(jié)果是665/32 x 665/32 = 20.78 x 20.78,結(jié)果是浮點(diǎn)數(shù),含有小數(shù),但是我們的像素值可沒(méi)有小數(shù),那么作者就對(duì)其進(jìn)行了量化操作(即取整操作),即其結(jié)果變?yōu)?0 x 20,在這里引入了第一次的量化誤差;然而我們的feature map中有不同大小的ROI,但是我們后面的網(wǎng)絡(luò)卻要求我們有固定的輸入,因此,我們需要將不同大小的ROI轉(zhuǎn)化為固定的ROI feature,在這里使用的是7x7的ROI feature,那么我們需要將20 x 20的ROI映射成7 x 7的ROI feature,其結(jié)果是 20 /7 x 20/7 = 2.86 x 2.86,同樣是浮點(diǎn)數(shù),含有小數(shù)點(diǎn),我們采取同樣的操作對(duì)其進(jìn)行取整吧,在這里引入了第二次量化誤差。其實(shí),這里引入的誤差會(huì)導(dǎo)致圖像中的像素和特征中的像素的偏差,即將feature空間的ROI對(duì)應(yīng)到原圖上面會(huì)出現(xiàn)很大的偏差。原因如下:比如用我們第二次引入的誤差來(lái)分析,本來(lái)是2,86,我們將其量化為2,這期間引入了0.86的誤差,看起來(lái)是一個(gè)很小的誤差呀,但是你要記得這是在feature空間,我們的feature空間和圖像空間是有比例關(guān)系的,在這里是1:32,那么對(duì)應(yīng)到原圖上面的差距就是0.86 x 32 = 27.52。這個(gè)差距不小吧,這還是僅僅考慮了第二次的量化誤差。這會(huì)大大影響整個(gè)檢測(cè)算法的性能,因此是一個(gè)嚴(yán)重的問(wèn)題。

RoIAlign

6f1b078c-a831-11ed-bfe3-dac502259ad0.jpg



如上圖所示,為了得到為了得到固定大?。?X7)的feature map,RoIAlign技術(shù)并沒(méi)有使用量化操作,即我們不想引入量化誤差,比如665 / 32 = 20.78,我們就用20.78,不用什么20來(lái)替代它,比如20.78 / 7 = 2.97,我們就用2.97,而不用2來(lái)代替它。這就是RoIAlign的初衷。那么我們?nèi)绾翁幚磉@些浮點(diǎn)數(shù)呢,我們的解決思路是使用“雙線性插值”算法。雙線性插值是一種比較好的圖像縮放算法,它充分的利用了原圖中虛擬點(diǎn)(比如20.56這個(gè)浮點(diǎn)數(shù),像素位置都是整數(shù)值,沒(méi)有浮點(diǎn)值)四周的四個(gè)真實(shí)存在的像素值來(lái)共同決定目標(biāo)圖中的一個(gè)像素值,即可以將20.56這個(gè)虛擬的位置點(diǎn)對(duì)應(yīng)的像素值估計(jì)出來(lái)。如下圖所示,藍(lán)色的虛線框表示卷積后獲得的feature map,黑色實(shí)線框表示ROI feature,最后需要輸出的大小是2x2,那么我們就利用雙線性插值來(lái)估計(jì)這些藍(lán)點(diǎn)(虛擬坐標(biāo)點(diǎn),又稱雙線性插值的網(wǎng)格點(diǎn))處所對(duì)應(yīng)的像素值,最后得到相應(yīng)的輸出。這些藍(lán)點(diǎn)是2x2Cell中的隨機(jī)采樣的普通點(diǎn),作者指出,這些采樣點(diǎn)的個(gè)數(shù)和位置不會(huì)對(duì)性能產(chǎn)生很大的影響,你也可以用其它的方法獲得。然后在每一個(gè)橘紅色的區(qū)域里面進(jìn)行max pooling或者average pooling操作,獲得最終2x2的輸出結(jié)果。我們的整個(gè)過(guò)程中沒(méi)有用到量化操作,沒(méi)有引入誤差,即原圖中的像素和feature map中的像素是完全對(duì)齊的,沒(méi)有偏差,這不僅會(huì)提高檢測(cè)的精度,同時(shí)也會(huì)有利于實(shí)例分割。


6f3ea232-a831-11ed-bfe3-dac502259ad0.jpg



4.2. Mask

下圖闡述了Mask R-CNN的Mask branch:

6f5c488c-a831-11ed-bfe3-dac502259ad0.jpg




在Mask R-CNN中的RoI Align之后有一個(gè)"head"部分,主要作用是將RoI Align的輸出維度擴(kuò)大,這樣在預(yù)測(cè)Mask時(shí)會(huì)更加精確。在Mask Branch的訓(xùn)練環(huán)節(jié),作者沒(méi)有采用FCN式的SoftmaxLoss,反而是輸出了K個(gè)Mask預(yù)測(cè)圖(為每一個(gè)類都輸出一張),并采用average binary cross-entropy loss訓(xùn)練,當(dāng)然在訓(xùn)練Mask branch的時(shí)候,輸出的K個(gè)特征圖中,也只是對(duì)應(yīng)ground truth類別的那一個(gè)特征圖對(duì)Mask loss有貢獻(xiàn)。Mask R-CNN的訓(xùn)練損失函數(shù)可以描述為:

6f81ad20-a831-11ed-bfe3-dac502259ad0.jpg

5. Yolo

以上目標(biāo)檢測(cè)模型都是two-stage算法,針對(duì)于two-stage目標(biāo)檢測(cè)算法普遍存在的運(yùn)算速度慢的缺點(diǎn),Yolo創(chuàng)造性的提出了one-stage,也就是將物體分類和物體定位在一個(gè)步驟中完成。Yolo直接在輸出層回歸bounding box的位置和bounding box所屬類別,從而實(shí)現(xiàn)one-stage。通過(guò)這種方式,Yolo可實(shí)現(xiàn)45幀每秒的運(yùn)算速度,完全能滿足實(shí)時(shí)性要求(達(dá)到24幀每秒,人眼就認(rèn)為是連續(xù)的)。整個(gè)系統(tǒng)如下圖所示。

6f9e1780-a831-11ed-bfe3-dac502259ad0.jpg

6fb31572-a831-11ed-bfe3-dac502259ad0.jpg




主要分為三個(gè)部分:卷積層,目標(biāo)檢測(cè)層,NMS篩選層

5.1 卷積層

采用Google inceptionV1網(wǎng)絡(luò),對(duì)應(yīng)到上圖中的第一個(gè)階段,共20層。這一層主要是進(jìn)行特征提取,從而提高模型泛化能力。但作者對(duì)inceptionV1進(jìn)行了改造,他沒(méi)有使用inception module結(jié)構(gòu),而是用一個(gè)1x1的卷積,并聯(lián)一個(gè)3x3的卷積來(lái)替代。(可以認(rèn)為只使用了inception module中的一個(gè)分支,應(yīng)該是為了簡(jiǎn)化網(wǎng)絡(luò)結(jié)構(gòu))

5.2 目標(biāo)檢測(cè)層

先經(jīng)過(guò)4個(gè)卷積層和2個(gè)全連接層,最后生成7x7x30的輸出。先經(jīng)過(guò)4個(gè)卷積層的目的是為了提高模型泛化能力。Yolo將一副448x448的原圖分割成了7x7個(gè)網(wǎng)格,然后每個(gè)單元格負(fù)責(zé)去檢測(cè)那些中心點(diǎn)落在該格子內(nèi)的目標(biāo),如下圖所示,可以看到狗這個(gè)目標(biāo)的中心落在左下角一個(gè)單元格內(nèi),那么該單元格負(fù)責(zé)預(yù)測(cè)這個(gè)狗。每個(gè)單元格會(huì)預(yù)測(cè) 6fd72ba6-a831-11ed-bfe3-dac502259ad0.jpg 個(gè)邊界框(bounding box)以及邊界框的置信度(confidence score)。所謂置信度其實(shí)包含兩個(gè)方面,一是這個(gè)邊界框含有目標(biāo)的可能性大小,二是這個(gè)邊界框的準(zhǔn)確度。前者記為 6fe9397c-a831-11ed-bfe3-dac502259ad0.jpg ,當(dāng)該邊界框是背景時(shí)(即不包含目標(biāo)),此時(shí) 7006453a-a831-11ed-bfe3-dac502259ad0.jpg 。而當(dāng)該邊界框包含目標(biāo)時(shí), 701e6bec-a831-11ed-bfe3-dac502259ad0.jpg 。邊界框的準(zhǔn)確度可以用預(yù)測(cè)框與實(shí)際框(ground truth)的IOU(intersection over union,交并比)來(lái)表征,記為 7032229a-a831-11ed-bfe3-dac502259ad0.jpg 。因此置信度可以定義為 70463c94-a831-11ed-bfe3-dac502259ad0.jpg 。很多人可能將Yolo的置信度看成邊界框是否含有目標(biāo)的概率,但是其實(shí)它是兩個(gè)因子的乘積,預(yù)測(cè)框的準(zhǔn)確度也反映在里面。邊界框的大小與位置可以用4個(gè)值來(lái)表征:70619e94-a831-11ed-bfe3-dac502259ad0.jpg ,其中 70770306-a831-11ed-bfe3-dac502259ad0.jpg 是邊界框的中心坐標(biāo),而 708df19c-a831-11ed-bfe3-dac502259ad0.jpg70a7ea66-a831-11ed-bfe3-dac502259ad0.jpg 是邊界框的寬與高。還有一點(diǎn)要注意,中心坐標(biāo)的預(yù)測(cè)值 70770306-a831-11ed-bfe3-dac502259ad0.jpg 是相對(duì)于每個(gè)單元格左上角坐標(biāo)點(diǎn)的偏移值,并且單位是相對(duì)于單元格大小的,單元格的坐標(biāo)定義如圖6所示。而邊界框的 708df19c-a831-11ed-bfe3-dac502259ad0.jpg70a7ea66-a831-11ed-bfe3-dac502259ad0.jpg 預(yù)測(cè)值是相對(duì)于整個(gè)圖片的寬與高的比例,這樣理論上4個(gè)元素的大小應(yīng)該在 70f29c82-a831-11ed-bfe3-dac502259ad0.jpg 范圍。這樣,每個(gè)邊界框的預(yù)測(cè)值實(shí)際上包含5個(gè)元素:710f580e-a831-11ed-bfe3-dac502259ad0.jpg ,其中前4個(gè)表征邊界框的大小與位置,而最后一個(gè)值是置信度。

71299e6c-a831-11ed-bfe3-dac502259ad0.jpg

bounding box坐標(biāo): 如上圖,7x7網(wǎng)格內(nèi)的每個(gè)grid(紅色框),對(duì)應(yīng)兩個(gè)大小形狀不同的bounding box(黃色框)。每個(gè)box的位置坐標(biāo)為(x,y,w,h), x和y表示box中心點(diǎn)坐標(biāo),w和h表示box寬度和高度。通過(guò)與訓(xùn)練數(shù)據(jù)集上標(biāo)定的物體真實(shí)坐標(biāo)(Gx,Gy,Gw,Gh)進(jìn)行對(duì)比訓(xùn)練,可以計(jì)算出初始bounding box平移和伸縮得到最終位置的模型。

bounding box置信度confidence:這個(gè)置信度只是為了表達(dá)box內(nèi)有無(wú)物體的概率,并不表達(dá)box內(nèi)物體是什么。

7155889c-a831-11ed-bfe3-dac502259ad0.jpg其中前一項(xiàng)表示有無(wú)人工標(biāo)記的物體落入了網(wǎng)格內(nèi),如果有則為1,否則為0。第二項(xiàng)代表bounding box和真實(shí)標(biāo)記的box之間的重合度。它等于兩個(gè)box面積交集,除以面積并集。值越大則box越接近真實(shí)位置。每個(gè)網(wǎng)格還需要預(yù)測(cè)它屬于20分類中每一個(gè)類別的概率。分類信息是針對(duì)每個(gè)網(wǎng)格的,而不是bounding box。故只需要20個(gè),而不是40個(gè)。而confidence則是針對(duì)bounding box的,它只表示box內(nèi)是否有物體,而不需要預(yù)測(cè)物體是20分類中的哪一個(gè),故只需要2個(gè)參數(shù)。雖然分類信息和confidence都是概率,但表達(dá)含義完全不同。?

5.3 NMS篩選層

篩選層是為了在多個(gè)結(jié)果中(多個(gè)bounding box)篩選出最合適的幾個(gè),這個(gè)方法和faster R-CNN 中基本相同。都是先過(guò)濾掉score低于閾值的box,對(duì)剩下的box進(jìn)行NMS非極大值抑制,去除掉重疊度比較高的box(NMS具體算法可以回顧上面faster R-CNN小節(jié))。這樣就得到了最終的最合適的幾個(gè)box和他們的類別。

5.4 Yolo損失函數(shù)

yolo的損失函數(shù)包含三部分,位置誤差,confidence誤差,分類誤差。具體公式如下

716bc512-a831-11ed-bfe3-dac502259ad0.jpg




誤差均采用了均方差算法,其實(shí)我認(rèn)為,位置誤差應(yīng)該采用均方差算法,而分類誤差應(yīng)該采用交叉熵。由于物體位置只有4個(gè)參數(shù),而類別有20個(gè)參數(shù),他們的累加和不同。如果賦予相同的權(quán)重,顯然不合理。故Yolo中位置誤差權(quán)重為5,類別誤差權(quán)重為1。由于我們不是特別關(guān)心不包含物體的bounding box,故賦予不包含物體的box的置信度confidence誤差的權(quán)重為0.5,包含物體的權(quán)重則為1。Yolo算法開(kāi)創(chuàng)了one-stage檢測(cè)的先河,它將物體分類和物體檢測(cè)網(wǎng)絡(luò)合二為一,都在全連接層完成。故它大大降低了目標(biāo)檢測(cè)的耗時(shí),提高了實(shí)時(shí)性。但它的缺點(diǎn)也十分明顯

每個(gè)網(wǎng)格只對(duì)應(yīng)兩個(gè)bounding box,當(dāng)物體的長(zhǎng)寬比不常見(jiàn)(也就是訓(xùn)練數(shù)據(jù)集覆蓋不到時(shí)),效果很差。

原始圖片只劃分為7x7的網(wǎng)格,當(dāng)兩個(gè)物體靠的很近時(shí),效果很差

最終每個(gè)網(wǎng)格只對(duì)應(yīng)一個(gè)類別,容易出現(xiàn)漏檢(物體沒(méi)有被識(shí)別到)。

對(duì)于圖片中比較小的物體,效果很差。這其實(shí)是所有目標(biāo)檢測(cè)算法的通病,SSD對(duì)它有些優(yōu)化,我們后面再看。

6. SSD

Faster R-CNN準(zhǔn)確率mAP較高,漏檢率recall較低,但速度較慢。而Yolo則相反,速度快,但準(zhǔn)確率和漏檢率不盡人意。SSD綜合了他們的優(yōu)缺點(diǎn),對(duì)輸入300x300的圖像,在voc2007數(shù)據(jù)集上test,能夠達(dá)到58 幀每秒( Titan X 的 GPU ),72.1%的mAP。SSD和Yolo一樣都是采用一個(gè)CNN網(wǎng)絡(luò)來(lái)進(jìn)行檢測(cè),但是卻采用了多尺度的特征圖,SSD網(wǎng)絡(luò)結(jié)構(gòu)如下圖:

71883530-a831-11ed-bfe3-dac502259ad0.jpg




和Yolo一樣,也分為三部分:卷積層,目標(biāo)檢測(cè)層和NMS篩選層

6.1 卷積層

SSD論文采用了VGG16的基礎(chǔ)網(wǎng)絡(luò),其實(shí)這也是幾乎所有目標(biāo)檢測(cè)神經(jīng)網(wǎng)絡(luò)的慣用方法。先用一個(gè)CNN網(wǎng)絡(luò)來(lái)提取特征,然后再進(jìn)行后續(xù)的目標(biāo)定位和目標(biāo)分類識(shí)別。

6.2 目標(biāo)檢測(cè)層

這一層由5個(gè)卷積層和一個(gè)平均池化層組成。去掉了最后的全連接層。SSD認(rèn)為目標(biāo)檢測(cè)中的物體,只與周圍信息相關(guān),它的感受野不是全局的,故沒(méi)必要也不應(yīng)該做全連接。SSD的特點(diǎn)如下:

6.2.1 多尺寸feature map上進(jìn)行目標(biāo)檢測(cè)

每一個(gè)卷積層,都會(huì)輸出不同大小感受野的feature map。在這些不同尺度的feature map上,進(jìn)行目標(biāo)位置和類別的訓(xùn)練和預(yù)測(cè),從而達(dá)到多尺度檢測(cè)的目的,可以克服yolo對(duì)于寬高比不常見(jiàn)的物體,識(shí)別準(zhǔn)確率較低的問(wèn)題。而yolo中,只在最后一個(gè)卷積層上做目標(biāo)位置和類別的訓(xùn)練和預(yù)測(cè)。這是SSD相對(duì)于yolo能提高準(zhǔn)確率的一個(gè)關(guān)鍵所在。

71a6eff2-a831-11ed-bfe3-dac502259ad0.jpg




如上所示,在每個(gè)卷積層上都會(huì)進(jìn)行目標(biāo)檢測(cè)和分類,最后由NMS進(jìn)行篩選,輸出最終的結(jié)果。多尺度f(wàn)eature map上做目標(biāo)檢測(cè),就相當(dāng)于多了很多寬高比例的bounding box,可以大大提高泛化能力。

6.2.2 設(shè)置先驗(yàn)框

在Yolo中,每個(gè)單元預(yù)測(cè)多個(gè)邊界框,但是其都是相對(duì)這個(gè)單元本身(正方塊),但是真實(shí)目標(biāo)的形狀是多變的,Yolo需要在訓(xùn)練過(guò)程中自適應(yīng)目標(biāo)的形狀。而SSD和Faster R-CNN相似,也提出了anchor的概念。卷積輸出的feature map,每個(gè)點(diǎn)對(duì)應(yīng)為原圖的一個(gè)區(qū)域的中心點(diǎn)。以這個(gè)點(diǎn)為中心,構(gòu)造出6個(gè)寬高比例不同,大小不同的anchor(SSD中稱為default box)。每個(gè)anchor對(duì)應(yīng)4個(gè)位置參數(shù)(x,y,w,h)和21個(gè)類別概率(voc訓(xùn)練集為20分類問(wèn)題,在加上anchor是否為背景,共21分類)。

71d50dba-a831-11ed-bfe3-dac502259ad0.jpg




SSD的檢測(cè)值也與Yolo不太一樣。對(duì)于每個(gè)單元的每個(gè)先驗(yàn)框,其都輸出一套獨(dú)立的檢測(cè)值,對(duì)應(yīng)一個(gè)邊界框,主要分為兩個(gè)部分。第一部分是各個(gè)類別的置信度或者評(píng)分,值得注意的是SSD將背景也當(dāng)做了一個(gè)特殊的類別,如果檢測(cè)目標(biāo)共有 7203e87e-a831-11ed-bfe3-dac502259ad0.jpg 個(gè)類別,SSD其實(shí)需要預(yù)測(cè) 7219890e-a831-11ed-bfe3-dac502259ad0.jpg 個(gè)置信度值,其中第一個(gè)置信度指的是不含目標(biāo)或者屬于背景的評(píng)分。后面當(dāng)我們說(shuō) 7203e87e-a831-11ed-bfe3-dac502259ad0.jpg 個(gè)類別置信度時(shí),請(qǐng)記住里面包含背景那個(gè)特殊的類別,即真實(shí)的檢測(cè)類別只有 723804d8-a831-11ed-bfe3-dac502259ad0.jpg 個(gè)。在預(yù)測(cè)過(guò)程中,置信度最高的那個(gè)類別就是邊界框所屬的類別,特別地,當(dāng)?shù)谝粋€(gè)置信度值最高時(shí),表示邊界框中并不包含目標(biāo)。第二部分就是邊界框的location,包含4個(gè)值 724a86bc-a831-11ed-bfe3-dac502259ad0.jpg ,分別表示邊界框的中心坐標(biāo)以及寬高。但是真實(shí)預(yù)測(cè)值其實(shí)只是邊界框相對(duì)于先驗(yàn)框的轉(zhuǎn)換值(paper里面說(shuō)是offset,但是覺(jué)得transformation更合適,參見(jiàn)R-CNN(https://arxiv.org/abs/1311.2524) 另外,SSD采用了數(shù)據(jù)增強(qiáng)。生成與目標(biāo)物體真實(shí)box間IOU為0.1 0.3 0.5 0.7 0.9的patch,隨機(jī)選取這些patch參與訓(xùn)練,并對(duì)他們進(jìn)行隨機(jī)水平翻轉(zhuǎn)等操作。SSD認(rèn)為這個(gè)策略提高了8.8%的準(zhǔn)確率。

6.3 篩選層

和yolo的篩選層基本一致,同樣先過(guò)濾掉類別概率低于閾值的default box,再采用NMS非極大值抑制,篩掉重疊度較高的。只不過(guò)SSD綜合了各個(gè)不同feature map上的目標(biāo)檢測(cè)輸出的default box。

7 其他模型

針對(duì)Yolo準(zhǔn)確率不高,容易漏檢,對(duì)長(zhǎng)寬比不常見(jiàn)物體效果差等問(wèn)題,結(jié)合SSD的特點(diǎn),提出了YoloV2。它主要還是采用了Yolo的網(wǎng)絡(luò)結(jié)構(gòu),在其基礎(chǔ)上做了一些優(yōu)化和改進(jìn),如下:

網(wǎng)絡(luò)采用DarkNet-19:19層,里面包含了大量3x3卷積,同時(shí)借鑒inceptionV1,加入1x1卷積核全局平均池化層。結(jié)構(gòu)如下

725ed4be-a831-11ed-bfe3-dac502259ad0.jpg

去掉全連接層:和SSD一樣,模型中只包含卷積和平均池化層(平均池化是為了變?yōu)橐痪S向量,做softmax分類)。這樣做一方面是由于物體檢測(cè)中的目標(biāo),只是圖片中的一個(gè)區(qū)塊,它是局部感受野,沒(méi)必要做全連接。而是為了輸入不同尺寸的圖片,如果采用全連接,則只能輸入固定大小圖片了。

batch normalization:卷積層后加入BN,對(duì)下一次卷積輸入的數(shù)據(jù)做歸一化。可以在增大學(xué)習(xí)率的前提下,同樣可以穩(wěn)定落入局部最優(yōu)解。從而加速訓(xùn)練收斂,在相同耗時(shí)下,增大了有效迭代次數(shù)。

使用anchors:借鑒faster R-CNN和SSD,對(duì)于一個(gè)中心點(diǎn),使用多個(gè)anchor,得到多個(gè)bounding box,每個(gè)bounding box包含4個(gè)位置坐標(biāo)參數(shù)(x y w h)和21個(gè)類別概率信息。而在Yolo中,每個(gè)grid(對(duì)應(yīng)anchor),僅預(yù)測(cè)一次類別,而且只有兩個(gè)bounding box來(lái)進(jìn)行坐標(biāo)預(yù)測(cè)。

pass through layer:Yolo原本最終特征圖為13x13x256。YoloV2還利用了之前的26x26的特征圖進(jìn)行目標(biāo)檢測(cè)。26x26x256的feature map分別按行和列隔點(diǎn)采樣,得到4幅13x13x256的feature map,將他們組織成一幅13x13x2048的feature map。這樣做的目的是提高小物體的識(shí)別率。因?yàn)樵娇壳暗木矸e,其感受野越小,越有利于小物體的識(shí)別。

高分辨率輸入Training:Yolo采用224x224圖片進(jìn)行預(yù)訓(xùn)練,而YoloV2則采用448x448

Multi-Scale Training:輸入不同尺寸的圖片,迭代10次,就改變輸入圖片尺寸。由于模型中去掉了全連接層,故可以輸入不同尺寸的圖片了。從320x320,到608x608 Yolo和YoloV2只能識(shí)別20類物體,為了優(yōu)化這個(gè)問(wèn)題,提出了Yolo9000,可以識(shí)別9000類物體。它在YoloV2基礎(chǔ)上,進(jìn)行了imageNet和coco的聯(lián)合訓(xùn)練。這種方式充分利用imageNet可以識(shí)別1000類物體和coco可以進(jìn)行目標(biāo)位置檢測(cè)的優(yōu)點(diǎn)。當(dāng)使用imageNet訓(xùn)練時(shí),只更新物體分類相關(guān)的參數(shù)。而使用coco時(shí),則更新全部所有參數(shù)。

審核編輯 :李倩

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 神經(jīng)網(wǎng)絡(luò)

    關(guān)注

    42

    文章

    4776

    瀏覽量

    100948
  • 算法
    +關(guān)注

    關(guān)注

    23

    文章

    4623

    瀏覽量

    93105
  • 圖像
    +關(guān)注

    關(guān)注

    2

    文章

    1088

    瀏覽量

    40515

原文標(biāo)題:最全綜述 | 圖像目標(biāo)檢測(cè)

文章出處:【微信號(hào):vision263com,微信公眾號(hào):新機(jī)器視覺(jué)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    紅外圖像目標(biāo)檢測(cè)系統(tǒng)該怎么設(shè)計(jì)?

    近年來(lái),紅外探測(cè)系統(tǒng)因其具有隱蔽性,抗干擾性,全天候工作等特點(diǎn),在現(xiàn)代戰(zhàn)爭(zhēng)中具有重要的作用,而紅外圖像中小目標(biāo)檢測(cè)將直接影響制導(dǎo)系統(tǒng)的有效作用距離及設(shè)備的復(fù)雜程度,在紅外成像制導(dǎo)和預(yù)警系統(tǒng)中發(fā)揮著舉足輕重的作用。
    發(fā)表于 10-15 07:26

    目標(biāo)檢測(cè)圖像語(yǔ)義分割領(lǐng)域性能評(píng)價(jià)指標(biāo)

    目標(biāo)檢測(cè)圖像語(yǔ)義分割領(lǐng)域的性能評(píng)價(jià)指標(biāo)
    發(fā)表于 05-13 09:57

    一種基于圖像平移的目標(biāo)檢測(cè)框架

    1、摘要近年來(lái),在深度卷積神經(jīng)網(wǎng)絡(luò)(CNNs)的幫助下,圖像和視頻監(jiān)控在智能交通系統(tǒng)(ITS)中取得了長(zhǎng)足的進(jìn)展。作為一種先進(jìn)的感知方法,智能交通系統(tǒng)對(duì)視頻監(jiān)控中每一幀感興趣的目標(biāo)進(jìn)行檢測(cè)是其廣泛
    發(fā)表于 08-31 07:43

    基于視頻圖像的運(yùn)動(dòng)目標(biāo)檢測(cè)與識(shí)別

    運(yùn)動(dòng)目標(biāo)檢測(cè)是場(chǎng)景監(jiān)控的核心技術(shù),而目標(biāo)的陰影在很大程度上影響了目標(biāo)的形狀,干擾了真實(shí)目標(biāo)檢測(cè)
    發(fā)表于 12-22 11:44 ?49次下載

    基于目標(biāo)檢測(cè)的SAR圖像匹配算法

    該文提出一種基于目標(biāo)檢測(cè)的SAR 圖像匹配算法。針對(duì)SAR 圖像的特點(diǎn),該算法先檢測(cè)SAR 圖像
    發(fā)表于 04-24 08:49 ?23次下載

    CT圖像肺結(jié)節(jié)計(jì)算機(jī)輔助檢測(cè)與診斷技術(shù)研究綜述_伍長(zhǎng)榮

    CT圖像肺結(jié)節(jié)計(jì)算機(jī)輔助檢測(cè)與診斷技術(shù)研究綜述_伍長(zhǎng)榮
    發(fā)表于 01-08 11:07 ?0次下載

    一種圖像拼接的運(yùn)動(dòng)目標(biāo)檢測(cè)方法

    圖像拼接中出現(xiàn)的運(yùn)動(dòng)目標(biāo)可能使拼接出現(xiàn)不能正常拼接或者拼接出多重影像的現(xiàn)象。本文提出一種圖像拼接的運(yùn)動(dòng)目標(biāo)檢測(cè)方法,去除運(yùn)動(dòng)
    發(fā)表于 12-08 10:05 ?2次下載

    基于可變形卷積網(wǎng)絡(luò)的魚眼圖像目標(biāo)檢測(cè)方法

      環(huán)視魚眼圖像具有目標(biāo)形變大和圖像失真的缺點(diǎn),導(dǎo)致傳統(tǒng)網(wǎng)絡(luò)結(jié)構(gòu)在對(duì)魚眼圖像進(jìn)行目標(biāo)檢測(cè)時(shí)效果不
    發(fā)表于 04-27 16:37 ?4次下載
    基于可變形卷積網(wǎng)絡(luò)的魚眼<b class='flag-5'>圖像</b><b class='flag-5'>目標(biāo)</b><b class='flag-5'>檢測(cè)</b>方法

    基于改進(jìn)YOLOv2的遙感圖像目標(biāo)檢測(cè)技術(shù)

    傳統(tǒng)遙感圖像目標(biāo)檢測(cè)方法的時(shí)間復(fù)雜度高且精準(zhǔn)率低,如何快速準(zhǔn)確地檢測(cè)遙感圖像中的特定目標(biāo)成為當(dāng)前
    發(fā)表于 06-16 15:28 ?11次下載

    基于卷積神經(jīng)網(wǎng)絡(luò)的雷達(dá)目標(biāo)檢測(cè)方法綜述

    基于卷積神經(jīng)網(wǎng)絡(luò)的雷達(dá)目標(biāo)檢測(cè)方法綜述
    發(fā)表于 06-23 14:43 ?62次下載

    基于LABVIEW編程的圖像處理綜述

    基于LABVIEW編程的圖像處理綜述
    發(fā)表于 09-09 10:11 ?39次下載

    基于深度學(xué)習(xí)的目標(biāo)檢測(cè)研究綜述

    基于深度學(xué)習(xí)的目標(biāo)檢測(cè)研究綜述 來(lái)源:《電子學(xué)報(bào)》?,作者羅會(huì)蘭等 摘 要:?目標(biāo)檢測(cè)是計(jì)算機(jī)視覺(jué)領(lǐng)域內(nèi)的熱點(diǎn)課題,在機(jī)器人導(dǎo)航、智能視頻監(jiān)
    發(fā)表于 01-06 09:14 ?2225次閱讀
    基于深度學(xué)習(xí)的<b class='flag-5'>目標(biāo)</b><b class='flag-5'>檢測(cè)</b>研究<b class='flag-5'>綜述</b>

    如何區(qū)分圖像分類和目標(biāo)檢測(cè)技術(shù)

    目標(biāo)檢測(cè)的問(wèn)題定義是確定目標(biāo)在給定圖像中的位置,如目標(biāo)定位,以及每個(gè)目標(biāo)屬于哪個(gè)類別,即
    發(fā)表于 07-11 12:50 ?528次閱讀

    目標(biāo)檢測(cè)圖像識(shí)別的區(qū)別在哪

    目標(biāo)檢測(cè)圖像識(shí)別是計(jì)算機(jī)視覺(jué)領(lǐng)域中的兩個(gè)重要研究方向,它們?cè)趯?shí)際應(yīng)用中有著廣泛的應(yīng)用,如自動(dòng)駕駛、智能監(jiān)控、醫(yī)療診斷等。盡管它們?cè)谀承┓矫嬗邢嗨浦?,但它們之間存在一些關(guān)鍵的區(qū)別。 基本概念
    的頭像 發(fā)表于 07-17 09:51 ?1006次閱讀

    圖像分割與目標(biāo)檢測(cè)的區(qū)別是什么

    圖像分割與目標(biāo)檢測(cè)是計(jì)算機(jī)視覺(jué)領(lǐng)域的兩個(gè)重要任務(wù),它們?cè)谠S多應(yīng)用場(chǎng)景中都發(fā)揮著關(guān)鍵作用。然而,盡管它們?cè)谀承┓矫嬗邢嗨浦帲鼈兊?b class='flag-5'>目標(biāo)、方法和應(yīng)用場(chǎng)景有很大的不同。本文將介紹
    的頭像 發(fā)表于 07-17 09:53 ?1436次閱讀