做者|Jacob Solawetz
編譯|Flin
來源|towardsdatasciencegit
PP-YOLO評估指標比現有最早進的對象檢測模型YOLOv4表現出更好的性能。然而,百度的做者寫道:github
本文不打算介紹一種新型的目標檢測器。它更像是一個食譜,告訴你如何逐步創建一個更好的探測器。網絡
讓咱們一塊兒看看。架構
YOLO最初是由Joseph Redmon編寫的,用於檢測目標。目標檢測是一種計算機視覺技術,它經過在目標周圍畫一個邊界框來定位和標記對象,並肯定一個給定的框所屬的類標籤。和大型NLP transformers不一樣,YOLO設計得很小,可爲設備上的部署提供實時推理速度。框架
YOLO-9000是Joseph Redmon出版的第二個「YOLOv2」目標探測器,它改進了探測器,並強調了該檢測器可以推廣到世界上任何物體的能力。機器學習
YOLOv3對檢測網絡作了進一步的改進,並開始將目標檢測過程歸入主流。咱們開始發佈關於如何在PyTorch中訓練YOLOv三、如何在Keras中訓練YOLOv3的教程,並將YOLOv3的性能與EfficientDet(另外一種最早進的檢測器)進行比較。函數
而後約瑟夫·雷德曼出於倫理考慮退出了目標探測遊戲。性能
固然,開源社區接過了指揮棒,繼續推進YOLO技術的發展。學習
YOLOv4最近由Alexey AB在他的YOLO Darknet存儲庫中發表。YOLOv4主要是其餘已知的計算機視覺技術的集合,經過研究過程進行了組合和驗證。請看這裏深刻了解YOLOv4。測試
YOLOv4論文的讀數與PP-YOLO論文類似,以下所示。咱們提供了一些關於如何在Darknet中訓練YOLOv4的很好的訓練教程。
而後,就在幾個月前,YOLOv5被髮布了。YOLOv5採用了Darknet(基於C)的訓練環境,並將網絡轉換爲Pytorch。改進的訓練技術進一步提升了模型的性能,並建立了一個很是好用的開箱即用的對象檢測模型。從那之後,咱們一直鼓勵使用Roboflow的開發人員經過這個YOLOv5訓練教程將他們的注意力轉向YOLOv5,以造成他們的自定義對象檢測器。
輸入PP-YOLO。
PP是百度編寫的深度學習框架PaddlePaddle的縮寫。
若是你不熟悉Paddle,那咱們就在同一條船上了。paddle最初是用Python編寫的,它看起來相似於PyTorch和TensorFlow。深刻研究paddle框架頗有趣,但超出了本文的範圍。
PP-YOLO的論文讀起來很像YOLOv4論文,由於它是計算機視覺中已知的技術的彙總。新穎的貢獻是證實這些技術的集成可提升性能,並提供消融研究,以研究每一步對模型的幫助程度。
在咱們深刻研究PP-YOLO的貢獻以前,先回顧一下YOLO檢測器的體系結構。
YOLO檢測器分爲三個主要部分。
YOLO Backbone:YOLO Backbone(骨幹)是一個卷積神經網絡,它將圖像像素合併在一塊兒以造成不一樣粒度的特徵。骨幹一般在分類數據集(一般爲ImageNet)上進行預訓練。
YOLO Neck:YOLO Neck(上面選擇了FPN)在傳遞到預測頭以前對ConvNet圖層表示進行組合和混合。
YOLO Head:這是網絡中進行邊界框和類預測的部分。它由關於類,框和對象的三個YOLO損失函數指導。
第一種PP YOLO技術是用Resnet50-vd-dcn ConvNet骨幹替換YOLOv3 Darknet53骨幹。Resnet是一個更流行的骨幹,它的執行優化了更多的框架,而且其參數少於Darknet53。經過交換此骨幹能夠看到mAP的改進,這對PP YOLO來講是一個巨大的勝利。
PP-YOLO跟蹤網絡參數的指數移動平均,以保持模型權重的陰影預測時間。這已經被證實能夠提升推理的準確性。
PP-YOLO將批量大小從64增長到192。固然,若是有GPU內存限制,這很難實現。
PP-YOLO在FPN頸部實現DropBlock正則化(在過去,這一般發生在骨幹)。在網絡的給定步驟中,DropBlock會隨機刪除一部分訓練特徵,以指示模型不依賴於關鍵特徵進行檢測。
YOLO損失函數不能很好地轉換爲mAP指標,該指標在計算中大量使用了Union上的Intersection。所以,在考慮到最終預測的狀況下編輯訓練損失函數是頗有用的。這個編輯也出如今YOLOv4中。
PP-YOLO網絡添加了一個預測分支,以預測給定對象的模型估計的IOU。在決定是否預測對象時包含此IoU Aware可提升性能。
舊的YOLO模型不能很好地在錨框區域的邊界附近進行預測。爲了不這個問題,能夠稍微不一樣地定義框座標。YOLOv4中也有這種技術。
非最大抑制是一種刪除候選對象的提議以進行分類的技術。矩陣非最大抑制是一種並行排序這些候選預測的技術,它加快了計算速度。
CoordConv受ConvNets一個問題的激勵,即ConvNets僅將(x,y)座標映射到一個熱像素空間。CoordConv解決方案使卷積網絡能夠訪問其本身的輸入座標。CoordConv干預措施上方標有黃色菱形。有關更多詳細信息,請參見CordConv文件。
空間金字塔池化是骨幹層以後的一個額外塊,用於混合和合並空間特徵。還在YOLOv4和YOLOv5中實現。
PP YOLO的做者提煉出更大的ResNet模型做爲骨幹。更好的預訓練模型顯示也能夠改善下游轉移學習。
PP-YOLO賽過2020年4月23日發佈的YOLOv4結果。
公平地說,做者指出這多是一個錯誤的問題。做者的意圖彷佛不僅是「引入一種新穎的新型檢測器」,而是代表仔細調整對象檢測器以最大化性能的過程。在此處引用本文的介紹:
本文的重點是如何堆疊一些幾乎不影響效率的有效技巧以得到更好的性能……本文無心介紹一種新穎的目標檢測器。它更像一個食譜,它告訴你如何逐步構建更好的檢測器。咱們發現了一些對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上的討論。
值得注意的是,在YOLOv4中使用的許多技術(如架構搜索和數據擴充)並無在ppyolo中使用。這意味着,隨着更多這些技術的結合和集成,目標檢測的最新技術仍有發展的空間。
毋庸置疑,這是實施計算機視覺技術的激動人心的時刻。
PP-YOLO模型顯示了最早進的目標檢測的前景,但與其餘對象檢測器相比,改進是漸進的,它是在一個新的框架中編寫的。在這個階段,最好的作法是經過在本身的數據集上訓練PP-YOLO來發展本身的經驗結果。
同時,我建議你查看如下YOLO教程,讓你的對象探測器成爲現實:
如何在Darknet中訓練YOLOv4
如何在PyTorch中訓練YOLOv5
原文連接:https://towardsdatascience.com/pp-yolo-surpasses-yolov4-object-detection-advances-1efc2692aa62
歡迎關注磐創AI博客站:
http://panchuang.net/
sklearn機器學習中文官方文檔:
http://sklearn123.com/
歡迎關注磐創博客資源彙總站:
http://docs.panchuang.net/