偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

YOLOv6:又快又準(zhǔn)的目標(biāo)檢測(cè)框架開(kāi)源啦

原創(chuàng) 精選
人工智能 新聞
本文介紹了美團(tuán)視覺(jué)智能部在目標(biāo)檢測(cè)框架方面的優(yōu)化及實(shí)踐經(jīng)驗(yàn),我們針對(duì) YOLO 系列框架,在訓(xùn)練策略、主干網(wǎng)絡(luò)、多尺度特征融合、檢測(cè)頭等方面進(jìn)行了思考和優(yōu)化,設(shè)計(jì)了新的檢測(cè)框架-YOLOv6,初衷來(lái)自于解決工業(yè)應(yīng)用落地時(shí)所遇到的實(shí)際問(wèn)題。

作者:楚怡、凱衡等 

近日,美團(tuán)視覺(jué)智能部研發(fā)了一款致力于工業(yè)應(yīng)用的目標(biāo)檢測(cè)框架 YOLOv6,能夠同時(shí)專(zhuān)注于檢測(cè)的精度和推理效率。在研發(fā)過(guò)程中,視覺(jué)智能部不斷進(jìn)行了探索和優(yōu)化,同時(shí)吸取借鑒了學(xué)術(shù)界和工業(yè)界的一些前沿進(jìn)展和科研成果。在目標(biāo)檢測(cè)權(quán)威數(shù)據(jù)集 COCO 上的實(shí)驗(yàn)結(jié)果顯示,YOLOv6 在檢測(cè)精度和速度方面均超越其他同體量的算法,同時(shí)支持多種不同平臺(tái)的部署,極大簡(jiǎn)化工程部署時(shí)的適配工作。特此開(kāi)源,希望能幫助到更多的同學(xué)。

1. 概述

YOLOv6 是美團(tuán)視覺(jué)智能部研發(fā)的一款目標(biāo)檢測(cè)框架,致力于工業(yè)應(yīng)用。本框架同時(shí)專(zhuān)注于檢測(cè)的精度和推理效率,在工業(yè)界常用的尺寸模型中:YOLOv6-nano 在 COCO 上精度可達(dá) 35.0% AP,在 T4 上推理速度可達(dá) 1242 FPS;YOLOv6-s 在 COCO 上精度可達(dá) 43.1% AP,在 T4 上推理速度可達(dá) 520 FPS。在部署方面,YOLOv6 支持 GPU(TensorRT)、CPU(OPENVINO)、ARM(MNN、TNN、NCNN)等不同平臺(tái)的部署,極大地簡(jiǎn)化工程部署時(shí)的適配工作。目前,項(xiàng)目已開(kāi)源至Github,傳送門(mén):??YOLOv6??。歡迎有需要的小伙伴們Star收藏,隨時(shí)取用。

精度與速度遠(yuǎn)超 YOLOv5 和 YOLOX 的新框架

目標(biāo)檢測(cè)作為計(jì)算機(jī)視覺(jué)領(lǐng)域的一項(xiàng)基礎(chǔ)性技術(shù),在工業(yè)界得到了廣泛的應(yīng)用,其中 YOLO 系列算法因其較好的綜合性能,逐漸成為大多數(shù)工業(yè)應(yīng)用時(shí)的首選框架。至今,業(yè)界已衍生出許多 YOLO 檢測(cè)框架,其中以 YOLOv5[1]、YOLOX[2] 和 PP-YOLOE[3] 最具代表性,但在實(shí)際使用中,我們發(fā)現(xiàn)上述框架在速度和精度方面仍有很大的提升的空間?;诖耍覀兺ㄟ^(guò)研究并借鑒了業(yè)界已有的先進(jìn)技術(shù),開(kāi)發(fā)了一套新的目標(biāo)檢測(cè)框架——YOLOv6。該框架支持模型訓(xùn)練、推理及多平臺(tái)部署等全鏈條的工業(yè)應(yīng)用需求,并在網(wǎng)絡(luò)結(jié)構(gòu)、訓(xùn)練策略等算法層面進(jìn)行了多項(xiàng)改進(jìn)和優(yōu)化,在 COCO 數(shù)據(jù)集上,YOLOv6 在精度和速度方面均超越其他同體量算法,相關(guān)結(jié)果如下圖 1 所示:

