YOLOv3 Loss構建詳解

2021-10-08 07:14:37 字數 1878 閱讀 1481

新增鏈結描述

新增鏈結描述

首先理解一下網路的輸出。以y1為例,y1的輸出為1313255,表示整張圖被分為1313個格仔,每個格仔**3個框,每個框的**資訊包括:80個類別+1個框的置信度+2個框的位置偏差+2個框的size偏差。輸出可以理解為是1313*(3*(80+1+2+2))。

網格一共是s∗s個,每個網格產生b個候選框anchor box,每個候選框會經過網路最終得到相應的bounding box。最終會得到s∗s∗b個bounding box,那麼哪些bounding box會用來計算誤差更新權重?又是如何計算誤差?需要仔細了解公式。

首先先看對真值的操作過程。因為真值是框的位置和大小,而要參與計算loss的真值是框的類別cls,框的真實位置偏移值txy和尺寸偏移值twh。給出target,每一行是乙個box的資訊:屬於batch中的第幾張(image),類別,位置的尺寸。然後針對不同解析度的feature map進行處理,以解析度最小feature map為例:

1、選取box(n個)長寬的真值wh_gt

2、通過與anchor比較,計算iou,拋去iou小於一定閾值的框(說明這些框不適用該尺寸的feature map進行**),留下iou大於閾值的框(m個)。

以下操作均對留下的框(m個)進行操作(虛線代表的「選取」過程,選取留下的框)

3、提取框位置的真值,並與取整之後的值比較,這個取整後的值對應著feature map中的位置,計算位置偏差的真值(txy)。

4、提取框尺寸的真值,並與對應的anchor的尺寸比較,計算尺寸偏差的真值(twh)

5、記錄框的類別真值(cls)

6、記錄留下的框對應anchor的id和對應的id, 位置取整後的值,這個取整後的值代表著是用13*13中的哪個格仔進行**。(indicies)

得到要回歸的真值之後,與神經網路的輸出構建loss。ouput包含著網路的輸出,對應上圖1中的y1,y2和y3。圖中output[0]對應y1,是經過reshape過後的。output[1]和output[2]做同樣處理。下面以output[0]為例,實線箭頭代表經過某種操作,過程如下:

1、按照ouput的大小構建tconf,表示框的真實置信度

2、按照真值的indices將對應的某張中的某張格仔的某個anchor的置信度置1。因為框要由這個的這個格仔的這個anchor**,所以這個中的這個格仔的這個**的置信度的真值應該為1。

3、將ouput中的值與真值比較構建位置的loss(lxy),尺寸的loss(lwh),類別的loss(lcls),置信度的loss(lconf)。

4、然後加權得到總的loss

yolov3系列 零 yolov3詳解

目標檢測演算法與efficientdet講解 論 文 翻譯 yolov3主頁 yolo系列的目標檢測演算法可以說是目標檢測史上的巨集篇巨作,v3演算法是在v1 v2基礎上形成的,先看下 yolov1 yolov2 下圖為yolov3的網路結構 dbl darknetconv2d bn leaky 是...

Yolov3演算法詳解

yolo系列演算法是當前目標檢測領域的當紅演算法,是一階段目標檢測演算法的經典代表,正如其名稱 you only look once 所述,其只需要一趟完整的過程即可完成目標的識別和位置定位,能夠近乎實時得完成目標檢測任務,堪稱眾多目標檢測演算法中速度之最。yolo系列演算法到現如今已有五個版本,最...

YOLOV1與V3的(模型,loss要點詳述)

正樣本的選擇 目標中心點落在哪個grid上,然後計算這個grid的9個先驗框 anchor 和目標真實位置的iou值 直接計算,不考慮二者的中心位置 取iou值最大的先驗框和目標匹配。於是,找到的該grid中的 該anchor 負責 這個目標,其餘的網格 anchor都不負責。計算各個先驗框和所有的...