国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

YOLO v6:一個(gè)硬件友好的目標(biāo)檢測(cè)算法

這篇具有很好參考價(jià)值的文章主要介紹了YOLO v6:一個(gè)硬件友好的目標(biāo)檢測(cè)算法。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

本文來自公眾號(hào)“AI大道理”

YOLOv6 是美團(tuán)視覺智能部研發(fā)的一款目標(biāo)檢測(cè)框架,致力于工業(yè)應(yīng)用。

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 在精度和速度方面均超越其他同體量算法。

YOLOv6是如何改進(jìn)的呢?


?

YOLO v6:一個(gè)硬件友好的目標(biāo)檢測(cè)算法

一、YOLOV6的改進(jìn)

1、backbone:RepBlock+結(jié)構(gòu)重參數(shù)化(小型模型)、CSPStackRep Block(大型模型)

2、neck:Rep PAN

3、head:Decoupled Head

4、標(biāo)簽分配:TAL

5、anchor-free

6、損失函數(shù):VariFocal Loss+SIOU

7、Self-distillation??

8、量化+RepOpt-VGG+RepOptimizer+梯度重參數(shù)化

YOLO v6:一個(gè)硬件友好的目標(biāo)檢測(cè)算法

YOLO v6:一個(gè)硬件友好的目標(biāo)檢測(cè)算法

?1、EfficientRep?backbone

小模型:

在訓(xùn)練中使用 Rep block,如圖 3a。

在推理時(shí)使用 RepConv,3x3 卷積 + ReLU 堆積而成的結(jié)構(gòu),如圖 3b。

大模型:

使用 CSPStackRep block 來得到中/大模型,如圖 3c,3 個(gè) 1x1 conv + 2 個(gè) RepVGG(訓(xùn)練) / RepConv(測(cè)試) + 1 個(gè)殘差通道。

YOLO v6:一個(gè)硬件友好的目標(biāo)檢測(cè)算法

受到硬件感知神經(jīng)網(wǎng)絡(luò)設(shè)計(jì)思想的啟發(fā),基于 RepVGG style 設(shè)計(jì)了可重參數(shù)化、更高效的骨干網(wǎng)絡(luò) EfficientRep Backbone 。

YOLOv5/YOLOX 使用的 Backbone 和 Neck 都基于 CSPNet 搭建,采用了多分支的方式和殘差結(jié)構(gòu)。對(duì)于 GPU 等硬件來說,這種結(jié)構(gòu)會(huì)一定程度上增加延時(shí),同時(shí)減小內(nèi)存帶寬利用率。

YOLOv6引入了 RepVGG style 結(jié)構(gòu)。

結(jié)構(gòu)重參數(shù)化。

RepVGG Style 結(jié)構(gòu)是一種在訓(xùn)練時(shí)具有多分支拓?fù)?,而在?shí)際部署時(shí)可以等效融合為單個(gè) 3x3 卷積的一種可重參數(shù)化的結(jié)構(gòu)。通過融合成的 3x3 卷積結(jié)構(gòu),可以有效利用計(jì)算密集型硬件計(jì)算能力。

YOLO v6:一個(gè)硬件友好的目標(biāo)檢測(cè)算法

YOLO v6:一個(gè)硬件友好的目標(biāo)檢測(cè)算法

YOLO v6:一個(gè)硬件友好的目標(biāo)檢測(cè)算法

YOLO v6:一個(gè)硬件友好的目標(biāo)檢測(cè)算法

2、Rep PAN

Rep-PAN 基于 PAN 拓?fù)浞绞?,?RepBlock 替換了 YOLOv5 中使用的 CSP-Block,同時(shí)對(duì)整體 Neck 中的算子進(jìn)行了調(diào)整。

YOLO v6:一個(gè)硬件友好的目標(biāo)檢測(cè)算法

YOLO v6:一個(gè)硬件友好的目標(biāo)檢測(cè)算法

3、Decoupled Head

YOLOv6?采用了解耦檢測(cè)頭(Decoupled Head)結(jié)構(gòu),并對(duì)其進(jìn)行了精簡(jiǎn)設(shè)計(jì)。

