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
hbounding 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幹嘛呢?是這樣的,...