1. 程式人生 > >目標檢測算法—YOLO-V1

目標檢測算法—YOLO-V1

png 式表 and ESS class rop data- specific spec

為什麽會叫YOLO呢?

YOLO:you only look once。只需要看一眼,就可以檢測識別出目標,主要是突出這個算法的特點。(原文:Yolo系列之前的文章:主要是rcnn系列的,他們的基本思想都是通過產生大量的 region proposal,然後再用分類器去判斷分類和對bounding box進行修正。為檢測一個對象,在檢測圖像上的各個位置、不同尺度進行評估。

yolo系列的文章提出了一個不一樣的思路。大致思想就是將物體檢測任務當做一個回歸問題來處理,在輸出層對bounding box 的位置和所屬類別進行回歸。

1. yolo v1 的基本思想

we frame object detection as a regressionproblem to spatially separated boundind boxes and associated classprobabilities.

我們設計將目標檢測作為一個回歸問題來處理空間分隔的邊界框和相關的類概率

rcnn系列算法慢的原因:each individual component must be trainedseparately.

pipeline

技術分享圖片

使用YOLO來檢測物體,其流程是非常簡單明了的:

1、將圖像resize到448 * 448作為神經網絡的輸入

2、運行神經網絡,得到一些bounding box坐標、box中包含物體的置信度和class probabilities

3、進行非極大值抑制,篩選Boxes

問題:怎麽產生box的?(帶著問題去閱讀)

Unified Detection(統一檢測)

技術分享圖片

l 將輸入圖片劃分成 S*S 的網格。如果目標的中心落入到網格內(我怎麽知道目標的中心是否在網格內,註意是有監督的訓練,給出的數據集會給出目標中心坐標),則這個網格就負責進行這個目標的檢測

l 置信項反映包含目標的置信度和預測位置的準確度,相應的公式為 confidence = Pr(Object) * IOU

l 每個grid cell同時預測B個bounding box的位置和一個置信度。(這裏的B個怎麽理解:猜測意思就是每一個grid cell對應多個不同尺度比例的bbox

l 每個bounding box要預測(x,y, w, h)和confidence共5個值,每個網格還要預測一個類別信息,記為C類。

(x,y)表示框的中心相對於網格單元的邊界的尺度;

(w,h)預測框相對於整個圖像。

沒有目標,則confidence就是零;有目標,confidence就是預測框與ground truth的IOU。

則SxS個網格,每個網格要預測B個bounding box還要預測C個categories。輸出就是S x S x (5*B+C)的一個tensor。

上面這個公式表明了在box內類別出現的可能性和預測框匹配目標的好壞程度。

註意:class信息是針對每個網格的,confidence信息是針對每個bounding box的。

l 得到每個box的class-specificconfidence score以後,設置閾值,濾掉得分低的boxes,對保留的boxes進行NMS處理,就得到最終的檢測結果。

技術分享圖片

根據圖片描述整個算法過程

1. 輸入一張圖片,首先劃分成 7*7 的網格grid cell。(接下來是每一個網格提取feature map,以便進行分類預測)

2. 將整張圖片送進CNN網絡,原圖尺寸為448*448*3,經過CNN後變成了7*7*1024;

原來在原圖上的一個grid cell, 大小是7*7*3(RGB圖像,3通道),經過CNN後變成了 1*1*1024(也就是說原圖上的一個7*7小格,對應的feature map 上 的一個像素點)

3. 最終448*448*3的圖像,輸出7*7*30的向量,30個通道的意思是(2*5+ 20)(20個通道,不同的通道提取出不同的信息,以便後面的處理)

20:使用Pascal VOC20數據集,分類種類數是20

2 :每一個grid cell對應兩種不同尺度的bbox

5 : bbox的5中信息,中心坐標x,y,寬和高w,h,置信度評分confidence

已知輸入和輸出,如何設計中間的卷積層?

2. Loss function

技術分享圖片

目標檢測算法—YOLO-V1