YOLOv3的正負樣本和損失函式

2021-10-06 15:17:16 字數 844 閱讀 7838

查了好多資料和程式,其方實現法都不同,解釋一下**中的方法吧:

如果某網格的某個邊框負責**該物體(正樣本):

其餘不負責**該物體的邊框,且邊框和真實值iou《閾值(背景、負樣本)

其餘既不負責**物體,且iou較大的邊框不參與loss計算

loss計算中,「負責**目標」(即正樣本)和背景(即負樣本),以及不參與計算loss的部分是怎麼選擇的:

正樣本的選擇:

首先計算目標中心點落在哪個grid上,然後計算這個grid的9個先驗框(anchor)和目標真實位置的iou值(直接計算,不考慮二者的中心位置),取iou值最大的先驗框和目標匹配。於是,找到的 該grid中的 該anchor 負責**這個目標,其餘的網格、anchor都不負責。

負樣本的選擇:

計算各個先驗框和所有的目標ground truth之間的iou,如果某先驗框和影象中所有物體最大的iou都小於閾值(一般0.5),那麼就認為該先驗框不含目標,記作負樣本,其置信度應當為0

不參與計算部分

這部分雖然不負責**物件,但iou較大,可以認為包含了目標的一部分,不可簡單當作負樣本,所以這部分不參與誤差計算。

綜上,如下圖所示:

然而

看了好幾個實現**,包括ultralytics、eriklindernoren版本,正負樣本的劃分都不是那麼做的。正樣本選擇和上文都類似,但不是正樣本的都歸為了負樣本,即圖中藍框認為是負樣本,置信度=0

yolov3損失函式改進 yolov3 損失函式

yolov3 損失函式主要分為loss xy,loss wh,loss confidence,loss class loss xy darknet與kreas稍有不同。darknet是sse,kreas是二值交叉熵。一種解釋如下 bounding box回歸是square error loss,分類...

yolov2 損失函式 YOLOv3損失函式詳解

yolov3 損失函式詳解 yolov3 損失函式是在 yolov1 和yolov2 基礎上改進得到的,改進的最 大的地方是 由於 yolov3 將分類 改為回歸 分類損失函式便換成了 二值交叉熵損失函式 yolov3 損失函式組成如下式所示 osss bobjjj coordiji iiii jl...

yolov3的缺點 yolov3特點總結

p1,yolov3,簡單總結下比較特別的地方 1.bounding box 中心值x,y的 是通過乙個sigmoid 函式,來 在每乙個單元 cell 的相對位置。而不像普通那種 乙個相對於anchor的offset。然後bbox 損失是用的mse 一般都是用smooth l1 3.類別 沒有使用s...