原始 YOLOv5 的檢測(cè)頭是通過分類和回歸分支融合共享的方式來實(shí)現(xiàn)的,而 YOLOX 的檢測(cè)頭則是將分類和回歸分支進(jìn)行解耦,同時(shí)新增了兩個(gè)額外的 3x3 的卷積層,雖然提升了檢測(cè)精度,但一定程度上增加了網(wǎng)絡(luò)延時(shí)。

YOLOv6對(duì)解耦頭進(jìn)行了精簡(jiǎn)設(shè)計(jì),同時(shí)綜合考慮到相關(guān)算子表征能力和硬件上計(jì)算開銷這兩者的平衡,采用 Hybrid Channels 策略重新設(shè)計(jì)了一個(gè)更高效的解耦頭結(jié)構(gòu),在維持精度的同時(shí)降低了延時(shí),緩解了解耦頭中 3x3 卷積帶來的額外延時(shí)開銷。

YOLO v6:一個(gè)硬件友好的目標(biāo)檢測(cè)算法

YOLO v6:一個(gè)硬件友好的目標(biāo)檢測(cè)算法

4、anchor-free

采用Anchor-free 無錨范式,也就是 box regression 分支是預(yù)測(cè) anchor point 到 bbox 的四個(gè)邊的距離。

YOLOv6 采用了更簡(jiǎn)潔的 Anchor-free 檢測(cè)方法。由于 Anchor-based檢測(cè)器需要在訓(xùn)練之前進(jìn)行聚類分析以確定最佳 Anchor 集合,這會(huì)一定程度提高檢測(cè)器的復(fù)雜度;

同時(shí),在一些邊緣端的應(yīng)用中,需要在硬件之間搬運(yùn)大量檢測(cè)結(jié)果的步驟,也會(huì)帶來額外的延時(shí)。

而 Anchor-free 無錨范式因其泛化能力強(qiáng),解碼邏輯更簡(jiǎn)單,在近幾年中應(yīng)用比較廣泛。

YOLO v6:一個(gè)硬件友好的目標(biāo)檢測(cè)算法

5、標(biāo)簽分配

為了獲得更多高質(zhì)量的正樣本,YOLOv6 引入了 SimOTA 算法動(dòng)態(tài)分配正樣本,進(jìn)一步提高檢測(cè)精度。

YOLOv5 的標(biāo)簽分配策略是基于 Shape 匹配,并通過跨網(wǎng)格匹配策略增加正樣本數(shù)量,從而使得網(wǎng)絡(luò)快速收斂,但是該方法屬于靜態(tài)分配方法,并不會(huì)隨著網(wǎng)絡(luò)訓(xùn)練的過程而調(diào)整。

近年來,也出現(xiàn)不少基于動(dòng)態(tài)標(biāo)簽分配的方法,此類方法會(huì)根據(jù)訓(xùn)練過程中的網(wǎng)絡(luò)輸出來分配正樣本,從而可以產(chǎn)生更多高質(zhì)量的正樣本,繼而又促進(jìn)網(wǎng)絡(luò)的正向優(yōu)化。

例如,OTA通過將樣本匹配建模成最佳傳輸問題,求得全局信息下的最佳樣本匹配策略以提升精度,但 OTA 由于使用了Sinkhorn-Knopp 算法導(dǎo)致訓(xùn)練時(shí)間加長(zhǎng),而 SimOTA算法使用 Top-K 近似策略來得到樣本最佳匹配,大大加快了訓(xùn)練速度。

故 YOLOv6 采用了SimOTA 動(dòng)態(tài)分配策略,并結(jié)合無錨范式,在 nano 尺寸模型上平均檢測(cè)精度提升 1.3% AP。

SimOTA定義的計(jì)算公式如下:

YOLO v6:一個(gè)硬件友好的目標(biāo)檢測(cè)算法

對(duì)于每一個(gè)預(yù)測(cè)框,分別計(jì)算其與真實(shí)框的IOU和類別損失,然后加權(quán)得到總體損失。然后將各個(gè)框和真實(shí)框的iou排序,將所有框的iou相加取整,得到正樣本的類別個(gè)數(shù)。
比如,下圖中,取整后的結(jié)果為2,那就選取前兩個(gè)作為正樣本。

YOLO v6:一個(gè)硬件友好的目標(biāo)檢測(cè)算法

不同的 label assignment 方法的效果對(duì)比,實(shí)驗(yàn)基于 YOLOv6-N:

YOLO v6:一個(gè)硬件友好的目標(biāo)檢測(cè)算法