圖片

圖1-1 YOLOv6 各尺寸模型與其他模型性能對(duì)比

圖片

圖1-2 YOLOv6 與其他模型在不同分辨率下性能對(duì)比圖 1-1 展示了不同尺寸網(wǎng)絡(luò)下各檢測(cè)算法的性能對(duì)比,曲線(xiàn)上的點(diǎn)分別表示該檢測(cè)算法在不同尺寸網(wǎng)絡(luò)下(s/tiny/nano)的模型性能,從圖中可以看到,YOLOv6 在精度和速度方面均超越其他 YOLO 系列同體量算法。圖 1-2 展示了輸入分辨率變化時(shí)各檢測(cè)網(wǎng)絡(luò)模型的性能對(duì)比,曲線(xiàn)上的點(diǎn)從左往右分別表示圖像分辨率依次增大時(shí)(384/448/512/576/640)該模型的性能,從圖中可以看到,YOLOv6 在不同分辨率下,仍然保持較大的性能優(yōu)勢(shì)。

2. YOLOv6關(guān)鍵技術(shù)介紹

YOLOv6 主要在 Backbone、Neck、Head 以及訓(xùn)練策略等方面進(jìn)行了諸多的改進(jìn):

  • 我們統(tǒng)一設(shè)計(jì)了更高效的 Backbone 和 Neck :受到硬件感知神經(jīng)網(wǎng)絡(luò)設(shè)計(jì)思想的啟發(fā),基于 RepVGG style[4] 設(shè)計(jì)了可重參數(shù)化、更高效的骨干網(wǎng)絡(luò) EfficientRep Backbone 和 Rep-PAN Neck。
  • 優(yōu)化設(shè)計(jì)了更簡(jiǎn)潔有效的 Efficient Decoupled Head,在維持精度的同時(shí),進(jìn)一步降低了一般解耦頭帶來(lái)的額外延時(shí)開(kāi)銷(xiāo)。
  • 在訓(xùn)練策略上,我們采用Anchor-free 無(wú)錨范式,同時(shí)輔以 SimOTA[2] 標(biāo)簽分配策略以及 SIoU[9] 邊界框回歸損失來(lái)進(jìn)一步提高檢測(cè)精度。

2.1 Hardware-friendly 的骨干網(wǎng)絡(luò)設(shè)計(jì)

YOLOv5/YOLOX 使用的 Backbone 和 Neck 都基于 CSPNet[5] 搭建,采用了多分支的方式和殘差結(jié)構(gòu)。對(duì)于 GPU 等硬件來(lái)說(shuō),這種結(jié)構(gòu)會(huì)一定程度上增加延時(shí),同時(shí)減小內(nèi)存帶寬利用率。下圖 2 為計(jì)算機(jī)體系結(jié)構(gòu)領(lǐng)域中的 Roofline Model[8] 介紹圖,顯示了硬件中計(jì)算能力和內(nèi)存帶寬之間的關(guān)聯(lián)關(guān)系。

圖片

圖2 Roofline Model 介紹圖

