更準更快的YOLOv6來了,美團出品並開源
YOLOv6 是美團視覺智慧部研發的一款目標檢測框架,致力於工業應用。本框架同時專注於檢測的精度和推理效率,在工業界常用的尺寸模型中:YOLOv6-nano 在 COCO 上精度可達 35.0% AP,在 T4 上推理速度可達 1242 FPS;YOLOv6-s 在 COCO 上精度可達 43.1% AP,在 T4 上推理速度可達 520 FPS。在部署方面,YOLOv6 支援 GPU(TensorRT)、CPU(OPENVINO)、ARM(MNN、TNN、NCNN)等不同平臺的部署,極大地簡化工程部署時的適配工作。目前,專案已開源至 Github,歡迎有需要的小夥伴們 Star 收藏,隨時取用。
專案地址:https://github.com/meituan/YOLOv6
精度與速度遠超YOLOv5 和YOLOX 的新框架
目標檢測作為計算機視覺領域的一項基礎性技術,在工業界得到了廣泛的應用,其中YOLO系列演算法因其較好的綜合性能,逐漸成為大多數工業應用時的首選框架。至今,業界已衍生出許多YOLO檢測框架,其中以YOLOv5[1]、YOLOX[2] 和 PP-YOLOE[3] 最具代表性,但在實際使用中,我們發現上述框架在速度和精度方面仍有很大的提升的空間。基於此,我們通過研究並借鑑了業界已有的先進技術,開發了一套新的目標檢測框架——YOLOv6。該框架支援模型訓練、推理及多平臺部署等全鏈條的工業應用需求,並在網路結構、訓練策略等演算法層面進行了多項改進和優化,在 COCO 資料集上,YOLOv6 在精度和速度方面均超越其他同體量演算法,相關結果如下圖 1 所示:
圖 1-1YOLOv6 各尺寸模型與其他模型效能對比
圖 1-2YOLOv6 與其他模型在不同解析度下效能對比
圖 1-1 展示了不同尺寸網路下各檢測演算法的效能對比,曲線上的點分別表示該檢測演算法在不同尺寸網路下(s/tiny/nano)的模型效能,從圖中可以看到,YOLOv6 在精度和速度方面均超越其他YOLO系列同體量演算法。圖 1-2 展示了輸入解析度變化時各檢測網路模型的效能對比,曲線上的點從左往右分別表示影象解析度依次增大時(384/448/512/576/640)該模型的效能,從圖中可以看到,YOLOv6 在不同解析度下,仍然保持較大的效能優勢。
YOLOv6 關鍵技術介紹
YOLOv6 主要在 Backbone、Neck、Head 以及訓練策略等方面進行了諸多的改進:
-
我們統一設計了更高效的 Backbone 和 Neck :受到硬體感知神經網路設計思想的啟發,基於 RepVGG style[4] 設計了可重引數化、更高效的骨幹網路 EfficientRep Backbone 和 Rep-PAN Neck。
-
優化設計了更簡潔有效的 Efficient Decoupled Head,在維持精度的同時,進一步降低了一般解耦頭帶來的額外延時開銷。
-
在訓練策略上,我們採用 Anchor-free 無錨正規化,同時輔以 SimOTA[2] 標籤分配策略以及 SIoU[9] 邊界框迴歸損失來進一步提高檢測精度。
2.1 Hardware-friendly 的骨幹網路設計
YOLOv5/YOLOX 使用的 Backbone 和 Neck 都基於 CSPNet[5] 搭建,採用了多分支的方式和殘差結構。對於 GPU 等硬體來說,這種結構會一定程度上增加延時,同時減小記憶體頻寬利用率。下圖 2 為計算機體系結構領域中的 Roofline Model[8] 介紹圖,顯示了硬體中計算能力和記憶體頻寬之間的關聯關係。
圖 2 Roofline Model 介紹圖
於是,我們基於硬體感知神經網路設計的思想,對 Backbone 和 Neck 進行了重新設計和優化。該思想基於硬體的特性、推理框架 / 編譯框架的特點,以硬體和編譯友好的結構作為設計原則,在網路構建時,綜合考慮硬體計算能力、記憶體頻寬、編譯優化特性、網路表徵能力等,進而獲得又快又好的網路結構。對上述重新設計的兩個檢測部件,我們在YOLOv6 中分別稱為 EfficientRep Backbone 和 Rep-PAN Neck,其主要貢獻點在於:
1. 引入了 RepVGG[4] style 結構。
2. 基於硬體感知思想重新設計了 Backbone 和 Neck。
RepVGG[4] Style 結構是一種在訓練時具有多分支拓撲,而在實際部署時可以等效融合為單個 3x3 卷積的一種可重引數化的結構(融合過程如下圖 3 所示)。通過融合成的 3x3 卷積結構,可以有效利用計算密集型硬體計算能力(比如 GPU),同時也可獲得 GPU/CPU 上已經高度優化的 NVIDIA cuDNN 和 Intel MKL 編譯框架的幫助。實驗表明,通過上述策略,YOLOv6 減少了在硬體上的延時,並顯著提升了演算法的精度,讓檢測網路更快更強。以 nano 尺寸模型為例,對比YOLOv5-nano 採用的網路結構,本方法在速度上提升了 21%,同時精度提升 3.6% AP。
圖 3 Rep 運算元的融合過程 [4]
EfficientRep Backbone:在 Backbone 設計方面,我們基於以上 Rep 運算元設計了一個高效的 Backbone。相比於YOLOv5 採用的 CSP-Backbone,該 Backbone 能夠高效利用硬體(如 GPU)算力的同時,還具有較強的表徵能力。下圖 4 為 EfficientRep Backbone 具體設計結構圖,我們將 Backbone 中 stride=2 的普通 Conv 層替換成了 stride=2 的 RepConv 層。同時,將原始的 CSP-Block 都重新設計為 RepBlock,其中 RepBlock 的第一個 RepConv 會做 channel 維度的變換和對齊。另外,我們還將原始的 SPPF 優化設計為更加高效的 SimSPPF。
圖 4 EfficientRep Backbone 結構圖
Rep-PAN:在 Neck 設計方面,為了讓其在硬體上推理更加高效,以達到更好的精度與速度的平衡,我們基於硬體感知神經網路設計思想,為YOLOv6 設計了一個更有效的特徵融合網路結構。Rep-PAN 基於 PAN[6] 拓撲方式,用 RepBlock 替換了YOLOv5 中使用的 CSP-Block,同時對整體 Neck 中的運算元進行了調整,目的是在硬體上達到高效推理的同時,保持較好的多尺度特徵融合能力(Rep-PAN 結構圖如下圖 5 所示)。
圖 5 Rep-PAN 結構圖
2.2 更簡潔高效的 Decoupled Head
在YOLOv6 中,我們採用瞭解耦檢測頭(Decoupled Head)結構,並對其進行了精簡設計。原始YOLOv5 的檢測頭是通過分類和迴歸分支融合共享的方式來實現的,而YOLOX 的檢測頭則是將分類和迴歸分支進行解耦,同時新增了兩個額外的 3x3 的卷積層,雖然提升了檢測精度,但一定程度上增加了網路延時。因此,我們對解耦頭進行了精簡設計,同時綜合考慮到相關運算元表徵能力和硬體上計算開銷這兩者的平衡,採用 Hybrid Channels 策略重新設計了一個更高效的解耦頭結構,在維持精度的同時降低了延時,緩解了解耦頭中 3x3 卷積帶來的額外延時開銷。通過在 nano 尺寸模型上進行消融實驗,對比相同通道數的解耦頭結構,精度提升 0.2% AP 的同時,速度提升 6.8%。
圖 6 Efficient Decoupled Head 結構圖
2.3 更有效的訓練策略
為了進一步提升檢測精度,我們吸收借鑑了學術界和業界其他檢測框架的先進研究進展:Anchor-free 無錨正規化 、SimOTA 標籤分配策略以及 SIoU 邊界框迴歸損失。
-
Anchor-free 無錨正規化
YOLOv6 採用了更簡潔的 Anchor-free 檢測方法。由於 Anchor-based 檢測器需要在訓練之前進行聚類分析以確定最佳 Anchor 集合,這會一定程度提高檢測器的複雜度;同時,在一些邊緣端的應用中,需要在硬體之間搬運大量檢測結果的步驟,也會帶來額外的延時。而 Anchor-free 無錨正規化因其泛化能力強,解碼邏輯更簡單,在近幾年中應用比較廣泛。
經過對 Anchor-free 的實驗調研,我們發現,相較於 Anchor-based 檢測器的複雜度而帶來的額外延時,Anchor-free 檢測器在速度上有 51% 的提升。
-
SimOTA 標籤分配策略
為了獲得更多高質量的正樣本,YOLOv6 引入了 SimOTA [4] 演算法動態分配正樣本,進一步提高檢測精度。YOLOv5 的標籤分配策略是基於 Shape 匹配,並通過跨網格匹配策略增加正樣本數量,從而使得網路快速收斂,但是該方法屬於靜態分配方法,並不會隨著網路訓練的過程而調整。近年來,也出現不少基於動態標籤分配的方法,此類方法會根據訓練過程中的網路輸出來分配正樣本,從而可以產生更多高質量的正樣本,繼而又促進網路的正向優化。
例如,OTA[7] 通過將樣本匹配建模成最佳傳輸問題,求得全域性資訊下的最佳樣本匹配策略以提升精度,但 OTA 由於使用了 Sinkhorn-Knopp 演算法導致訓練時間加長,而 SimOTA[4] 演算法使用 Top-K 近似策略來得到樣本最佳匹配,大大加快了訓練速度。故YOLOv6 採用了 SimOTA 動態分配策略,並結合無錨正規化,在 nano 尺寸模型上平均檢測精度提升 1.3% AP。
-
SIoU 邊界框迴歸損失
為了進一步提升迴歸精度,YOLOv6 採用了 SIoU[9] 邊界框迴歸損失函式來監督網路的學習。目標檢測網路的訓練一般需要至少定義兩個損失函式:分類損失和邊界框迴歸損失,而損失函式的定義往往對檢測精度以及訓練速度產生較大的影響。
近年來,常用的邊界框迴歸損失包括 IoU、GIoU、CIoU、DIoU loss 等等,這些損失函式通過考慮預測框與目標框之前的重疊程度、中心點距離、縱橫比等因素來衡量兩者之間的差距,從而指導網路最小化損失以提升迴歸精度,但是這些方法都沒有考慮到預測框與目標框之間方向的匹配性。SIoU損失函式通過引入了所需迴歸之間的向量角度,重新定義了距離損失,有效降低了迴歸的自由度,加快網路收斂,進一步提升了迴歸精度。通過在YOLOv6s 上採用 SIoU loss 進行實驗,對比 CIoU loss,平均檢測精度提升 0.3% AP。
實驗結果
經過以上優化策略和改進,YOLOv6 在多個不同尺寸下的模型均取得了卓越的表現。下表 1 展示了YOLOv6-nano 的消融實驗結果,從實驗結果可以看出,我們自主設計的檢測網路在精度和速度上都帶來了很大的增益。
表 1YOLOv6-nano 消融實驗結果
下表 2 展示了YOLOv6 與當前主流的其他YOLO系列演算法相比較的實驗結果。從表格中可以看到:
表 2YOLOv6 各尺寸模型效能與其他模型的比較
-
YOLOv6-nano 在 COCO val 上 取得了 35.0% AP 的精度,同時在 T4 上使用 TRT FP16 batchsize=32 進行推理,可達到 1242FPS 的效能,相較於YOLOv5-nano 精度提升 7% AP,速度提升 85%。
-
YOLOv6-tiny 在 COCO val 上 取得了 41.3% AP 的精度, 同時在 T4 上使用 TRT FP16 batchsize=32 進行推理,可達到 602FPS 的效能,相較於YOLOv5-s 精度提升 3.9% AP,速度提升 29.4%。
-
YOLOv6-s 在 COCO val 上 取得了 43.1% AP 的精度, 同時在 T4 上使用 TRT FP16 batchsize=32 進行推理,可達到 520FPS 的效能,相較於YOLOX-s 精度提升 2.6% AP,速度提升 38.6%;相較於 PP-YOLOE-s 精度提升 0.4% AP 的條件下,在 T4 上使用 TRT FP16 進行單 batch 推理,速度提升 71.3%。
總結與展望
本文介紹了美團視覺智慧部在目標檢測框架方面的優化及實踐經驗,我們針對YOLO系列框架,在訓練策略、主幹網路、多尺度特徵融合、檢測頭等方面進行了思考和優化,設計了新的檢測框架 -YOLOv6,初衷來自於解決工業應用落地時所遇到的實際問題。
在打造YOLOv6 框架的同時,我們探索和優化了一些新的方法,例如基於硬體感知神經網路設計思想自研了 EfficientRep Backbone、Rep-Neck 和 Efficient Decoupled Head,同時也吸收借鑑了學術界和工業界的一些前沿進展和成果,例如 Anchor-free、SimOTA 和 SIoU 迴歸損失。在 COCO 資料集上的實驗結果顯示,YOLOv6 在檢測精度和速度方面都屬於佼佼者。未來我們會持續建設和完善YOLOv6 生態,主要工作包括以下幾個方面:
1. 完善YOLOv6 全系列模型,持續提升檢測效能。
2. 在多種硬體平臺上,設計硬體友好的模型。
3. 支援 ARM 平臺部署以及量化蒸餾等全鏈條適配。
4. 橫向拓展和引入關聯技術,如半監督、自監督學習等等。
5. 探索YOLOv6 在更多的未知業務場景上的泛化效能。
同時也歡迎社群同學加入我們,共同建設一個適合工業應用的更快更準的目標檢測框架。
參考文獻
[1]YOLOv5, https://github.com/ultralytics/yolov5
[2]YOLOX: ExceedingYOLOSeries in 2021, https://arxiv.org/abs/2107.08430
[3] PP-YOLOE: An evolved version ofYOLO, https://arxiv.org/abs/2203.16250
[4] RepVGG: Making VGG-style ConvNets Great Again, https://arxiv.org/pdf/2101.03697
[5] CSPNet: A New Backbone that can Enhance Learning Capability of CNN, https://arxiv.org/abs/1911.11929
[6] Path aggregation network for instance segmentation, https://arxiv.org/abs/1803.01534
[7] OTA: Optimal Transport Assignment for Object Detection, https://arxiv.org/abs/2103.14259
[8] Computer Architecture: A Quantitative Approach
[9] SIoU Loss: More Powerful Learning for Bounding Box Regression, https://arxiv.org/abs/2205.12740
- 圖神經網路發Nature子刊,卻被爆比普通演算法慢104倍,質疑者:灌水新高度?
- 亞馬遜欲17億美元收購iRobot,掃地機器人“含金量”幾何?
- 依託原創架構,壁仞科技推出通用GPU晶片
- 賽事評獎|SAIL獎TOP30系列專題之一——AI相伴,智啟“芯”征程
- 即使有人刪庫跑路,IBM也能幾小時內恢復資料
- 華為昇騰AI開發者創享日 | 小視科技以城市AI中樞,使能智慧城市建設
- 差點被ECCV錯過的Oral論文:影片理解新框架,僅用微調的「成本」,達到預訓練的「全能」
- 鄂維南院士:AI for Science,一場發生在當下的科技革命
- 光環背後的「車路協同」,關鍵難題仍然待解
- 每秒10億次更新、實現秒級同步延遲,騰訊深度學習推薦系統首次入選OSDI頂會
- 數學證明克爾黑洞穩定性!丘成桐:廣義相對論重大突破
- 圖森未來自動駕駛卡車撞牆了,外媒:試圖假裝成「人為錯誤」
- 一塊GPU訓練TB級推薦模型不是夢,OneEmbedding效能一騎絕塵
- 如何用低成本方案解決室內超大場景下機器人定位與導航難題?
- 國內首臺商用人形雙足機器人發展史
- 優必選服務機器人自然語言處理技術
- 無程式碼生產力工具賦能數字化供應鏈新發展
- 資料價值躍遷:洞見下一代變革力量
- 1600米深海沉船如何探索?斯坦福人形機器人實現遠端人機互動下潛
- 從機器學習到推薦系統,技術平臺全面統一:火山引擎已經發動