Task alignment learning ?任務(wù)對(duì)齊學(xué)習(xí)(TAL)首次在TOOD 中提出,其中設(shè)計(jì)了一個(gè)統(tǒng)一的分類分?jǐn)?shù)和預(yù)測(cè)框質(zhì)量的統(tǒng)一度量。用此度量替換IoU以分配對(duì)象標(biāo)簽。

在一定程度上,緩解了任務(wù)(分類和預(yù)測(cè)框回歸)的錯(cuò)位問題。

YOLO v6:一個(gè)硬件友好的目標(biāo)檢測(cè)算法

YOLO v6:一個(gè)硬件友好的目標(biāo)檢測(cè)算法

6、VariFocal Loss

YOLO v6:一個(gè)硬件友好的目標(biāo)檢測(cè)算法

YOLOv6選擇VariFocal Loss作為分類損失。

Focal Loss改進(jìn)了傳統(tǒng)的交叉熵?fù)p失,解決了正負(fù)樣本或硬易樣本之間的類不平衡問題。

為了解決訓(xùn)練和推理之間質(zhì)量估計(jì)和分類使用不一致的問題,Quality Focal Loss(QFL)進(jìn)一步擴(kuò)展了Focal Loss,并將分類評(píng)分和定位質(zhì)量聯(lián)合表示出來進(jìn)行分類監(jiān)督。

而VariFocal Loss (VFL)來源于Focal Loss,但它不對(duì)稱地處理正樣本和負(fù)樣本。

通過考慮不同重要程度的正樣本和負(fù)樣本,它平衡了來自兩個(gè)樣本的學(xué)習(xí)信號(hào)。

Poly Loss將常用的分類損失分解為一系列加權(quán)多項(xiàng)式基。它在不同的任務(wù)和數(shù)據(jù)集上調(diào)整多項(xiàng)式系數(shù),通過實(shí)驗(yàn)證明了其優(yōu)于交叉熵?fù)p失和焦點(diǎn)損失。

?YOLOv6最終采用了VFL 。

YOLO v6:一個(gè)硬件友好的目標(biāo)檢測(cè)算法

7、SIOU

?YOLOv6選擇SIoU /GIoU 損失作為回歸損失。

為了進(jìn)一步提升回歸精度,YOLOv6 采用了 SIoU邊界框回歸損失函數(shù)來監(jiān)督網(wǎng)絡(luò)的學(xué)習(xí)。

目標(biāo)檢測(cè)網(wǎng)絡(luò)的訓(xùn)練一般需要至少定義兩個(gè)損失函數(shù):分類損失和邊界框回歸損失,而損失函數(shù)的定義往往對(duì)檢測(cè)精度以及訓(xùn)練速度產(chǎn)生較大的影響。

近年來,常用的邊界框回歸損失包括IoU、GIoU、CIoU、DIoU loss等等,這些損失函數(shù)通過考慮預(yù)測(cè)框與目標(biāo)框之前的重疊程度、中心點(diǎn)距離、縱橫比等因素來衡量?jī)烧咧g的差距,從而指導(dǎo)網(wǎng)絡(luò)最小化損失以提升回歸精度,但是這些方法都沒有考慮到預(yù)測(cè)框與目標(biāo)框之間方向的匹配性。

SIoU 損失函數(shù)通過引入了所需回歸之間的向量角度,重新定義了距離損失,有效降低了回歸的自由度,加快網(wǎng)絡(luò)收斂,進(jìn)一步提升了回歸精度。

SIOU應(yīng)用于YOLOv6-N和YOLOv6-T,而其他的則使用GIoU。

YOLO v6:一個(gè)硬件友好的目標(biāo)檢測(cè)算法

8、Self-distillation??

為了進(jìn)一步提高模型的準(zhǔn)確性,同時(shí)不引入太多額外的計(jì)算成本,YOLOv6采用經(jīng)典的知識(shí)蒸餾技術(shù)來最小化教師模型和學(xué)生模型之間預(yù)測(cè)的KL散度。

通過限制教師模型是預(yù)先訓(xùn)練的學(xué)生模型,因此稱之為自我蒸餾。

kl-散度通常用于度量數(shù)據(jù)分布之間的差異。然而,在目標(biāo)檢測(cè)中有兩個(gè)子任務(wù),其中只有分類任務(wù)可以直接利用基于kl-散度的知識(shí)精餾。