于是,我們基于硬件感知神經(jīng)網(wǎng)絡(luò)設(shè)計(jì)的思想,對(duì) Backbone 和 Neck 進(jìn)行了重新設(shè)計(jì)和優(yōu)化。該思想基于硬件的特性、推理框架/編譯框架的特點(diǎn),以硬件和編譯友好的結(jié)構(gòu)作為設(shè)計(jì)原則,在網(wǎng)絡(luò)構(gòu)建時(shí),綜合考慮硬件計(jì)算能力、內(nèi)存帶寬、編譯優(yōu)化特性、網(wǎng)絡(luò)表征能力等,進(jìn)而獲得又快又好的網(wǎng)絡(luò)結(jié)構(gòu)。對(duì)上述重新設(shè)計(jì)的兩個(gè)檢測(cè)部件,我們?cè)?YOLOv6 中分別稱(chēng)為 EfficientRep Backbone 和 Rep-PAN Neck,其主要貢獻(xiàn)點(diǎn)在于:

  1. 引入了 RepVGG[4] style 結(jié)構(gòu)。
  2. 基于硬件感知思想重新設(shè)計(jì)了 Backbone 和 Neck。

RepVGG[4] Style 結(jié)構(gòu)是一種在訓(xùn)練時(shí)具有多分支拓?fù)?,而在?shí)際部署時(shí)可以等效融合為單個(gè) 3x3 卷積的一種可重參數(shù)化的結(jié)構(gòu)(融合過(guò)程如下圖 3 所示)。通過(guò)融合成的 3x3 卷積結(jié)構(gòu),可以有效利用計(jì)算密集型硬件計(jì)算能力(比如 GPU),同時(shí)也可獲得 GPU/CPU 上已經(jīng)高度優(yōu)化的 NVIDIA cuDNN 和 Intel MKL 編譯框架的幫助。

實(shí)驗(yàn)表明,通過(guò)上述策略,YOLOv6 減少了在硬件上的延時(shí),并顯著提升了算法的精度,讓檢測(cè)網(wǎng)絡(luò)更快更強(qiáng)。以 nano 尺寸模型為例,對(duì)比 YOLOv5-nano 采用的網(wǎng)絡(luò)結(jié)構(gòu),本方法在速度上提升了21%,同時(shí)精度提升 3.6% AP。

圖片

圖3 Rep算子的融合過(guò)程[4]

EfficientRep Backbone:在 Backbone 設(shè)計(jì)方面,我們基于以上 Rep 算子設(shè)計(jì)了一個(gè)高效的Backbone。相比于 YOLOv5 采用的 CSP-Backbone,該 Backbone 能夠高效利用硬件(如 GPU)算力的同時(shí),還具有較強(qiáng)的表征能力。

下圖 4 為 EfficientRep Backbone 具體設(shè)計(jì)結(jié)構(gòu)圖,我們將 Backbone 中 stride=2 的普通 Conv 層替換成了 stride=2 的 RepConv層。同時(shí),將原始的 CSP-Block 都重新設(shè)計(jì)為 RepBlock,其中 RepBlock 的第一個(gè) RepConv 會(huì)做 channel 維度的變換和對(duì)齊。另外,我們還將原始的 SPPF 優(yōu)化設(shè)計(jì)為更加高效的 SimSPPF。

圖片

圖4 EfficientRep Backbone 結(jié)構(gòu)圖

Rep-PAN:在 Neck 設(shè)計(jì)方面,為了讓其在硬件上推理更加高效,以達(dá)到更好的精度與速度的平衡,我們基于硬件感知神經(jīng)網(wǎng)絡(luò)設(shè)計(jì)思想,為 YOLOv6 設(shè)計(jì)了一個(gè)更有效的特征融合網(wǎng)絡(luò)結(jié)構(gòu)。

Rep-PAN 基于 PAN[6] 拓?fù)浞绞剑?RepBlock 替換了 YOLOv5 中使用的 CSP-Block,同時(shí)對(duì)整體 Neck 中的算子進(jìn)行了調(diào)整,目的是在硬件上達(dá)到高效推理的同時(shí),保持較好的多尺度特征融合能力(Rep-PAN 結(jié)構(gòu)圖如下圖 5 所示)。

圖片

圖5 Rep-PAN 結(jié)構(gòu)圖

2.2 更簡(jiǎn)潔高效的 Decoupled Head

