[Detection] CNN 之 "物體檢測(cè)" 篇


Index

RCNN

Rich feature hierarchies for accurate object detection and semantic segmentation

早期,使用窗口掃描進(jìn)行物體識(shí)別,計(jì)算量大。 RCNN去掉窗口掃描,用聚類方式,對(duì)圖像進(jìn)行分割分組,得到多個(gè)侯選框的層次組。

  • 原始圖片通過(guò)Selective Search提取候選框,約有2k個(gè)
  • 侯選框縮放成固定大小
  • 經(jīng)過(guò)CNN
  • 經(jīng)兩個(gè)全連接后,分類

拓展閱讀:基于R-CNN的物體檢測(cè)-CVPR 2014

Fast RCNN

Fast R-CNN

RCNN中有CNN重復(fù)計(jì)算,F(xiàn)ast RCNN則去掉重復(fù)計(jì)算,并微調(diào)選框位置。

  • 整圖經(jīng)過(guò)CNN,得到特征圖
  • 提取域候選框
  • 把候選框投影到特征圖上,Pooling采樣成固定大小
  • 經(jīng)兩個(gè)全連接后,分類與微調(diào)選框位置

Faster RCNN

Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks

提取候選框運(yùn)行在CPU上,耗時(shí)2s,效率低下。
Faster RCNN使用CNN來(lái)預(yù)測(cè)候選框。

  • 整圖經(jīng)過(guò)CNN,得到特征圖
  • 經(jīng)過(guò)核為 3×3×256 的卷積,每個(gè)點(diǎn)上預(yù)測(cè)k個(gè)anchor box是否是物體,并微調(diào)anchor box的位置
  • 提取出物體框后,采用Fast RCNN同樣的方式,進(jìn)行分類
  • 選框與分類共用一個(gè)CNN網(wǎng)絡(luò)

anchor box的設(shè)置應(yīng)比較好的覆蓋到不同大小區(qū)域,如下圖:

一張1000×600的圖片,大概可以得到20k個(gè)anchor box(60×40×9)。

R-FCN

R-FCN: Object Detection via Region-based Fully Convolutional Networks

論文翻譯詳見(jiàn):[譯] 基于R-FCN的物體檢測(cè) (zhwhong)

RCNN系列(RCNN、Fast RCNN、Faster RCNN)中,網(wǎng)絡(luò)由兩個(gè)子CNN構(gòu)成。在圖片分類中,只需一個(gè)CNN,效率非常高。所以物體檢測(cè)是不是也可以只用一個(gè)CNN?

圖片分類需要兼容形變,而物體檢測(cè)需要利用形變,如何平衡?

R-FCN利用在CNN的最后進(jìn)行位置相關(guān)的特征pooling來(lái)解決以上兩個(gè)問(wèn)題。

經(jīng)普通CNN后,做有 k^2(C+1) 個(gè) channel 的卷積,生成位置相關(guān)的特征(position-sensitive score maps)。

C 表示分類數(shù),加 1 表示背景,k 表示后續(xù)要pooling 的大小,所以生成 k^2 倍的channel,以應(yīng)對(duì)后面的空間pooling。

普通CNN后,還有一個(gè)RPN(Region Proposal Network),生成候選框。

假設(shè)一個(gè)候選框大小為 w×h,將它投影在位置相關(guān)的特征上,并采用average-pooling的方式生成一個(gè) k×k×k^2(C+1) 的塊(與Fast RCNN一樣),再采用空間相關(guān)的pooling(k×k平面上每一個(gè)點(diǎn)取channel上對(duì)應(yīng)的部分?jǐn)?shù)據(jù)),生成 k×k×(C+1)的塊,最后再做average-pooling生成 C+1 的塊,最后做softmax生成分類概率。

類似的,RPN也可以采用空間pooling的結(jié)構(gòu),生成一個(gè)channel為 4k^2的特征層。

空間pooling的具體操作可以參考下面。

訓(xùn)練與SSD相似,訓(xùn)練時(shí)拿來(lái)做lost計(jì)算的點(diǎn)取一個(gè)常數(shù),如128。 除去正點(diǎn),剩下的所有使用概率最高的負(fù)點(diǎn)。

YOLO

You Only Look Once: Unified, Real-Time Object Detection

Faster RCNN需要對(duì)20k個(gè)anchor box進(jìn)行判斷是否是物體,然后再進(jìn)行物體識(shí)別,分成了兩步。 YOLO則把物體框的選擇與識(shí)別進(jìn)行了結(jié)合,一步輸出,即變成”You Only Look Once”。

  • 把原始圖片縮放成448×448大小
  • 運(yùn)行單個(gè)CNN
  • 計(jì)算物體中心是否落入單元格、物體的位置、物體的類別

