YOLO V1
大致框架:只用一次就可以檢測物體的目標檢測。YOLOv1借助了GoogleNet的思想,使用了22層卷積層和兩層全連接層來進行目標檢測。首先是將整張圖片傳入給神經網絡,借助全局的特征更好的進行目標檢測任務。
優點:
- YOLO v1將檢測視為回歸問題,因此處理圖像的流程非常簡單、直接。
- YOLO在訓練和測試時能夠看到整個圖像,因此其在進行預測時會對圖像進行全面的推理。
- YOLO並沒有像SSD和Faster R-CNN那樣,選擇VGGNet或者其他經典的CNN模型作為基礎網絡。YOLO使用基於GoogLeNet架構的自定義網絡DarkNet作為基礎網絡。DarkNet比VGG16的運行速度快,這也使YOLO的運行速度得到了提升。
(該網絡是當時速度最快的網絡,速度達到了實時的級別)
(將目標檢測問題視為回歸問題,簡單直接且速度快)
缺點
與兩階段目標檢測系統相比,YOLO產生了更多的定位誤差且在精度上落后(對小目標的檢測效果尤其差)。同時,YOLO對邊界框預測施加了空間約束(因為每個網格單元只預測 兩個邊界框,並且只能有一個類別)。這個空間約束限制了YOLO可以 預測的鄰近目標的數量,因此,使用YOLO對鳥群、人群和車隊進行預測的效果並不理想。
(精度對比 最好的兩階段目標檢測算法較差,因為是預測的邊界框大小,所以邊界框的精准度較差。)
YOLO V2
大致框架:YOLOv2首先是將YOLOv1的backbone更換成DarkNet19,其次使用了BN層、更大分辨率的輸入、給預測邊界框做了一系列的嘗試、使用基於anchor的聚類方法、使用了細粒度特征進行特征融合、以及多尺度輸入的方式來對模型進行了優化。首先將輸入傳給DarkNet19來進行特征的提取,去掉DarkNet19的全連接層,然后將提取后的特征繼續使用兩個卷積層進行提取,然后將提取后的特征與pooling4之前的那個26*26的特征圖通過passthrough layer 進行特征融合。然后再傳入進網絡進行特征提取。最后使用一個Conv2D進行目標預測。
優點:在 v1 的基礎上改進,精度和速度都有所增加,使用了直接位置預測,對預測的偏移量進行 sigmoid 限制,防止它移動出該網格,導致計算錯誤,
缺點:它的 全局信息 和 局部信息融合太少,對於小目標的檢測精度較差
YOLO v3
大致框架:利用了darknet53架構,進行了特征融合,融合了三次,分別在深層,中層和底層,預測大物體,中物體和小物體,使得預測結果更加的精細,在最后損失函數的時候使用的是邏輯分類而不是softmax分類,因為softmax具有局限性,只能預測一次,而邏輯分類可以多次預測,例如:既能預測出人也能預測出是女人。沒有池化層,利用卷積層進行特征圖的減小,使得網絡更加的准確。
優點:1.YOLO v3在整體結構上有較大的改動,其中較為重大的是使用多個獨立的邏輯分類器代替softmax函數,以及使用類似FPN的方法進行多尺寸預測。
(網絡的精度和速度較好,使用多預測輸出,使用了 v2 相同的直接位置預測,限制偏移量)
缺點:YOLO v3為了提升精度,在速度上進行了一定的舍棄。速度的下降與基礎網絡DarkNet的復雜度的提高直接相關。
(雖然對小物體預測較好,但是對大物體預測較差。)
YOLO V4
大致框架:主干網絡采用CSPDarkNet53
為了增加感受野,采用SPP思想
采用PANet中的路徑聚合模塊
仍采用YOLO V3的head部分
優點:增強CNN的學習能力,使得在輕量化的同時保持准確性。
降低計算瓶頸
降低內存成本
缺點:
YOLO V5
Yolov5官方代碼中,給出的目標檢測網絡中一共有4個版本,分別是Yolov5s、Yolov5m、Yolov5l、Yolov5x四個模型。
大致框架:設計了兩種csp結構,CSP1_X結構應用於Backbone主干網絡,另一種CSP2_X結構則應用於Neck中
(1) 輸入端:Mosaic數據增強、自適應錨框計算、自適應圖片縮放
(2) Backbone : Focus結構、CPS結構
(3) Neck : FPN + PAN結構
(4) Prediction : GIOU_LOSS
優點:網絡最小,速度最少,AP精度也最低。
缺點:增加計算量
算法性能圖
Yolov5s網絡最小,速度最少,AP精度也最低。但如果檢測的以大目標為主,追求速度,倒也是個不錯的選擇。
其他的三種網絡,在此基礎上,不斷加深加寬網絡,AP精度也不斷提升,但速度的消耗也在不斷增加。
目前使用下來,yolov5s的模型十幾M大小,速度很快,線上生產效果可觀,嵌入式設備可以使用。