由于DFL損失,我們也可以在預(yù)測(cè)框回歸上執(zhí)行它。

知識(shí)蒸餾損失可以表述為:?

YOLO v6:一個(gè)硬件友好的目標(biāo)檢測(cè)算法

其中

YOLO v6:一個(gè)硬件友好的目標(biāo)檢測(cè)算法

和分別為教師模型和學(xué)生模型的類別預(yù)測(cè),因此和為預(yù)測(cè)框回歸預(yù)測(cè)。總體損失函數(shù)現(xiàn)在可以表述為:?

YOLO v6:一個(gè)硬件友好的目標(biāo)檢測(cè)算法

其中,Ldet是用預(yù)測(cè)和標(biāo)簽計(jì)算出的檢測(cè)損失。

引入超參數(shù)α來平衡兩個(gè)損失。在訓(xùn)練的早期階段,從教師模型那里得到的軟標(biāo)簽更容易學(xué)習(xí)。隨著訓(xùn)練的繼續(xù),學(xué)生模型的表現(xiàn)將與教師模型相匹配,這樣硬標(biāo)簽將對(duì)學(xué)生更有幫助。

在此基礎(chǔ)上,將余弦權(quán)值衰減應(yīng)用于α,以動(dòng)態(tài)調(diào)整來自教師的硬標(biāo)簽和軟標(biāo)簽的信息。

為了解決在訓(xùn)練和推理過程中假量化器的不一致性問題,有必要在重新優(yōu)化器上建立QAT。此外,在YOLOv6框架內(nèi)采用了通道蒸餾(后來稱為CW蒸餾),這也是一種自蒸餾的方法,其中教師網(wǎng)絡(luò)是在fp32精度上的學(xué)生模型。

YOLO v6:一個(gè)硬件友好的目標(biāo)檢測(cè)算法

YOLO v6:一個(gè)硬件友好的目標(biāo)檢測(cè)算法

學(xué)生網(wǎng)絡(luò)前期側(cè)重學(xué)習(xí)軟標(biāo)簽,后期學(xué)習(xí)硬標(biāo)簽。

YOLO v6:一個(gè)硬件友好的目標(biāo)檢測(cè)算法

9、量化

YOLO v6:一個(gè)硬件友好的目標(biāo)檢測(cè)算法

YOLov6的量化問題:

yolov6在結(jié)構(gòu)中大量使用了重參數(shù)結(jié)構(gòu),導(dǎo)致數(shù)據(jù)分布過差,PTQ精度急劇下降。另外,重參數(shù)化結(jié)構(gòu)網(wǎng)絡(luò)無法直接使用QAT進(jìn)行微調(diào)提升量化性能。

因?yàn)镈eploy部署的模型無BN,不利于訓(xùn)練;Train模式進(jìn)行QAT之后無法進(jìn)行分支融合。

YOLOv6又是怎么做的呢?

一、RepOpt-VGG?網(wǎng)絡(luò)+梯度重參數(shù)化

思路一:RepVGG推理的時(shí)候由于速度的要求采用單路網(wǎng)絡(luò),訓(xùn)練的時(shí)候能否將推理模型的單路網(wǎng)絡(luò)訓(xùn)練的效果拔高呢?(Deploy部署的模型無BN,僅僅是不利于訓(xùn)練,還是能訓(xùn)練,能否從這里進(jìn)行改善??雌饋砜尚?。)

YOLOv6用了RepOpt-VGG 網(wǎng)絡(luò),這個(gè)工作與 RepVGG 相當(dāng)于是兩個(gè)不同的改進(jìn)方向,一個(gè)是單網(wǎng)絡(luò)變多分支來提高訓(xùn)練效果,另一個(gè)則是還是單網(wǎng)絡(luò)通過訓(xùn)練手段提高訓(xùn)練效果。即:

RepVGG?+ 常規(guī)的優(yōu)化器=VGG ?+ RepOptimizer。

YOLO v6:一個(gè)硬件友好的目標(biāo)檢測(cè)算法

YOLO v6:一個(gè)硬件友好的目標(biāo)檢測(cè)算法

RepOPT結(jié)果改善了數(shù)據(jù)分布,有效提升了PTQ量化精度。

梯度重參數(shù)化。

