[15.06] YOLO-V1
只要看一次
You Only Look Once: Unified, Real-Time Object Detection
在物件偵測系統中,通常將整個流程拆分為兩個主要步驟:區域提議(region proposal)和分類。
-
區域提議:
這一步驟的目的是產生潛在的物體候選框。
例如 R-CNN,會使用選擇性搜尋(Selective Search)來產生數千個候選區域。更先進的方法例如 Faster R-CNN,使用區域提議網路(RPN)來產生這些候選框,試圖透過端到端的方式優化這個過程。儘管這種方法效率更高,但仍需要在影像上多次運行神經網路。
-
分類:
在區域提議之後,分類器將逐一處理每個候選框,確定其包含的物件類別。例如,在 R-CNN 中,卷積神經網路會對每個候選區域提取特徵,然後使用支持向量機進行分類。這種逐一處理的方式雖然在準確性上有一定的優勢,但由於每個候選區域都需要單獨處理,因此速度偏慢。
定義問題
上述流程的主要問題在於其處理速度。每個候選區域都需要單獨提取特徵並進行分類,這導致了巨大的計算開銷和時間消耗。這也正是本論文所要解決的核心問題:能否將這兩個步驟合併,讓系統只要看一次影像就能找出物體?
YOLO 透過將物件偵測問題重新定義為單一的迴歸問題,直接從輸入影像像素到邊界框座標和類別機率進行預測。這種方法的主要優點在於:
- 一次性處理:YOLO 的神經網路在一次前向傳播中就能完成整個物體偵測過程,不再需要多次處理影像。這樣不僅大幅提高了偵測速度,也簡化了偵測流程。
- 全局推理:由於 YOLO 在訓練和預測時都考慮了整個圖像,因此它能利用全局上下文信息,提高檢測精度。
- 即時效能:YOLO 模型的設計使其在速度和精度之間達到了良好的平衡,能夠實現即時檢測。
YOLO 的設計在維持原有效能的同時,實現了更快的檢測速度,這使得它成為一種非常實用的物體偵測方法。
解決問題
模型架構
這個看似被裁切的圖片,我們猜測是為了致敬 AlexNet。
為了讓區域提議和分類系統合併,作者提出了以上的模型架構。
經過一個 Backbone 之後,取出最後一層的特徵圖,然後經過一個全連接層。
其實前面的 Backbone 用什麼模型都可以,作者在論文中提到他們使用了 Darknet-19,這是他們自己設計的一個網路架構,訴求 是快速和準確。
全連接層的作用是統整特徵圖的資訊,接著將預測結果投影到預測頭上。
這個預測頭有經過作者的精心設計,你可以看到上圖中,預測頭的尺寸是 7x7x30,這裡的 7x7 是指將預測頭對應回原圖的尺寸中,切分成 7x7 的格子,如下圖所示:
每個格子都要做幾件事情:
- 預測兩個邊界框,每個框對應了物件的位置,格式為
(x, y, w, h)
,這裡的(x, y)
是格子的中心,w
和h
是物件的寬和高。 - 預測物件的類別,這裡作者使用了 20 類物件,所以每個格子要預測 20 個類別。
於是論文中設定了幾個超參數:
S
: 每個邊上有幾個格子,這裡是 7。B
: 每個格子要預測幾個邊界框,這裡是 2。C
: 類別的數量,這裡是 20。
損失函數
這樣預測結果肯定會有大量的重疊。
接著作者提出了一個損失函數,這個損失函數是由幾個部分組成的: