將一幅影象分解成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 那麼問題來了 預訓練是什麼?為什麼要用預訓練?怎樣預訓練?微調是什麼?為什麼要用微調?怎樣微調?什麼是預訓練和微調?你需要搭建乙個網路模型來完成乙個特定的影象分類的任務。首先,你需要隨機初始化...