YOLO1學習筆記

2021-09-21 05:57:43 字數 2026 閱讀 9249

yolo(you only look once)是一種目標檢測系統,其特點是將物品識別和物品分類融合,使用乙個深度學習模型直接計算出物體的位置和型別。基本思路如下所示:

首先被分為s \times s個框,如最左邊的圖所示。對於每個框,若乙個物體的中心落在該框中,則這個框負責該物體的型別和位置**。對於每個框,需要計算以下資料:

所屬類別:共c個,分別對應物品的種類,用於標記這個框的屬於哪乙個物體。

在voc資料集中,共有20類物品,即c=20。取s = 7,b = 2,因此最後資料共7 \times 7 \times (20 + 5 \times 2) = 7 \times 7 \times 30個,表示為維度為[7,7,30]。

網路結構的設計如下:

網路的設計取材與googlenet,其中將inception結構簡單的換成了1x1卷積和3x3卷積的串聯。同時需要注意的是啟用函式使用的leaky常數為0.1的leaky relu函式。

除此之外,上文所提到的x,y,w,h引數均被歸一化——中心位置x,y使用框的尺寸歸一化,w,h使用尺寸歸一化。如此操作後,x,y,w,h均歸一化到0~1。

該模型首先在imagenet進行了預訓練,top-5準確率達到88%。訓練開始前保留前20層卷積的引數。

訓練的代價函式分為五個部分,如下所示(此處公式渲染不完全):

$$

loss = l oss_ + loss_ + loss_ + loss_ + loss_c \\

loss_ = \lambda_ \sum\limits_^^^[(x_i - x'_i)^2 + (y_i-y'_i)^2]}} \\

loss_ = \lambda_\sum\limits_^^^[(\sqrt w_i - \sqrt)^2 + (\sqrt h_i-\sqrt)^2]}} \\

loss_ = \sum\limits_^^l_^(c_i - c_i')^2} \\

loss_ = \lambda_\sum\limits_^^l_^(c_i - c_i')^2} \\

loss_c = \sum\limits^_l^_i\sum\limits_

$$

其中,l_^用於標記是否有物體出現在i框中,若有為1,否則為0;l_^用於標記是否有物體出現框i中的第j個bounding box中,若有為1,否則為0。由於乙個框會產生多個bounding box,這裡取與真實區域iou最高的bounding box負責該物體的**。\lambda_和\lambda_為格點包括物體和不包括物體的兩種情況區分對考慮,有\lambda_ = 0.5和\lambda_ = 5。

loss_和loss_是針對物品位置的代價項,loss_和loss_是針對物品存在置信度的代價項。loss_c則是針對物品類別的代價項。假設乙個網路輸出了乙個[7x7x(20+2x5)]的輸出向量。假設僅在位於a,b的網格中有乙個物體。則l_^ = 1,l_^ = 0,則有loss_c = \sum\limits_(p_(c) - p'_(c))^2。對於該網格,有b個bounding box,假如標號為k的bounding box與該物體的iou最高,則l^_ = 1,l^_ = 0,即計算loss時僅考慮k號bounding box的損失,k號bounding box被指定負責該物品的檢測。

測試時,每測試一張,都會獲得s \times s \times b個bounding box,根據個人理解,每個格點有唯一的歸屬,因此可以對每個格點的b個bounding box取置信度最高的乙個,即有s \times s個bounding box。在這些bounding box中,可以設定乙個閾值,篩去置信度低的格點。對於最後的格點,進行非最大值抑制:即對iou超過一定閾值且屬於同一類的bounding box比較置信度,選擇置信度最高的bounding box。

YOLO1從理解到親手訓練

yolo1是端對端的目標檢測模型,參考 為you only look once unified,real time object detection 主要思想是將分割成cell size cell size的格仔,每個格仔裡只包含乙個目標,通過網路來輸出每個格仔的目標值,其中判斷格仔中是否有目標即判...

YOLO系列學習筆記

此文參考 1 給乙個大小為448x448的輸入影象,首先將影象劃分成7 7的網格。2 對於每個網格,每個網格 2個bouding box 每個box包含5個 量 以及20個類別概率,總共輸出7 7 2 5 20 1470個tensor 3 根據上一步可以 出7 7 2 98個目標視窗,然後根據閾值去...

目標檢測YOLO的學習筆記

近幾年來,目標檢測演算法取得了很大的突破。比較流行的演算法可以分為兩類,一類是基於region proposal的r cnn系演算法 r cnn,fast r cnn,faster r cnn 它們是two stage的,需要先使用啟發式方法 selective search 或者cnn網路 rpn...