在 YOLOv6 中,我們采用了解耦檢測(cè)頭(Decoupled Head)結(jié)構(gòu),并對(duì)其進(jìn)行了精簡(jiǎn)設(shè)計(jì)。原始 YOLOv5 的檢測(cè)頭是通過(guò)分類(lèi)和回歸分支融合共享的方式來(lái)實(shí)現(xiàn)的,而 YOLOX 的檢測(cè)頭則是將分類(lèi)和回歸分支進(jìn)行解耦,同時(shí)新增了兩個(gè)額外的 3x3 的卷積層,雖然提升了檢測(cè)精度,但一定程度上增加了網(wǎng)絡(luò)延時(shí)。

因此,我們對(duì)解耦頭進(jìn)行了精簡(jiǎn)設(shè)計(jì),同時(shí)綜合考慮到相關(guān)算子表征能力和硬件上計(jì)算開(kāi)銷(xiāo)這兩者的平衡,采用 Hybrid Channels 策略重新設(shè)計(jì)了一個(gè)更高效的解耦頭結(jié)構(gòu),在維持精度的同時(shí)降低了延時(shí),緩解了解耦頭中 3x3 卷積帶來(lái)的額外延時(shí)開(kāi)銷(xiāo)。通過(guò)在 nano 尺寸模型上進(jìn)行消融實(shí)驗(yàn),對(duì)比相同通道數(shù)的解耦頭結(jié)構(gòu),精度提升 0.2% AP 的同時(shí),速度提升6.8%。

圖片

圖6 Efficient Decoupled Head 結(jié)構(gòu)圖

2.3 更有效的訓(xùn)練策略

為了進(jìn)一步提升檢測(cè)精度,我們吸收借鑒了學(xué)術(shù)界和業(yè)界其他檢測(cè)框架的先進(jìn)研究進(jìn)展:Anchor-free 無(wú)錨范式 、SimOTA 標(biāo)簽分配策略以及 SIoU 邊界框回歸損失。

Anchor-free 無(wú)錨范式

YOLOv6 采用了更簡(jiǎn)潔的 Anchor-free 檢測(cè)方法。由于 Anchor-based檢測(cè)器需要在訓(xùn)練之前進(jìn)行聚類(lèi)分析以確定最佳 Anchor 集合,這會(huì)一定程度提高檢測(cè)器的復(fù)雜度;同時(shí),在一些邊緣端的應(yīng)用中,需要在硬件之間搬運(yùn)大量檢測(cè)結(jié)果的步驟,也會(huì)帶來(lái)額外的延時(shí)。而 Anchor-free 無(wú)錨范式因其泛化能力強(qiáng),解碼邏輯更簡(jiǎn)單,在近幾年中應(yīng)用比較廣泛。經(jīng)過(guò)對(duì) Anchor-free 的實(shí)驗(yàn)調(diào)研,我們發(fā)現(xiàn),相較于A(yíng)nchor-based 檢測(cè)器的復(fù)雜度而帶來(lái)的額外延時(shí),Anchor-free 檢測(cè)器在速度上有51%的提升。

SimOTA 標(biāo)簽分配策略

為了獲得更多高質(zhì)量的正樣本,YOLOv6 引入了 SimOTA [4]算法動(dòng)態(tài)分配正樣本,進(jìn)一步提高檢測(cè)精度。YOLOv5 的標(biāo)簽分配策略是基于 Shape 匹配,并通過(guò)跨網(wǎng)格匹配策略增加正樣本數(shù)量,從而使得網(wǎng)絡(luò)快速收斂,但是該方法屬于靜態(tài)分配方法,并不會(huì)隨著網(wǎng)絡(luò)訓(xùn)練的過(guò)程而調(diào)整。

