超越YOLOv4的目標檢測算法-PP-YOLO

語言: CN / TW / HK

超越YOLOv4的目標檢測算法-PP-YOLO

PP-YOLO的實驗評估指標比現有最先進的對象檢測模型YOLOv4表現出更好的性能,然而,本文並不打算介紹一種新型的目標檢測器,而更像是一個食譜,告訴你如何逐步建立一個更好的探測器。
讓我們一起看看。
YOLO發展史
YOLO最初是由Joseph Redmon提出,是用於檢測目標的算法。目標檢測是一種計算機視覺技術,它通過在目標周圍畫一個邊界框來定位和標記對象,並確定一個給定的框所屬的類標籤。YOLO和大型NLP transformers不同,它設計得很小,可為設備上的部署提供實時推理速度。
YOLO-9000是Joseph Redmon提出的第二個“YOLOv2”目標探測器,它改進了探測器,並強調了該檢測器能夠推廣到世界上任何物體的能力。
超越YOLOv4的目標檢測算法-PP-YOLO
YOLOv3對檢測網絡做了進一步的改進,並開始將目標檢測過程納入主流。我們現在也在發佈關於如何在PyTorch中訓練YOLOv3、如何在Keras中訓練YOLOv3的教程,並將YOLOv3的性能與EfficientDet(另一種最先進的檢測器)進行比較。
然後約瑟夫·雷德曼出於倫理考慮退出了目標探測的研究。
當然,開源社區接過了指揮棒,繼續推動YOLO技術的發展。
YOLOv4由Alexey AB在他的YOLO Darknet存儲庫中發表。YOLOv4主要是其他已知計算機視覺技術的集合,通過研究過程進行了組合和驗證。請看這裏來深入瞭解YOLOv4。








  • https://blog.roboflow.ai/a-thorough-breakdown-of-yolov4/
    如下所示,我們也提供了一些關於如何在Darknet中訓練YOLOv4的很好的訓練教程。
  • https://blog.roboflow.ai/training-yolov4-on-a-custom-dataset/
    YOLOv5採用了Darknet(基於C)的訓練環境,並將網絡轉換為Pytorch。改進的訓練技術進一步提高了模型的性能,並創建了一個非常好用的開箱即用的對象檢測模型。從那以後,我們一直鼓勵使用Roboflow的開發人員通過這個YOLOv5訓練教程將他們的注意力轉向YOLOv5,以形成他們的自定義對象檢測器。
    PP代表什麼?
    PP是百度編寫的深度學習框架PaddlePaddle的縮寫。
    超越YOLOv4的目標檢測算法-PP-YOLO
    如果你不熟悉Paddle,那我們就在同一條船上了。paddle最初是用Python編寫的,它看起來類似於PyTorch和TensorFlow。深入研究paddle框架是很有趣,但這超出了本文的範圍。
    PP-YOLO貢獻
    PP-YOLO的論文讀起來很像YOLOv4論文,因為它是計算機視覺中已知的技術的彙總。新穎的貢獻是證明這些技術的集成可提高性能,並提供消融研究,以研究每一步對模型的幫助程度。
    在我們深入研究PP-YOLO的貢獻之前,先回顧一下YOLO檢測器的體系結構。
    解剖YOLO檢測器
    超越YOLOv4的目標檢測算法-PP-YOLO
    YOLO檢測器分為三個主要部分。
    YOLO Backbone:YOLO Backbone(骨幹)是一個卷積神經網絡,它將圖像像素合併在一起以形成不同粒度的特徵。骨幹網絡通常在分類數據集(通常為ImageNet)上進行預訓練。
    YOLO Neck:YOLO Neck(上面選擇了FPN)在傳遞到預測頭之前對ConvNet圖層表示進行組合和混合。
    YOLO Head:這是網絡中進行邊界框和類預測的部分。它由關於類,框和對象的三個YOLO損失函數進行訓練。
    現在,讓我們深入瞭解PP YOLO做出的貢獻。
    超越YOLOv4的目標檢測算法-PP-YOLO
    更換骨幹網
    第一種PP YOLO技術是用Resnet50-vd-dcn ConvNet骨幹替換YOLOv3 Darknet53骨幹。Resnet是一個更流行的骨幹,它的執行優化了更多的框架,並且其參數少於Darknet53。通過交換此骨幹可以看到mAP的改進,這對PP YOLO來説是一個巨大的勝利。
    超越YOLOv4的目標檢測算法-PP-YOLO
    模型參數的EMA
    PP-YOLO跟蹤網絡參數的指數移動平均,以保持模型權重的陰影預測時間。這已經被證明可以提高推理的準確性。
    更大的批量
    PP-YOLO將批量大小從64增加到192,當然如果有GPU內存限制,這是很難實現。
    DropBlock正則化
    PP-YOLO在FPN頸部實現DropBlock正則化(在過去,這通常發生在骨幹)。在網絡的給定步驟中,DropBlock會隨機刪除一部分訓練特徵,以指示模型不依賴於關鍵特徵進行檢測。
    超越YOLOv4的目標檢測算法-PP-YOLO
    IOU損失
    YOLO損失函數不能很好地轉換為mAP指標,該指標在計算中大量使用了Union上的Intersection,因此在考慮到最終預測的情況下修改訓練損失函數是很有用的。這個修改措施也用在YOLOv4中。
    IoU Aware
    PP-YOLO網絡添加了一個預測分支,以預測給定對象的模型估計的IOU。在決定是否預測對象時包含此IoU Aware可提高性能。
    電網靈敏度
    舊的YOLO模型不能很好地在錨框區域的邊界附近進行預測,為了避免這個問題,可以稍微修改框座標的定義。YOLOv4中也有這種技術。
    矩陣非最大抑制
    非最大抑制是一種刪除宂餘的候選對象來進行分類的技術。矩陣非最大抑制是一種並行排序這些候選預測的技術,它加快了計算速度。
    CoordConv
    CoordConv受ConvNets中一個問題的啟發,即ConvNets僅將(x,y)座標映射到一個熱像素空間。CoordConv解決方案是使卷積網絡可以訪問其自己的輸入座標。CoordConv干預措施上方標有黃色菱形。有關更多詳細信息,請參見CordConv文件。



































  • https://arxiv.org/pdf/1807.03247.pdf
    SPP
    空間金字塔池化是骨幹層之後的一個額外塊,用於混合和合並空間特徵,這還在YOLOv4和YOLOv5中實現。
    更好的預訓練骨幹
    PP YOLO的作者提煉出更大的ResNet模型作為骨幹。更好的預訓練模型也可以改善下游的轉移學習。
    PP-YOLO是最先進的嗎
    PP-YOLO優於2020年4月23日發佈的YOLOv4結果。





  • YOLOv4:https://arxiv.org/pdf/2004.10934.pdf
    作者的意圖似乎不只是“引入一種新穎的新型檢測器”,而是表明仔細調整對象檢測器以最大化性能的過程。在此處引用作者的文章介紹:
    本文的重點是如何堆疊一些幾乎不影響效率的有效技巧以獲得更好的性能,本文無意介紹一種新穎的目標檢測器,它更像一個食譜,它告訴你如何逐步構建更好的檢測器。我們發現了一些對YOLOv3檢測器有效的技巧,可以節省開發人員的反覆試驗時間。最終的PP-YOLO模型以比YOLOv4更快的速度將COCO的mAP從43.5%提高到45.2%
    PP-YOLO將YOLOv3模型在COCO對象檢測任務上從38.9 mAP提升到44.6 mAP,並將推理FPS從58增加到73。文章中説明了這些指標,優於YOLOv4和EfficientDet的當前發佈結果。
    在以YOLOv5為基準對PP-YOLO進行基準測試時,YOLOv5似乎仍在V100上具有最快的推理精度(AP與FPS),但是,YOLOv5論文仍然有待發布,此外研究表明,在YOLOv5 Ultralytics存儲庫上訓練YOLOv4體系結構的性能要優於YOLOv5,並且以可移植的方式,使用YOLOv5進行訓練的YOLOv4的性能將優於此處發佈的PP-YOLO結果。這些結果仍有待正式發佈,但可以追溯到GitHub上的討論。



  • https://github.com/ultralytics/yolov5/issues/6
    超越YOLOv4的目標檢測算法-PP-YOLO
    超越YOLOv4的目標檢測算法-PP-YOLO
    值得注意的是,在YOLOv4中使用的許多技術(如架構搜索和數據擴充)並沒有在ppyolo中使用,這意味着,隨着更多這些技術的結合和集成,目標檢測的最新技術仍有發展的空間。
    毋庸置疑,這是實施計算機視覺技術令人激動人心的時刻。
    我應該從YOLOv4或YOLOv5切換到PP-YOLO嗎?
    PP-YOLO模型顯示了最先進的目標檢測的前景,但與其他對象檢測器相比,改進是漸進的,它是在一個新的框架中進行編寫的。在這個階段中,最好的做法是通過在自己的數據集上訓練PP-YOLO來提高自己的實驗效果。
    同時,我建議你查看以下YOLO教程,讓你的對象探測器成為現實:






  • 如何在Darknet中訓練YOLOv4
    https://blog.roboflow.ai/training-yolov4-on-a-custom-dataset/
  • 如何在PyTorch中訓練YOLOv5
    https://blog.roboflow.ai/how-to-train-yolov5-on-a-custom-dataset/
    參考鏈接:https://towardsdatascience.com/pp-yolo-surpasses-yolov4-object-