目標檢測中常用的方法可分為壹階段法和兩階段法。壹步法首先輸入圖片,輸出包圍盒(bbox)和分類標簽,由網絡完成。YOLO和SSD是這種方法的主要代表。兩階段方法由fast-RCNN表示。輸入圖片後,首先生成壹個區域建議,然後輸入到分類器中進行分類。這兩個任務由不同的網絡完成。
其中,YOLO目標檢測是壹種突出優秀的算法,是“妳只看壹次”的簡稱,意思是只需瀏覽壹次,就可以識別出圖片中物體的類別和位置,完美平衡了檢測速度和準確率的關系。YOLO也從最初的YOLO v1發展到最新的YOLO v5。
2015年,YOLO v1第壹版提出,YOLO參考GoogleNet提出了Darknet網絡。Darknet是用C語言和CUDA編寫的開源神經網絡框架。1x1卷積層+3x3卷積層取代了GoogleNet的Inception模塊。該網絡由24個卷積層和2個全連接組成,如圖1所示:
YOLO v1的幀如圖2所示:首先將圖像尺寸調整為448×448,然後將圖像輸入CNN,最後通過NMS保存最終的校準幀。
YOLO v1的核心思想是將目標檢測視為壹個回歸問題,將畫面分成SxS個網格,如果目標中心落入壹個網格單元,則該網格負責檢測目標。每個網格單元預測B邊界框(bbox)和類別信息。此外,每個bbox需要預測(x,y,w,h)和置信度***5個值。所以最後每個網格要預測B bbox和C類,最後輸出S x S x (5*B+C)的張量。
優勢:
YOLO v2在YOLO v1的基礎上做了壹系列改進,在保持分類準確率的同時,提高了目標定位的準確率和召回率。首先,YOLO v2可以適應不同的輸入大小,可以根據需要權衡檢測精度和檢測速度。其次,根據層次分類,提出用詞樹來混合檢測數據集和分類數據集。最後,提出了壹種聯合訓練方法,可以同時在檢測和分類數據集上進行。檢測數據集用於訓練模型識別部分,分類數據集用於訓練模型分類部分,以擴展檢測類型。
對YOLO v1更具體的改進包括以下幾點:
然而,YOLO v2仍然不能解決同壹網格中對象重疊的問題。YOLO v3在YOLO v2的基礎上繼續做了壹些改進:
2020年4月,YOLO v4發布。在MS COCO數據集上的準確率達到43.5% AP,速度達到65FPS,分別比YOLO v3高出10%和12%。
YOLO v4首先總結相關工作,拆分目標檢測框架:
物體檢測=脊柱+頸部+頭部
另外,所有的調音方式都分為“壹袋贈品”和“壹袋特價”兩類。
YOLO v4總結了以上調優技術,尋找最佳組合。在培訓過程中,免費贈品和專業贈品對YOLO v4的影響得到了驗證。
在YOLO v4發布40多天後,Ultralytics已經開放了非官方的YOLO v5,該版本完全基於PyTorch。值得註意的是,每張圖片的推理時間達到140 FPS,YOLOv5的權重文件大小僅為YOLOv4的1/9。YOLO v5更快更小!
從YOLO的上述發展歷程可以看出,YOLO系列在開發後期更註重應用落地,並沒有提出非常新穎的創新。