近年來(lái),也出現(xiàn)不少基于動(dòng)態(tài)標(biāo)簽分配的方法,此類(lèi)方法會(huì)根據(jù)訓(xùn)練過(guò)程中的網(wǎng)絡(luò)輸出來(lái)分配正樣本,從而可以產(chǎn)生更多高質(zhì)量的正樣本,繼而又促進(jìn)網(wǎng)絡(luò)的正向優(yōu)化。例如,OTA[7] 通過(guò)將樣本匹配建模成最佳傳輸問(wèn)題,求得全局信息下的最佳樣本匹配策略以提升精度,但 OTA 由于使用了Sinkhorn-Knopp 算法導(dǎo)致訓(xùn)練時(shí)間加長(zhǎng),而 SimOTA[4]算法使用 Top-K 近似策略來(lái)得到樣本最佳匹配,大大加快了訓(xùn)練速度。故 YOLOv6 采用了SimOTA 動(dòng)態(tài)分配策略,并結(jié)合無(wú)錨范式,在 nano 尺寸模型上平均檢測(cè)精度提升 1.3% AP。

SIoU 邊界框回歸損失

為了進(jìn)一步提升回歸精度,YOLOv6 采用了 SIoU[9] 邊界框回歸損失函數(shù)來(lái)監(jiān)督網(wǎng)絡(luò)的學(xué)習(xí)。目標(biāo)檢測(cè)網(wǎng)絡(luò)的訓(xùn)練一般需要至少定義兩個(gè)損失函數(shù):分類(lèi)損失和邊界框回歸損失,而損失函數(shù)的定義往往對(duì)檢測(cè)精度以及訓(xùn)練速度產(chǎn)生較大的影響。

近年來(lái),常用的邊界框回歸損失包括IoU、GIoU、CIoU、DIoU loss等等,這些損失函數(shù)通過(guò)考慮預(yù)測(cè)框與目標(biāo)框之前的重疊程度、中心點(diǎn)距離、縱橫比等因素來(lái)衡量?jī)烧咧g的差距,從而指導(dǎo)網(wǎng)絡(luò)最小化損失以提升回歸精度,但是這些方法都沒(méi)有考慮到預(yù)測(cè)框與目標(biāo)框之間方向的匹配性。SIoU 損失函數(shù)通過(guò)引入了所需回歸之間的向量角度,重新定義了距離損失,有效降低了回歸的自由度,加快網(wǎng)絡(luò)收斂,進(jìn)一步提升了回歸精度。通過(guò)在 YOLOv6s 上采用 SIoU loss 進(jìn)行實(shí)驗(yàn),對(duì)比 CIoU loss,平均檢測(cè)精度提升 0.3% AP。

3. 實(shí)驗(yàn)結(jié)果

經(jīng)過(guò)以上優(yōu)化策略和改進(jìn),YOLOv6 在多個(gè)不同尺寸下的模型均取得了卓越的表現(xiàn)。下表 1 展示了 YOLOv6-nano 的消融實(shí)驗(yàn)結(jié)果,從實(shí)驗(yàn)結(jié)果可以看出,我們自主設(shè)計(jì)的檢測(cè)網(wǎng)絡(luò)在精度和速度上都帶來(lái)了很大的增益。圖片

表1 YOLOv6-nano 消融實(shí)驗(yàn)結(jié)果下表 2 展示了 YOLOv6 與當(dāng)前主流的其他 YOLO 系列算法相比較的實(shí)驗(yàn)結(jié)果。從表格中可以看到:

圖片

