YOLO v1整體檢測框架

2021-09-28 23:42:49 字數 2041 閱讀 4568

yolo演算法採用乙個單獨的cnn模型實現end-to-end的目標檢測, 整個系統如圖所示: 首先將輸入resize到448x448, 然後送入cnn網路,最後處理網路**結果得到檢測的目標。 相比r-cnn演算法, 其是乙個統一的框架, 其速度更快。具體如下:

將輸入影象按照模型的輸出網格(比如7x7大小)進行劃分,劃分之後就有很多小cell了。我們再看中物體的中心是落在哪個cell裡面,落在哪個cell哪個cell就負責**這個物體。比如下圖中,狗的中心落在了紅色cell內,則這個cell負責**狗。

實際上,「物體落在哪個cell,哪個cell就負責**這個物體」 要分兩個階段來看,包括訓練和測試。

影象輸入為448x448,取s=7,b=2,一共有20個類別(c=20)。則輸出就是7x7x30的乙個tensor。

從圖中可以看到,yolo網路的輸出的網格是7x7大小的,另外,輸出的channel數目為30。乙個cell內,前20個元素是類別概率值,然後2個元素是邊界框confidence,最後8個元素是邊界框的 (x, y,w,h) 。

首先看cell**的bounding box中condifence這個維度。confidence表示:cell**的bounding box包含乙個物體的置信度有多高並且該bounding box**準確度有多大,用公式表示為:

p r(

obje

ct)∗

ioup

redt

ruth

pr(object)*iou_^

pr(obj

ect)

∗iou

pred

trut

h​bounding box**

bounding box的**包括xywh四個值。xy表示bounding box的中心相對於cell左上角座標偏移,寬高則是相對於整張的寬高進行歸一化的。

我們通常做回歸問題的時候都會將輸出進行歸一化,否則可能導致各個輸出維度的取值範圍差別很大,進而導致訓練的時候,網路更關注數值大的維度。因為數值大的維度,算loss相應會比較大,為了讓這個loss減小,那麼網路就會盡量學習讓這個維度loss變小,最終導致區別對待。

類別**

物體類別是乙個條件概率pr(

clas

si∣o

bjec

t)pr(class_i|object)

pr(cla

ssi​

∣obj

ect)

, **中的公式是這樣的:

,但將confidence和pr(

clas

si∣o

bjec

t)pr(class_i|object)

pr(cla

ssi​

∣obj

ect)

乘起來就變成0了。這個是很合理的,因為你得確保cell中有物體(即confidence大),你算類別概率才有意義。

目標檢測之YOLOv1

you only look once unified,real time object detection yolo 一體化的,實時的物體檢測 翻譯 詳解 1 2 1 yolov1框架 步驟 1 resize成448 448,分割得到7 7網格 cell 2 cnn提取特徵和 卷積層負責提取特徵。全...

目標檢測 YOLOv1總結

yolov1筆記 faster rcnn筆記 還存在什麼問題?yolov1檢測精度低於當時的先進網路演算法 yolov1容易產生物體定位錯誤 yolov1對小目標的檢測效果不好 每網格只能 兩個物體 概述 1.abstract 乙個單一的神經網路在一次檢測中直接從完整的影象 邊界框和類別概率 單一的...

YOLOv1解讀筆記

當前最好系統相比,yolo目標區域定位誤差更大,但是背景 的假陽性優於當前最好的方法.注1 bounding box是怎麼來的呢?其實是在檢測每個grid cell時,若檢測到目標,則會將其標出來 圖中的紅色框 這就是bounding box。注2 設定多個anchor boxes幹嘛呢?是這樣的,...