當前位置:偏方大全网 - 藥品查詢 - YOLOv3詳解

YOLOv3詳解

YOLO是“You Only Look Once”的簡稱,它雖然不是最精確的算法,但在精確度和速度之間選擇的折中,效果也是相當不錯。YOLOv3借鑒了YOLOv1和YOLOv2,雖然沒有太多的創新點,但在保持YOLO家族速度的優勢的同時,提升了檢測精度,尤其對於小物體的檢測能力。YOLOv3算法使用壹個單獨神經網絡作用在圖像上,將圖像劃分多個區域並且預測邊界框和每個區域的概率。

YOLOv3僅使用卷積層,使其成為壹個全卷積網絡(FCN)。文章中,作者提出壹個新的特征提取網絡,Darknet-53。正如其名,它包含53個卷積層,每個後面跟隨著batch normalization層和leaky ReLU層。沒有池化層,使用步幅為2的卷積層替代池化層進行特征圖的降采樣過程,這樣可以有效阻止由於池化層導致的低層級特征的損失。Darknet-53網絡如下圖左邊所示。

輸入是 。輸出是帶有識別類的邊界框列表,每個邊界框由 六個參數表示。如果 表示80個類別,那麽每個邊界框由85個數字表示。

在YOLO中,預測過程使用壹個 卷積,所以輸入是壹個特征圖。由於使用 卷積,因此預測圖正好是特征圖大小( 卷積只是用於改變通道數)。在YOLOv3中,此預測圖是每個cell預測固定數量的邊界框。

如上圖所示,預測圖的深度為75,假設預測圖深度為 , 表示每個cell可以預測的邊界框數量。這些 個邊界框可以指定檢測到壹個物體。每個邊界框有 個特征,分別描述中心點坐標和寬高(四個)和物體分數(壹個)以及 個類置信度(上圖中 )。YOLOv3每個cell預測三個邊界框。

如果對象的中心(GT框中心)落在該cell感受野範圍內,我們希望預測圖的每個單元格都能通過其中壹個邊界框預測對象。其中只有壹個邊界框負責檢測物體,首先我們需要確定此邊界框屬於哪個cell。

為了實現上面的想法,我們將原始圖像分割為最後預測圖維度大小的網格。如下圖所示,輸入圖像維度為 ,步幅為32(最後的預測圖降采樣32倍),最後預測圖維度為 ,所以我們將原始圖像劃分為 的網格。

直接預測框的寬高會導致訓練時不穩定的梯度問題,因此,現在的很多目標檢測方法使用log空間轉換或者簡單的偏移(offset)到稱為錨框的預定義默認邊界框。然後將這些變換應用到錨框以獲得預測,YOLOv3具有三個錨框,可以預測每個單元格三個邊界框。

錨框是邊界框的先驗,是使用k均值聚類在COCO數據集上計算的。我們將預測框的寬度和高度,以表示距聚類質心的偏移量。

以下公式描述了如何轉換網絡輸出以獲得邊界框預測:

這裏 分別是我們預測的中心坐標、寬度和高度。 是網絡的輸出。 是網格從頂左部的坐標。 是錨框的維度(見下圖)。

通過sigmoid函數進行中心坐標預測,強制將值限制在0和1之間。YOLO不是預測邊界框中心的絕對坐標,它預測的是偏移量:相對於預測對象的網格單元的左上角;通過特征圖cell歸壹化維度。

例如,考慮上面狗的圖像。如果預測中心坐標是 ,意味著中心在 (因為紅色框左上角坐標是 )。但是如果預測的坐標大於1,例如 ,意味著中心在 ,現在中心在紅色框右邊,但是我們只能使用紅色框對對象預測負責,所以我們添加壹個sidmoid函數強制限制在0和1之間。

通過對輸出應用對數空間轉換,然後與錨框相乘,可以預測邊界框的尺寸(如上面的計算公式)。

物體分數表示壹個邊界框包含壹個物體的概率,對於紅色框和其周圍的框幾乎都為1,但邊角的框可能幾乎都為0。物體分數也通過壹個sigmoid函數,表示概率值。

類置信度表示檢測到的物體屬於壹個具體類的概率值,以前的YOLO版本使用softmax將類分數轉化為類概率。在YOLOv3中作者決定使用sigmoid函數取代,原因是softmax假設類之間都是互斥的,例如屬於“Person”就不能表示屬於“Woman”,然而很多情況是這個物體既是“Person”也是“Woman”。

為了識別更多的物體,尤其小物體,YOLOv3使用三個不同尺度進行預測(不僅僅只使用 )。三個不同尺度步幅分別是32、16和8。這意味著,輸入 圖像,檢測尺度分別為 、 和 (如下圖或者更詳細如圖2所示)。

YOLOv3為每種下采樣尺度設定3個先驗框,總***聚類9個不同尺寸先驗框。在COCO數據集上9個先驗框分別是: 。下表是9個先驗框分配情況:

我們的網絡生成10647個錨框,而圖像中只有壹個狗,怎麽將10647個框減少為1個呢?首先,我們通過物體分數過濾壹些錨框,例如低於閾值(假設0.5)的錨框直接舍去;然後,使用NMS(非極大值抑制)解決多個錨框檢測壹個物體的問題(例如紅色框的3個錨框檢測壹個框或者連續的cell檢測相同的物體,產生冗余),NMS用於去除多個檢測框。

具體使用以下步驟:拋棄分數低的框(意味著框對於檢測壹個類信心不大);當多個框重合度高且都檢測同壹個物體時只選擇壹個框(NMS)。

為了更方便理解,我們選用上面的汽車圖像。首先,我們使用閾值進行過濾壹部分錨框。模型有 個數,每個盒子由85個數字描述。將 分割為下面的形狀:box_confidence: 表示 個cell,每個cell5個框,每個框有物體的置信度概率;boxes: 表示每個cell5個框,每個框的表示;box_class_probs: 表示每個cell5個框,每個框80個類檢測概率。

即使通過類分數閾值過濾壹部分錨框,還剩下很多重合的框。第二個過程叫NMS,裏面有個IoU,如下圖所示。

下圖給出更加詳細的輸入輸出情況:

文章原文: /analytics-vidhya/yolo-v3-theory-explained-33100f6d193

論文原文: /media/files/papers/YOLOv3.pdf

YOLOv3深入理解: /p/d13ae1055302

keras實現YOLOv3博客: /yolo-v3-object-detection-53fb7d3bfe6b

  • 上一篇:2019缺貨藥品
  • 下一篇:在妳的工作和生活中,英語有多重要?
  • copyright 2024偏方大全网