將先驗(yàn)信息用于修改梯度數(shù)值,稱為梯度重參數(shù)化,對(duì)應(yīng)的優(yōu)化器稱為RepOptimizer。

YOLO v6:一個(gè)硬件友好的目標(biāo)檢測(cè)算法

RepOpt 步驟:

步驟1:將架構(gòu)的先驗(yàn)知識(shí)轉(zhuǎn)移到你的優(yōu)化器中。

步驟2:通過超搜索獲得超參數(shù)。

步驟3:使用 RepOpt 進(jìn)行訓(xùn)練。

二、PTQ-敏感度分析與部分量化

找到敏感的層,直接跳過。

如何尋找?

四種方法:mAP、MSE、SNR、Cosine

進(jìn)行各層敏感性排序,進(jìn)行逐層量化誤差分析,查找最敏感的層進(jìn)行跳過,實(shí)現(xiàn)部分量化。

三、QAT-量化節(jié)點(diǎn)插入

RepOPT的train/deploy模型結(jié)構(gòu)一致,天然適合于QAT方法的使用。

YOLO v6:一個(gè)硬件友好的目標(biāo)檢測(cè)算法

四、CWD自蒸餾

FP32模型為teacher,int8模型為student。

YOLO v6:一個(gè)硬件友好的目標(biāo)檢測(cè)算法

YOLO v6:一個(gè)硬件友好的目標(biāo)檢測(cè)算法

10、總結(jié)

緣起:VGG中3*3的卷積結(jié)構(gòu),可以有效利用計(jì)算密集型硬件計(jì)算能力(比如 GPU),同時(shí)也可獲得 GPU/CPU 上已經(jīng)高度優(yōu)化的 NVIDIA cuDNN 和 Intel MKL 編譯框架的幫助。基于硬件友好的考慮,從模型推理出發(fā),YOLOv6采用單路網(wǎng)絡(luò)推理。

問題1:然而,單路網(wǎng)絡(luò)訓(xùn)練的效果不佳。

解決1:結(jié)合resnet的想法,擴(kuò)展為RepVGG的多分支結(jié)構(gòu)用于訓(xùn)練。

問題2:多分支網(wǎng)絡(luò)訓(xùn)練的參數(shù)無法直接應(yīng)用到單路網(wǎng)絡(luò)中進(jìn)行推理,且多分支網(wǎng)絡(luò)推理效果低,速度慢。

解決2:將訓(xùn)練模型和推理模型用結(jié)構(gòu)重參數(shù)化方法結(jié)合起來,使得RepVGG多分支網(wǎng)絡(luò)訓(xùn)練的參數(shù)可用于單路網(wǎng)絡(luò)進(jìn)行推理。

問題3:然而結(jié)構(gòu)重參數(shù)化的網(wǎng)絡(luò)無法進(jìn)行量化,準(zhǔn)確的說量化后無法進(jìn)行分支融合,也就無法應(yīng)用于單路推理模型。

解決3:因?qū)⒂?xùn)練的網(wǎng)絡(luò)又從新改為單路,回到了起點(diǎn)。

網(wǎng)絡(luò)的參數(shù)由網(wǎng)絡(luò)結(jié)構(gòu)獲得,若能找到網(wǎng)絡(luò)和參數(shù)的聯(lián)系,類似結(jié)構(gòu)重參數(shù)化一樣的轉(zhuǎn)化,豈不是可以從簡(jiǎn)單的網(wǎng)絡(luò)得到復(fù)雜的參數(shù)?

RepOpt-VGG就是以單路網(wǎng)絡(luò)為出發(fā)點(diǎn),進(jìn)行梯度重參數(shù)化來達(dá)到RepVGG網(wǎng)絡(luò)的訓(xùn)練效果。

YOLO v6:一個(gè)硬件友好的目標(biāo)檢測(cè)算法

YOLO v6:一個(gè)硬件友好的目標(biāo)檢測(cè)算法

?——————

淺談則止,細(xì)致入微AI大道理

掃描下方“AI大道理”,選擇“關(guān)注”公眾號(hào)

—————————————————————

?

—————————————————————

投稿吧?? |?留言吧文章來源地址http://www.zghlxwxcb.cn/news/detail-451425.html

到了這里,關(guān)于YOLO v6:一個(gè)硬件友好的目標(biāo)檢測(cè)算法的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包