Yolo V3整體實現思路流程詳解!

2022-08-04 23:51:13 字數 1995 閱讀 2596

結合開源專案tensorflow-yolov3(理解yolo v3實現細節整體套路 簡單寫寫

1.資料預處理

voc_annotation.py生成訓練測試txt檔案,儲存了路徑,bbox和類別

dataset.py 的功能如下:

(1)通過讀取voc_annotation.py生成的train.txt檔案,對進行增強處理(包括旋轉,隨機裁剪和翻轉等);

(2)同時根據train.txt檔案中讀取的bbox生成對應的label,label儲存大中小3種真實框的中心寬高置信度和類別;

2.網路結構

common.py定義卷積模組,殘差模組,合併模組和上取樣模組

backbone.py 定義darknet53網路結構

yolov3.py中build_nework()返回3組 大中小特徵圖(1*13*13*255,1*26*26*255,1*52*52*255) decode()根據生成的網格計算中心座標寬高置信度和類別

3.損失函式

主要分為三大部分: 邊界框座標損失, 分類損失和置信度損失。

(1)邊界框損失

與yolo v1的邊界框座標損失類似,v3中使用誤差平方損失函式分別計算(x, y, w, h)的loss,然後加在一起。v1中為了弱化邊界框尺寸對損失值的影響對寬高(w, h)做了開根號處理,

。在v3中作者沒有這樣做,而是增加1個與物體框大小有關的權重,權重=2 - 相對面積,取值範圍(1~2)。

(2)分類損失

判斷網格內有無物體,使用誤差平方損失函式計算類別class 的loss。

(3)置信度損失

使用誤差平方損失函式計算置信度conf 的loss。

yolo v3網路對應三種不同尺度的輸出,一共產生了(13*13*3+26*26*3+52*52*3)=10647個**框。

最終loss採用和的形式而不是平均loss, 主要原因為**的特殊機制, 造成正負樣本比巨大, 尤其是置信度損失部分, 以一片包含乙個目標為例,

置信度部分的正負樣本比可以高達1:10646, 如果採用平均損失, 會使損失趨近於0, 網路**變為全零, 失去**能力。

大體粗略記錄下,下面這位大神講的很清楚,我就不照搬了

參考文章:

yolov3系列 零 yolov3詳解

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

yolov3的缺點 yolov3特點總結

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

yolov3檢測人頭 基於yolo v3的人臉檢測

一 實驗環境的搭建 1.安裝環境配置 python 3.6 tensorflow gpu 1.6.0 keras pillow opencv python matplotlib numpy 沒有通過pip安裝 例如 pip install keras 2.啟動虛擬環境,並且安裝對應的實驗環境 3.模...