YOLO網路理解

2021-10-20 15:14:51 字數 2097 閱讀 3968

將一幅影象分解成sxs個網格(cell),如果在拿到對目標進行人工標註的結果框(box)中心落在某乙個網格內,那這個網格就負責**這個目標。

每個網格**b個box(一般是2),除了**每個box的位置(x y w h)之外,還要**乙個confidence值(乙個box一共五個要被**的值)。再加上要**的類別的分數(準確度)。一共引數有30個引數要**。

假設一張圖被分割成7x7個網格,那麼一張圖就有7x7x30這麼乙個tensor。

note:x,y是相對於整個影象的中心點的位置(0-1之間)

w,h也是相對於整個影象而言的(0-1之間)

而針對單個cell的confidence是相對於原始標註框的交並比計算出來的。pr(

obje

ct)∗

ioup

redt

ruth

pr(object)*iou^_

pr(obj

ect)

∗iou

pred

trut

h​,這裡的pr(

obje

ct

)pr(object)

pr(obj

ect)

就是說這個網格是否和人工標註的框有交集,有交集就是1,沒有就是0。至於後面的iou

pred

trut

hiou^_

ioupre

dtru

th​這個就是交集區域面積閉上並集區域面積了。

每個類別的分數計算方法就是

p r(

clas

si∣o

bjec

t)∗p

r(ob

ject

)∗io

upre

dtru

th

pr(class_i|object)*pr(object)*iou^_

pr(cla

ssi​

∣obj

ect)

∗pr(

obje

ct)∗

ioup

redt

ruth

​而這裡的pr(

clas

si∣o

bjec

t)

pr(class_i|object)

pr(cla

ssi​

∣obj

ect)

指的是如果這個object是類別i那就是1不是就是0。

損失函式計算分為三個部分,box損失,confidence損失,class損失

box損失中x,y的損失是點和點的損失,點與點之間的損失就直接用維度空間的距離計算求和就可以了[(x

i−xi

^)2+

(yi−

yi^)

2]

[(x_i-\hat)^2+(y_i-\hat)^2]

[(xi​−

xi​^

​)2+

(yi​

−yi​

^​)2

],w,h的損失就需要先開方相減再求和了[(w

i−wi

^)2+

[(hi

−hi^

)2

][(\sqrt-\sqrt})^2+[(\sqrt-\sqrt})^2]

[(wi​​

−wi​

^​​)

2+[(

hi​​

−hi​

^​​)

2],原因是小目標框重疊度相比較大目標重疊度要小,可能看起來相同的重疊情況,但是計算iou的時候差別卻很大。

confidence計算過程中,計算正負樣本的損失[(c

i−ci

^)2+

λnoo

bj(y

i−yi

^)2]

[(c_i-\hat)^2+\lambda_(y_i-\hat)^2]

[(ci​−

ci​^

​)2+

λnoo

bj​(

yi​−

yi​^

​)2]

,希望yolo不僅識別正樣本可以準確,同樣的,yolo不識別負樣本也準確。

最後就是類別損失,略。

YOLO理解及邊界框計算

1.設定類別數,設定劃分為多少個網格,每個網格 出來幾個邊框。原文是20個類別,並將劃分為7 7網格,每個網格 出2個邊框。2.將縮放到448 448,然後輸入到cnn網路 卷積 池化 兩個全連線 然後輸出的就是7 7 30的tensor 20個物件分類的概率 2個bounding box的位置 2...

yolov3的yolo層理解

yolov3在經過多個卷積和上取樣之後最終得到的是三個卷積結果,每乙個卷積結果的長和寬分別是 13x13,26x26,52x52 深度資訊是 4 box資訊 1 物體判別資訊 80 classnum置信度 3 每個點上面計算幾個anchor yolo層的作用就是對這些資訊進行解碼操作。首先需要明白的...

YOLO 之理解預訓練和微調

問題描述 在閱讀yolo 的時候,總是出現預訓練 pretraining 以及微調 fine tuning 那麼問題來了 預訓練是什麼?為什麼要用預訓練?怎樣預訓練?微調是什麼?為什麼要用微調?怎樣微調?什麼是預訓練和微調?你需要搭建乙個網路模型來完成乙個特定的影象分類的任務。首先,你需要隨機初始化...