PP-yoloE论文的理解
目錄
1.簡單回顧PP-YOLOv2
2.本文的貢獻
2.1?anchor free
2.2 Backbone and Neck
2.2.1 ESE的原始架構?
2.3?TAL和T-head
2.3.1?TAL
2.4 Efficient Task-aligned Head(ET-head)?
2.4.1?varifocal loss (VFL)
2.4.2?distribution focal loss(DFL)
3. 實驗
3.1 與sota檢測器相比
涉及到的論文
出自:百度 2022.44.2
論文:https://arxiv.org/pdf/2203.16250.pdf
代碼:https://github.com/PaddlePaddle/PaddleDetection
?PP-YOLOE的整體框架圖:
1.簡單回顧PP-YOLOv2
論文:https://arxiv.org/abs/2104.10419
代碼:https://github.com/paddlepaddle/paddledetection
主干ResNet50-vd,deformable convolution,PAN neck with SPP layer and DropBlock【7】,lightweight IOU aware head。 主干激活使用relu,neck 激活使用mish。 loss函數有分類loss,回歸loss和目標loss,且PP-yolov2使用了IoU loss和Iou aware loss;
2.本文的貢獻
①anchor-free
②powerful backbone and neck equipped with CSPRepResStage
③ET-head
④TAL動態label assign
2.1?anchor free
原因:基于anchor的方法摻雜太多人工設定,且同一組anchor參數無法適用于所有數據集;
細節:anchor free方法參考FCOS【25】,PPYOLOE中的anchor free方法,主要就是將之前anchor base中預測相較于anchor的xywh,改進為預測ltrb(left,top,right,bottom),并將ltrb結果乘上當前特征圖的stride。
結果:速度略有提升,且ap下降0.3;
2.2 Backbone and Neck
提出了RepResBlock:
使用了resdiual connections和dense connection,將這種模塊用于backbone和neck中;
參考TreeBlock【20】,作者提出了RepResBlock,訓練階段如fig3(b),推理階段如圖3(c),簡化的TreeBlock如fig3(a),將concat替換成element-wise add operation就得到了fig3(b)作者的backbone命名為CSPRepResBlock,包括三個卷積和四個RepResBlock,如fig3(d) 通過ESE(Effective Squeeze and Extraction) layer施加通道注意力。?
2.2.1 ESE的原始架構?
SE(Squeeze-and-Excitation(SE))結構:
?
ESE結構:
區別:se有兩個fc,ese只有一個fc;
2.3?TAL和T-head
物體檢測方法的2個局限性: ? ?
①分類和定位的獨立性。分類和定位一般用的是2個獨立的分支,這樣使得2個任務之間缺乏交互,在預測的時候就會出現:得分高的預測位置不準,位置準的預測得分不高。 ?
?②任務無關的樣本分配:對于分類最優的anchor和對于定位最優的anchor往往并不是同一個。
解決辦法:TOOD提出任務對齊頭(Task-aligned head, T-head)和新的任務對齊學習(Task-aligned Learning, TAL)來更明確地對齊兩個任務; 操作流程:首先,T-head對FPN特征進行預測。然后,計算每個定位點的任務對齊度量,TAL根據此度量為T-head生成學習信號。最后,T-head對分類和定位的分布進行相應的調整。其中,最對齊的錨通過概率圖prob (probability map)獲得更高的分類得分,通過學習偏移獲得更準確的錨框預測。
2.3.1?TAL
Task Alignment Learning:為了進一步指導T-Head做出與任務對齊的預測提出TAL。
它包括一個分配策略和新損失的函數;
分配策略 ①Task-aligned Sample Assignment:
1)對齊良好的錨點應能聯合精確定位預測出較高的分類分數;
2)不對齊的錨應具有較低的分類評分,并隨后予以抑制。
②Anchor alignment metric:分類得分和IoU的高階組合來衡量任務對齊程度,?
?
其中:s和u分別表示分類分數和IOU值
③Training sample assignment:選擇t值最大的m個錨點為正樣本,而使用其余的錨點作為負樣本;?
損失函數
t^是對t的歸一化
2.4 Efficient Task-aligned Head(ET-head)?
解決的點:分類和定位的任務沖突 ? ?
YOLOX使用了decopled head 該方法的缺點:導致分類任務和定位任務分離,使得兩個任務獨立; 缺乏特定任務學習;
解決方法:參考TOOD【5】,優化得到ET-head 改進點: ?
?①相比較TOOD,使用ESE block替換layer attention。 ? ?
②分類分支添加了shortcut。 ? ?
③分類分支使用varifocal loss (VFL),優點:這種實現使得iou高的正樣本對損耗的貢獻相對較大,促使模型更加關注高質量樣本; ?
?④回歸分支使用distribution focal loss(DFL)。
最終loss:
結果:map提升0.5;
2.4.1?varifocal loss (VFL)
focal loss:
其中a用來均衡正負樣本的權重,y為gt,前景類的預測概率p∈[0,1],(1-p)的r次和p的r次用來調制每個樣本的權重。使困難樣本有更高的權重; VFL從focal loss中借鑒了樣本加權思想來解決類不平衡問題;
VFL loss:
其中p是預測的IACS(分類)得分,q是目標IoU得分。 對于訓練中的正樣本,將q設置為生成的bbox和gt box之間的IoU;而對于負樣本,q為0。
2.4.2?distribution focal loss(DFL)
參考:《Generalized Focal Loss: Learning Qualified and Distributed Bounding Boxes for Dense Object Detection》 -清華大學,南京大學 https://blog.csdn.net/qq_52302919/article/details/125304230 ? https://zhuanlan.zhihu.com/p/310229973?
3. 實驗
實驗數據:MS COCO-2017(80個類別,118000張圖片)
數據處理細節:random crop,random horizontal filp,color distortion,和multi-scale;
參數設置細節:SGD,momentum=0.9,weight decay=5e-4,cosine learning rate schedule,epochs=300,warmup epochs=5,base learning rate=0.01,batch size=64;exponential moving average(EMA) 硬件設備:8*32G V100 GPU
3.1 與sota檢測器相比
科普性相關信息
一文看懂Label Assignment--標簽分配最新論文總結 - 知乎
涉及到的論文
《Bag of Tricks for Image Classification with Convolutional Neural Networks》
可學習的各種訓練策略(文中用于分類):
1.學習率的調整
當batch_size=256時,初始化lr=0.1,當batch_size=b,則學習率調整為
? ?
如:b=128,
2.學習率熱身效應
在訓練初期使用較小的學習率進行熱身,逐漸增大到設置的學習率,則前m個batches使用warm up使用的學習率:
? ? ,1<=i<=qm
3.使的網絡初始階段更容易訓練
Zero γ(可查看原文)
4.只對卷積層和全連接層的weight的weights使用weight decay
在SGD中優化中相當于L2正則,作者認為并不是所有的參數weight decay;
5.其他策略
(使用廣泛,不一一細講了):
1.提升模型的訓練速度,FP16和FP32的混合訓練;
2.ResNet網絡結構的優化;
3.Cosine Learning Rate Decay;
4.Label Smoothing
5.Knowledge Distillation
6.Mixup Training
參考:https://www.jianshu.com/p/02a76ac73d48
《Dropblock:A regularization method for convolutional networks:Advaces in neural information process system》
dropblock:一種正則化方法,在ImageNet分類任務中,使用Resnet-50精度提升了1.6%個點,在coco檢測任務中,精度提升了1.6%。
SPP layer :將不同尺寸使用max pooling輸出為固定長度的尺寸
Relu激活:又稱為修正線性單元(Rectified Linear Unit),是一種分段線性函數,其彌補了sigmoid函數以及tanh函數的梯度消失問題。
函數:
ReLU函數的優點:
1. 在輸入為正數的時候(對于大多數輸入 z 空間來說),不存在梯度消失問題。
2. 計算速度要快很多。ReLU函數只有線性關系,不管是前向傳播還是反向傳播,都比sigmod和tanh要快很多。(sigmod和tanh要計算指數,計算速度會比較慢)
ReLU函數的缺點:
當輸入為負時,梯度為0,會產生梯度消失問題。
參考鏈接:https://zhuanlan.zhihu.com/p/139696588
mish激活:
一種自正則的非單調神經激活函數,平滑的激活函數允許更好的信息深入神經網絡,從而得到更好的準確性和泛化。根據論文實驗,該函數在最終準確度上比Swish(+0.494%)和ReLU(+ 1.671%)都有提高。
函數:
圖形來自于:https://wenku.baidu.com/view/9cbad2976adc5022aaea998fcc22bcd126ff4236.html?
IOU loss的使用:
標檢測任務的損失函數由Classificition Loss和Bounding Box Regeression Loss兩部分構成。
Bounding Box Regression Loss Function的演進路線是:
Smooth L1 Loss --> IoU Loss --> GIoU Loss --> DIoU Loss --> CIoU Loss
Iou loss提出前,大家主要通過4個坐標點獨立回歸Bounding box(bbox,邊界框),這樣做的缺點有:
目標檢測的評價方式是使用IoU,而實際回歸坐標框的時候使用4個坐標點,二者是不等價的,如下圖所示;
L1或者L2 Loss相同的框,其IoU 不是唯一的
通過4個坐標點回歸坐標框的方式,是假設4個點相互獨立的,沒有考慮其相關性,實際4個坐標點具有一定的相關性
基于L1和L2的距離的loss對于尺度 不具有 不變性
————————————————
版權聲明:本文為CSDN博主「尋找永不遺憾」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/weixin_45377629/article/details/124911293
?《Fcos:Fully convolutional one-stage object detection》
提出的無anchor的網絡結構:
分類使用fcoal loss,回歸使用iou loss;center-ness大小為0-1,用BCE loss計算。用于抑制FCOS產生的低質量的bbox,尤其是那些離目標中心較遠的locations?;
residual connections:
殘差鏈接主要是為了解決梯度消失問題;
dense connections :
密集連接主要是使用更多的感受野擴大中間特征;
總結
以上是生活随笔為你收集整理的PP-yoloE论文的理解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: IDEA开发工具2018破解版教程
- 下一篇: 煽情的儿子521=随笔