YOLO
YOLO是Joseph Redmon等人在2015年的論文中提出的一種極其快速、准確的物體檢測架構隨后在2016年(YOLOv2)和2018(YOLOv3)中進行了改進。
YOLOv3的架構和全卷積網絡的架構非常相似,但有一些重要的區別:
- 它為每個網格單元輸出5個邊界框(而不是一個),並且每個邊界框都帶有一個客觀分數。由於它在包含20個類的PASCAL VOC數據集上進行了訓練,因此每個網格單元還輸出20個類別概率。每個網格單元共有45個數字:5個邊界框,每個邊界框具有4個坐標,再加上5個客觀分數和20個類概率。
- YOLOv3不預測邊界框中心的絕對坐標,而是預測相對於網格單元坐標的偏移,其中(0,0)表示在該單元格左上角,而(1,1)表示右下角。對於每個網格單元,YOLOv3被訓練只能預測其中心位於該單元內的邊界框(但是邊界框本身通常會遠遠超出網格單元)。YOLOv3將邏輯激活函數應用於邊界框坐標,以確保它們在0到1的范圍內。
- 在訓練神經網絡之前,YOLOv3會找到5個具有代表性的邊界框,稱為錨框(或先驗邊界框)。它通過K-Means算法應用於訓練集邊界框的高度和寬度來實現。例如,如果訓練圖像包含許多行人,則錨框之一將可能具有典型的行人尺寸。然后,當神經網絡預測每個網格單元的5個邊界框時,它實際上預測了重新縮放每個錨定框的幅度。例如,假設一個錨框的高度為100像素,寬度為50像素,並且網絡預測(對於一個網格單元)垂直縮放因子為1.5,水平縮放因子為0.9。那預測的邊界框大小為150X45。更准確地說,對於每個網格單元和每個錨框,網絡都將預測垂直和水平縮放比例的對數。擁有這些先驗知識使網絡更有可能預測出適當尺寸的邊界框,並且由於它能更快地學習到合理邊界框的樣子,因此也加快了訓練速度。
- 該網絡使用不同比例的圖像進行訓練:在訓練過程中每隔幾批,網絡會隨機選擇一個訓的圖像尺寸。這使得網絡能夠學習檢測不同比例的物體。還可以在不同的比例下使用YOLOv3:較小比例的准確率較低,但速度比較大比例的要快,因此可以根據實際情況選擇合適的折衷方案。