近日,美團視覺智慧部發布了 YOLOv6 3.0 版本,再一次將目標檢測的綜合效能推向新高。本次更新除了對 YOLOv6-N/S/M/L 模型進行全系列升級之外,還推出了大解析度 P6 模型。其中,YOLOv6-L6 檢測精度和速度超越 YOLOv7-E6E,取得當前實時目標檢測榜單 SOTA。本文主要介紹了 YOLOv6 3.0 版本中引入的技術創新和最佳化,希望能為從事相關工作的同學帶來一些啟發或幫助。
1. 概述
1 月 6 日,美團視覺智慧部發布了 YOLOv6 3.0 版本,再一次將目標檢測的綜合效能推向新高。本次更新除了對 YOLOv6-N/S/M/L 模型進行全系列升級之外,還推出了大解析度 P6 模型。其中,YOLOv6-L6 檢測精度達到 57.2% AP,在 T4 卡上推理速度可達 29 FPS,超越 YOLOv7-E6E,取得當前實時目標檢測榜單 SOTA。
技術報告:YOLOv6 v3.0: A Full-Scale Reloading
YOLOv6 Github 傳送門:https://github.com/meituan/YOLOv6,歡迎 Star 收藏,隨時取用。
注:YOLOv6 系列模型均在訓練 300epoch 且不使用預訓練模型或額外檢測資料集下獲得,“‡” 表示採用了自蒸餾演算法,“*” 表示從官方程式碼庫對釋出模型進行重新測評的指標。以上速度指標均在 T4 TRT7.2 環境下測試。
2. 關鍵技術介紹
本次更新主要在 Neck 網路設計、訓練和蒸餾策略等方面進行了創新和最佳化:
- 設計了表徵能力更強的可重參化雙向融合 PAN(RepBi-PAN)Neck 網路;
- 提出了全新的錨點輔助訓練(Anchor-Aided Training)策略;
- 提出瞭解耦定位蒸餾(Decoupled Location Distillation)策略以提升小模型的效能。
2.1 表徵能力更強的 RepBi-PAN Neck 網路
有效的多尺度特徵融合網路對目標檢測的效果尤為關鍵。特徵金字塔網路 (FPN) 透過自上而下的路徑來融合來自骨幹網路不同 Stage 的輸出特徵以彌補網路學習過程中目標位置資訊的損失。鑑於單向資訊流傳輸的侷限性,PANet 在 FPN 之上新增了一個額外的自底向上路徑。 BiFPN 為不同的輸入特徵引入了可學習的權重,並簡化了 PAN 以實現更好的效能和更高的效率。PRB-FPN 透過具有雙向融合的並行殘差 FPN 結構來保留高質量的特徵,以進行準確定位。
受到上述工作的啟發,我們提出了一個表徵能力更強的可重參化雙向融合 PAN(RepBi-PAN)Neck 網路。一般而言,骨幹網路淺層特徵解析度高,具有豐富的空間資訊,有利於目標檢測中的定位任務。為了聚合淺層特徵,常見的做法是在 FPN 中增加 P2 融合層以及一個額外的檢測頭,但這往往會帶來較大的計算成本。
為了實現更好的精度和時延權衡,我們設計了一個雙向聯結(Birectional Concatenate, BiC)模組,在自上而下的傳輸路徑中引入自底向上的資訊流,使得淺層特徵能以更高效的方式參與多尺度特徵融合,進一步增強融合特徵的表達能力。此模組能夠幫助保留更準確的定位訊號,這對於小物體的定位具有重要意義。
此外,我們對上一版本的 SimSPPF 模組進行了特徵增強最佳化,以豐富特徵圖的表示能力。我們發現 YOLOv7 使用的 SPPCSPC 模組能夠提升檢測精度,但對網路推理速度的影響較大。於是我們對其進行了簡化設計,在檢測精度影響不大的情況下,大大提升了推理效率。同時,我們引入了可重引數化思想並對 Neck 網路的通道寬度和深度進行了相應的調整。最終 RepBi-PAN 網路結構如下圖 2 所示:
從表2可以看到,在 YOLOv6-S/L 模型上,僅在 PAN 網路自上而下的傳輸路徑引入 BiC 模組後,對推理速度影響保持在 4% 的情況下,檢測精度分別提升 0.6% 和 0.4% AP。當我們嘗試額外地在自底向上的資訊流中將常規聯結替換成 BiC 模組時,反而沒有獲得進一步正向的增益,因此我們僅在自上而下的路徑中應用 BiC 模組。與此同時,我們還注意到,BiC 模組能夠為小目標的檢測精度帶來 1.8% AP 的提升。
在表 3 中,我們對不同的 SPP 模組對模型精度和速度影響做了實驗對比,其中包括經過我們簡化設計的 SPPF、SPPCSPC 和 CSPSPPF 模組。除此之外,我們還嘗試了在骨幹網路 C3、C4 和 C5 的輸出特徵後分別採用了 SimSPPF 模組以加強特徵的聚合表達,在表中用 SimSPPF * 3表示。從實驗結果來看,重複使用 SimSPPF 模組雖然增加了計算量,但並沒有帶來檢測精度的進一步提升。
經簡化設計的 SPPCSPC 模組對比 SimSPPF 模組 在 YOLOv6-N/S 模型上分別提升了 1.6% 和 0.3% AP,但對推理速度 FPS 降低約10%。而當我們將 SimSPPF 模組替換為最佳化後的 SimCSPSPPF 模組後,在 YOLOv6-N/S/M 模型上分別取得了1.1%/0.4%/0.1% 的精度增益,同時推理速度對比 SimSPPCSPC 模組有較大的提升。因此,為了更好的精度-效率權衡,在 YOLOv6-N/S 上採用 SimCSPSPPF 模組,而在 YOLOv6-M/L 上採用 SimSPPF 模組。
2.2 全新的錨點輔助訓練(Anchor-Aided Training)策略
基於深度學習的目標檢測技術從學習正規化上主要可分為 Anchor-based 和 Anchor-free 兩大類,這兩類方法針對不同尺度的目標檢測上分別存在不同的優勢。我們使用 YOLOv6-N 作為基線,對 Anchor-based 和 Anchor-free 正規化的異同點進行了相關的實驗和分析。
從表 4 中可以看出,當 YOLOv6-N 分別採用 Anchor-based 和 Anchor-free 訓練正規化時,模型的整體 mAP 幾乎接近,但採用 Anchor-based 的模型在小、中、大目標上的 AP 指標會更高。從以上的實驗可以得出結論:相比於 Anchor-free 正規化,基於 Anchor-based 的模型存在額外的效能增益。
同時我們發現,YOLOv6 使用 TAL 進行標籤分配時,其模型精度的穩定性與是否採用 ATSS 預熱有較大關係。當不使用 ATSS 預熱時,對同樣引數配置的 YOLOv6-N 進行多次訓練,模型精度最高可達35.9% mAP,最低至 35.3% mAP,相同模型會有 0.6% mAP 的差異。但當使用 ATSS 預熱時,模型精度最高卻只能到達 35.7% mAP。從實驗結果可以分析得出,ATSS 的預熱過程利用了 Anchor-based 的預設資訊,進而達到穩定模型訓練的目的,但也會在一定程度上限制網路的峰值能力,因此並不是一種最優的選擇。
受到上述工作的啟發,我們提出了基於錨點輔助訓練(Anchor-Aided Training,AAT)策略。在網路訓練過程中,同時融合 Anchor-based 和 Anchor-free 的兩種訓練正規化,並對全階段網路進行對映及最佳化,最終實現了Anchor 的統一,充分發揮了結合不同 Anchor 網路的各自優勢,從而進一步提升了模型檢測精度。具體來說:
- 一方面,我們會在網路的分類頭和迴歸頭上分別新增 Anchor-based 輔助分支,在訓練階段,該分支與 Anchor-free 分支分別進行獨立的 Loss 計算,之後會對 Loss 進行相加,各自反向傳播進行網路的最佳化。透過 Anchor-based 輔助分支,為網路訓練引入額外的內嵌指導資訊,並與 Anchor-free 分支的資訊進行整合,從而達到對結合不同 Anchor 網路的全方位融合的目的,進一步挖掘網路自身的潛力,充分發揮其效能。
- 另一方面,在網路標籤匹配的過程中引入了同特徵點密集取樣的機制。透過擴大每次樣本匹配過程中所選取候選框的範圍,增加候選框中正樣本的數量,並且對同一特徵點重複投放取樣點,進一步提升在訓練過程中候選框的質量。與此同時,在網路的每一層中還會搭配原始的 Anchor-free 分支,進一步提升候選框的多樣性。
除此之外,我們還提出靈活配置的訓練策略,僅在訓練過程中引入額外的輔助分支,在測試過程中不予使用。最終在不增加推理時間的情況下,提升網路精度,無痛漲點。最終 AAT 策略的示意圖如下圖 3 所示:
採用 AAT 訓練策略的消融實驗結果如下表 5 所示。我們在 YOLOv6 的各尺寸模型上進行了實驗,其中 YOLOv6-S 模型採用 AAT 策略後有 0.3% 的精度增益,而在 YOLOv6-M/L 模型上分別帶來了0.5% 的精度增益。值得注意的是,YOLOv6-N/S/M 在小目標檢測的精度指標得到了顯著增強。
2.3 無痛漲點的 DLD 解耦定位蒸餾策略
在目標檢測的蒸餾任務中,LD 透過引入 DFL 分支,從而達到了在網路中對定位資訊蒸餾的目的,使分類和定位資訊得以同步回傳,彌補了 Logit Mimicking 方法無法使用定位蒸餾資訊的不足。但是,DFL 分支的新增,對於小模型速度的影響是很明顯的。新增了 DFL 分支後,YOLOv6-N 的速度下降了 16.7%,YOLOv6-S 的速度下降了 5.2%。而在實際的工業應用當中,對於小模型速度的要求往往很高。因此,目前的蒸餾策略並不適合於工業落地。
針對這個問題,我們提出了基於解耦檢測任務和蒸餾任務的 DLD(Decoupled Location Distillation)演算法。DLD 演算法會在網路每一層的迴歸頭上分別新增了額外的強化迴歸分支,在訓練階段,該分支同樣會參與 IoU 損失的計算,並將其累加到最終的 Loss 中。
透過增加的額外的強化迴歸分支,可以對網路新增更多的額外約束,從而對網路進行更全面細緻的最佳化。並且,DLD演算法在對強化迴歸分支進行訓練時,引入了分支蒸餾學習策略。分支蒸餾學習策略會僅使用 DFL 分支參與網路標籤分配的過程,並將標籤分配的結果投入到強化迴歸分支進行引導學習,從而參與強化迴歸分支的損失函式計算和反向傳播最佳化。
- 一方面,DFL 分支的精度更高,在整個訓練週期可以起到對強化分支蒸餾的作用,進一步提升強化分支的精度。
- 另一方面,透過分支蒸餾進行的引導學習,可以進一步將 DFL 分支的效果傳遞給強化迴歸分支,為之後的靈活配置起到鋪墊作用。
除此之外,DLD 演算法同樣搭配了靈活配置的訓練策略,在訓練過程中採用雙迴歸分支結構,對網路進行更全面細緻的最佳化,進一步對齊雙分支的迴歸能力。在測試過程中,移除掉冗餘的 DFL 分支,僅保留強化迴歸分支,在簡化網路的同時保持網路精度,最終實現了對目標檢測演算法可無痛漲點的 DLD 蒸餾演算法。DLD 的消融實驗結果如下表6所示:
在表 6 中,我們在 YOLOv6-S 模型上分別對比了訓練雙倍輪數和採用 DLD 策略對模型效能的影響,從實驗資料可以看出,當訓練 600epoch時,YOLOv6-S 僅能達到 44.6% mAP。而採用 DLD 蒸餾策略後,YOLOv6-S 檢測精度比使用雙倍輪數訓練的高 0.5%,最終達到45.1%。由此可得,DLD 蒸餾策略可在不影響推理效率的前提下,提升小模型的檢測精度,實現無痛漲點。
3. 總結
本文對 YOLOv6 3.0 版本的技術創新和最佳化進行了詳細解析,希望能幫助使用者理解相關演算法設計的思路以及具體實現。
未來,我們還會持續完善 YOLOv6 社群生態,同時也歡迎社群同學加入我們,共同建設一個適合工業界應用的更快更準的目標檢測框架。
再次附上 YOLOv6 Github 的傳送門:https://github.com/meituan/YOLOv6 ,感謝您的 Star 收藏。
4. 作者簡介
- 楚怡、奕非、露露等,均來自美團視覺智慧部。
閱讀更多
| 在美團公眾號選單欄對話方塊回覆【2022年貨】、【2021年貨】、【2020年貨】、【2019年貨】、【2018年貨】、【2017年貨】等關鍵詞,可檢視美團技術團隊歷年技術文章合集。
| 本文系美團技術團隊出品,著作權歸屬美團。歡迎出於分享和交流等非商業目的轉載或使用本文內容,敬請註明“內容轉載自美團技術團隊”。本文未經許可,不得進行商業性轉載或者使用。任何商用行為,請傳送郵件至tech@meituan.com申請授權。