模型如下:

  • 把縮放成統(tǒng)一大小的圖片分割成S×S的單元格
  • 每個(gè)單元格輸出B個(gè)矩形框(冗余設(shè)計(jì)),包含框的位置信息(x, y, w, h)與物體的Confidence
  • 每個(gè)單元格再輸出C個(gè)類別的條件概率P(Class∣Object)
  • 最終輸出層應(yīng)有S×S×(B?5+C)個(gè)單元
  • x, y 是每個(gè)單元格的相對(duì)位置
  • w, h 是整圖的相對(duì)大小

Conficence定義如下:

在原論文中,S = 7,B = 2,C = 20,所以輸出的單元數(shù)為7×7×30。

代價(jià)函數(shù):

其中 λ_coord=5λ_noobj=0.5。
一般,w與 h 不是在 [0,1]上的均勻分布,偏小,所以開(kāi)方。

注: 開(kāi)方的解釋是我自己的估計(jì),可能不對(duì)。

SSD

SSD: Single Shot MultiBox Detector

YOLO在 7×7 的框架下識(shí)別物體,遇到大量小物體時(shí),難以處理。
SSD則在不同層級(jí)的feature map下進(jìn)行識(shí)別,能夠覆蓋更多范圍。

假設(shè)在 m 層 feature map 上進(jìn)行識(shí)別,則第 k 層的基本比例為

比如 s_min=0.2,s_max=0.95,表示整張圖片識(shí)別物體所占比最小 0.2,最大 0.95。

在基本比例上,再取多個(gè)長(zhǎng)寬比,令 a={1, 2, 3, 1/2, 1/3},長(zhǎng)寬分別為

Match策略上,取ground truth與以上生成的格子重疊率大于0.5的。

SSD vs YOLO

位置采用Smooth L1 Regression,分類采用Softmax。
代價(jià)函數(shù)為:

![][01]
[01]:http://latex.codecogs.com/png.latex?L%20=%20L_{conf}(x,%20c)%20+%20\alpha%20\cdot%20L_{loc}(c,%20l,%20g))

x 表示類別輸出,c 表示目標(biāo)分類,l 表示位置輸出,g 表示目標(biāo)位置, α是比例常數(shù),可取1。
訓(xùn)練過(guò)程中負(fù)點(diǎn)遠(yuǎn)多于正點(diǎn),所以只取負(fù)點(diǎn)中,概率最大的幾個(gè),數(shù)量與正點(diǎn)成 3:1 。

NMS

以上方法,同一物體可能有多個(gè)預(yù)測(cè)值。
可用NMS(Non-maximum suppression,非極大值抑制)來(lái)去重。

如上圖所示,一共有6個(gè)識(shí)別為人的框,每一個(gè)框有一個(gè)置信率。
現(xiàn)在需要消除多余的:

  • 按置信率排序: 0.95, 0.9, 0.9, 0.8, 0.7, 0.7
  • 取最大0.95的框?yàn)橐粋€(gè)物體框
  • 剩余5個(gè)框中,去掉與0.95框重疊率大于0.6(可以另行設(shè)置),則保留0.9, 0.8, 0.7三個(gè)框
  • 重復(fù)上面的步驟,直到?jīng)]有框了,0.9為一個(gè)框
  • 選出來(lái)的為: 0.95, 0.9

兩個(gè)矩形的重疊率計(jì)算方式如下:

xywh VS xyxy

系列論文中,位置都用 (x,y,w,h)來(lái)表示,沒(méi)有用左上角、右下角 (x,y,x,y) 來(lái)表示。
初衷是當(dāng) (w,h)正確時(shí),(x,y) 一點(diǎn)錯(cuò),會(huì)導(dǎo)致整個(gè)框就不準(zhǔn)了。
在初步的實(shí)際實(shí)驗(yàn)中,(x,y,x,y) 效果要差一些。

背后的邏輯,物體位置用 (x,y,w,h) 來(lái)學(xué)習(xí)比較容易。
(x,y) 只需要位置相關(guān)的加權(quán)就能計(jì)算出來(lái);
(w,h) 就更簡(jiǎn)單了,直接特征值相加即可。



(注:感謝您的閱讀,希望本文對(duì)您有所幫助。如果覺(jué)得不錯(cuò)歡迎分享轉(zhuǎn)載,但請(qǐng)先點(diǎn)擊 這里 獲取授權(quán)。本文由 版權(quán)印 提供保護(hù),禁止任何形式的未授權(quán)違規(guī)轉(zhuǎn)載,謝謝!)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容