表2 YOLOv6各尺寸模型性能與其他模型的比較

  • YOLOv6-nano 在 COCO val 上 取得了 35.0% AP 的精度,同時(shí)在 T4 上使用 TRT FP16  batchsize=32 進(jìn)行推理,可達(dá)到 1242FPS 的性能,相較于 YOLOv5-nano 精度提升 7% AP,速度提升 85%。
  • YOLOv6-tiny 在 COCO val 上 取得了 41.3% AP 的精度, 同時(shí)在 T4 上使用 TRT FP16  batchsize=32 進(jìn)行推理,可達(dá)到 602FPS 的性能,相較于 YOLOv5-s 精度提升 3.9% AP,速度提升 29.4%。
  • YOLOv6-s 在 COCO val 上 取得了 43.1% AP 的精度, 同時(shí)在 T4 上使用 TRT FP16 batchsize=32 進(jìn)行推理,可達(dá)到 520FPS 的性能,相較于 YOLOX-s 精度提升 2.6% AP,速度提升 38.6%;相較于 PP-YOLOE-s 精度提升 0.4% AP的條件下,在T4上使用 TRT FP16 進(jìn)行單 batch 推理,速度提升 71.3%。

4. 總結(jié)與展望

本文介紹了美團(tuán)視覺(jué)智能部在目標(biāo)檢測(cè)框架方面的優(yōu)化及實(shí)踐經(jīng)驗(yàn),我們針對(duì) YOLO 系列框架,在訓(xùn)練策略、主干網(wǎng)絡(luò)、多尺度特征融合、檢測(cè)頭等方面進(jìn)行了思考和優(yōu)化,設(shè)計(jì)了新的檢測(cè)框架-YOLOv6,初衷來(lái)自于解決工業(yè)應(yīng)用落地時(shí)所遇到的實(shí)際問(wèn)題。

在打造 YOLOv6 框架的同時(shí),我們探索和優(yōu)化了一些新的方法,例如基于硬件感知神經(jīng)網(wǎng)絡(luò)設(shè)計(jì)思想自研了 EfficientRep Backbone、Rep-Neck 和 Efficient Decoupled Head,同時(shí)也吸收借鑒了學(xué)術(shù)界和工業(yè)界的一些前沿進(jìn)展和成果,例如 Anchor-free、SimOTA 和 SIoU 回歸損失。在 COCO 數(shù)據(jù)集上的實(shí)驗(yàn)結(jié)果顯示,YOLOv6 在檢測(cè)精度和速度方面都屬于佼佼者。

未來(lái)我們會(huì)持續(xù)建設(shè)和完善 YOLOv6 生態(tài),主要工作包括以下幾個(gè)方面:

  1. 完善 YOLOv6 全系列模型,持續(xù)提升檢測(cè)性能。
  2. 在多種硬件平臺(tái)上,設(shè)計(jì)硬件友好的模型。
  3. 支持 ARM 平臺(tái)部署以及量化蒸餾等全鏈條適配。
  4. 橫向拓展和引入關(guān)聯(lián)技術(shù),如半監(jiān)督、自監(jiān)督學(xué)習(xí)等等。
  5. 探索 YOLOv6 在更多的未知業(yè)務(wù)場(chǎng)景上的泛化性能。
責(zé)任編輯:張燕妮 來(lái)源: 美團(tuán)技術(shù)團(tuán)隊(duì)
相關(guān)推薦

2024-05-27 09:27:02

2024-07-22 13:49:38

YOLOv8目標(biāo)檢測(cè)開(kāi)發(fā)

2022-12-15 22:01:04

TLog日志標(biāo)簽

2016-11-28 14:11:32

搜索

2017-10-02 16:13:47

深度學(xué)習(xí)目標(biāo)檢測(cè)計(jì)算機(jī)視覺(jué)

2024-11-18 17:31:27

2024-08-06 11:01:03

2024-07-03 10:46:10

2024-10-07 11:12:55

2025-01-06 08:20:00

YOLOv11目標(biāo)檢測(cè)Python

2024-06-19 09:54:58

2024-12-13 09:17:45

2023-02-02 09:00:00

2024-07-03 09:39:52

2023-04-24 16:25:47

3D開(kāi)發(fā)

2019-10-18 16:05:32

框架開(kāi)發(fā)Java

2023-05-09 10:16:42

人工智能python版本

2024-07-09 08:50:23

2020-10-22 13:10:56

機(jī)器學(xué)習(xí)人工智能計(jì)算機(jī)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)