柚子快報激活碼778899分享:目標檢測——YOLOX算法解讀
柚子快報激活碼778899分享:目標檢測——YOLOX算法解讀
論文:YOLOX: Exceeding YOLO Series in 2021(2021.7.18) 作者:Zheng Ge, Songtao Liu, Feng Wang, Zeming Li, Jian Sun 鏈接:https://arxiv.org/abs/2107.08430 代碼:https://github.com/Megvii-BaseDetection/YOLOX
YOLO系列算法解讀: YOLOv1通俗易懂版解讀、SSD算法解讀、YOLOv2算法解讀、YOLOv3算法解讀、YOLOv4算法解讀、YOLOv5算法解讀、YOLOR算法解讀、YOLOX算法解讀、YOLOv6算法解讀、YOLOv7算法解讀、YOLOv8算法解讀、YOLOv9算法解讀、YOLOv10算法解讀
PP-YOLO系列算法解讀: PP-YOLO算法解讀、PP-YOLOv2算法解讀、PP-PicoDet算法解讀、PP-YOLOE算法解讀、PP-YOLOE-R算法解讀
文章目錄
1、算法概述2、YOLOX細節(jié)3、實驗4、總結(jié)
1、算法概述
YOLOX是曠視科技2021年提出的目標檢測算法,它基于YOLOv3-SPP進行改進,將原有的anchor-based調(diào)整為了anchor-free形式,并且集成了其他先進檢測技術(比如decoupled head、label assignment SimOTA)取得了SOTA性能。類似于YOLOv5,它也提供了多個尺度版本的模型,Nano/Tiny/s/m/l/x,而且該方法的ONNX、TensorRT、NCNN、OpenVino推理模型均已開源。下圖是YOLOX與其他檢測算法的對比情況圖: 以我實際的使用情況來看,對比YOLOv5算法,YOLOX在檢測精度方面確實比YOLOv5更加優(yōu)秀,但速度會稍微慢一點點。
2、YOLOX細節(jié)
作者以YOLOv3-SPP為基準,即backbone為Darknet-53,neck為SPP+FPN,head部分為分3個特征圖輸出NxNx(3x(4+1+80))。YOLOX對其進行一步步改進,下面來看具體的改進手段。
首先訓練YOLOv3-SPP baseline 和YOLOv3論文中不一樣的是,作者增加了一些策略,比如在訓練過程中加入EMA權(quán)重更新技術,cosine學習率下降,IoUloss和IoU感知分支;用BCEloss訓練分類分支和obj分支,用IoUloss訓練回歸分支。對于數(shù)據(jù)增強部分,作者只采用了隨機水平翻轉(zhuǎn)和顏色抖動以及多尺度訓練,沒有使用隨機尺寸裁剪(因為作者認為這和后面的馬賽克數(shù)據(jù)增強重疊了,不好評估馬賽克數(shù)據(jù)增強帶來的影響)。最終在COCO val數(shù)據(jù)集上是38.5%mAP。Decoupled head 在目標檢測中,分類與回歸任務的沖突是一種常見問題。因此,分類與定位頭的解耦已被廣泛應用到單階段、兩階段檢測中。然而YOLOv3/v4/v5都沒有把檢測頭解耦,作者通過實驗發(fā)現(xiàn),解耦檢測頭能讓訓練收斂更快,如下圖: 解耦頭,意味著會檢測頭會多一個分支結(jié)構(gòu),所以參數(shù)量會增加,為了盡量少增加參數(shù),作者在進入預測分支之前先用1x1卷積將特征通道減少,然后再接分類分支和回歸分支。其結(jié)構(gòu)如下所示: Strong data augmentation 數(shù)據(jù)增強部分,作者將Mosaic和MixUp添加到增強策略中,以提高YOLOX的性能。在模型訓練過程中采用MixUp和Mosaic對數(shù)據(jù)進行增強,并在最后15個epoch關閉它。實際應用下來看,最后15epoch關閉數(shù)據(jù)增強很有用。Anchor-free Anchor-based方法的弊端:1、需要在優(yōu)化之前,聚類分析數(shù)據(jù)集標注框的情況,這會導致訓練出來的模型使用場景及泛化性能受限。2、錨框設計增加了檢測頭的復雜性,預測框數(shù)量會根據(jù)錨框設計的增加而增加。 而無錨框機制顯著減少了需要啟發(fā)式調(diào)整的設計參數(shù)的數(shù)量和涉及的許多技巧(例如,錨框聚類,網(wǎng)格敏感)的良好性能,使檢測器的訓練和解碼階段大大簡化。將anchor-based調(diào)整為anchor-free比較簡單,作者將每個位置的預測從3個(YOLOv3是每個grid設置3個anchor)減少到1個,并使它們直接預測4個值,即網(wǎng)格左上角的兩個偏移量,以及預測框的高度和寬度。改成anchor-free后,作者參考FCOS,將每個目標的中心定位正樣本并預定義一個尺度范圍以便于對每個目標指派FPN特征尺度。經(jīng)過這個改進后,模型參數(shù)和GFLOPs都減少了,推理速度更快,而且性能還提升至42.9%mAP了。Multi positives 上面的匹配策略,一個gt框只能匹配一個正樣本(因為采用center location匹配),這意味著會忽略掉周邊高質(zhì)量預測框,所以作者劃定gt框中心點3x3的區(qū)域內(nèi)匹配正樣本,這個區(qū)域就類似于FCOS中的”center sampling”。這一改進促使模特mAP提升至45.0%。SimOTA OTA從全局角度分析標簽分配,并將分配過程制定為最優(yōu)運輸(Optimal Transport, OT)問題,從而產(chǎn)生當前分配策略中的SOTA性能。然而,在實踐中我們發(fā)現(xiàn)用Sinkhorn-Knopp算法求解OT問題帶來了額外25%的訓練時間,這對于訓練來說是相當昂貴的。因此,我們將其簡化為動態(tài)top-k策略,命名為SimOTA,以獲得近似解。在SimOTA中,預測框pj與gt框gi的匹配代價計算為 λ為平衡系數(shù),前者為gi與pj的分類損失,后者為gi與pj的回歸損失。 對于每一個gt框gi,選擇前topk個與之損失最小的預測框,且該預測框中心點在gi中心點3x3的范圍內(nèi)的可作為該gt框gi的正樣本,其余則作為負樣本。通過這個改進,mAP又提升至47.3%。End-to-end YOLO 即模型最后直接輸出結(jié)果,不需要最后做nms,這樣的改進會導致掉點,所以作者最終沒有采用。
下面是上述改進的消融實驗結(jié)果: 從表中可以看出,數(shù)據(jù)增強,劃分3x3領域取更多正樣本和SimOTA動態(tài)匹配正樣本這三個改進對YOLOX提升比較大。
Other Backbones 仿照YOLOv5的網(wǎng)絡規(guī)模改進得到Y(jié)OLOX-S/M/L/X,仿照YOLOv4-Tiny提出YOLOX-Tiny及YOLOX-Nano,實驗結(jié)果均表明YOLOX的這些改進很優(yōu)秀。
3、實驗
與現(xiàn)如今其他檢測算法對比
4、總結(jié)
YOLOX和YOLOv5是我個人用得比較熟練的算法,工程代碼都仔細研讀過,寫得都是非常優(yōu)秀,代碼結(jié)構(gòu)清晰明了,如今YOLOX和YOLOv5都在工業(yè)界得到了廣泛的應用,就我個人使用感覺而言,YOLOX的精度是略高于YOLOv5的,但速度比YOLOv5稍慢,兩個算法都有不同的應用版本,可以方便各個平臺適配;個人使用下來,YOLOX似乎對小目標漏檢比較多,YOLOv5泛化性能更強一點。
柚子快報激活碼778899分享:目標檢測——YOLOX算法解讀
文章來源
本文內(nèi)容根據(jù)網(wǎng)絡資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點和立場。
轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。