<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>
"); //-->

博客專(zhuān)欄

EEPW首頁(yè) > 博客 > YOLOv10 解析與地平線(xiàn) 征程 6 模型量化

YOLOv10 解析與地平線(xiàn) 征程 6 模型量化

發(fā)布人:地平線(xiàn)開(kāi)發(fā)者 時(shí)間:2025-03-22 來(lái)源:工程師 發(fā)布文章

# 一,YOLOv10 解析


## 1.簡(jiǎn)介


近些年來(lái),研究人員對 YOLO 的架構設計、優(yōu)化目標、數據增強策略等進(jìn)行了探索,取得了顯著(zhù)進(jìn)展。然而,后處理對非極大值抑制(NMS)的依賴(lài)阻礙了 YOLO 的端到端部署,并對推理延遲產(chǎn)生不利影響。此外,YOLO 中各個(gè)組件的設計缺乏全面徹底的檢查,導致明顯的計算冗余并限制了模型的能力。


YOLOv10 的突破就在于從后處理和模型架構方面進(jìn)一步提升了 YOLO 的性能 - 效率邊界。


為此,研究團隊**首次提出了** **YOLO** **無(wú) NMS 訓練的一致雙重分配(consistent dual assignment)**,這使得 YOLO 在性能和推理延遲方面有所改進(jìn)。


研究團隊為 YOLO 提出了整體效率 - 準確率驅動(dòng)的模型設計策略,從效率和準確率兩個(gè)角度全面優(yōu)化 YOLO 的各個(gè)組件,大大降低了計算開(kāi)銷(xiāo)并增強了模型能力。


大量實(shí)驗表明,YOLOv10 在各種模型規模上都實(shí)現了 SOTA 性能和效率。例如,YOLOv10-S 在 COCO 上的類(lèi)似 AP 下比 RT-DETR-R18 快 1.8 倍,同時(shí)參數數量和 FLOP 大幅減少。與 YOLOv9-C 相比,在性能相同的情況下,YOLOv10-B 的延遲減少了 46%,參數減少了 25%。


![img](https://i-blog.csdnimg.cn/img_convert/0a98bab652ecb0dc193a8f1a3f67f7d6.png)


## 2.**方法介紹**


為了實(shí)現整體效率 - 準確率驅動(dòng)的模型設計,研究團隊從效率、準確率兩方面分別提出改進(jìn)方法。


為了提高效率,該研究提出了輕量級分類(lèi) head、空間通道(spatial-channel)解耦下采樣和排序指導的塊設計,以減少明顯的計算冗余并實(shí)現更高效的架構。


為了提高準確率,研究團隊探索了大核卷積并提出了有效的部分自注意力(partial self-attention,PSA)模塊來(lái)增強模型能力,在低成本下挖掘性能改進(jìn)的潛力?;谶@些方法,該團隊成功實(shí)現了一系列不同規模的實(shí)時(shí)端到端檢測器,即 YOLOv10-N / S / M / B / L / X。


## 3.**用于無(wú) NMS 訓練的一致雙重分配**


在訓練期間,YOLO 通常利用 TAL 為每個(gè)實(shí)例分配多個(gè)正樣本。一對多的分配方式產(chǎn)生了豐富的監督信號,促進(jìn)了優(yōu)化并使模型實(shí)現了卓越的性能。


然而,這需要 YOLO 依賴(lài)于 NMS 后處理,這導致了部署時(shí)次優(yōu)的推理效率。雖然之前的研究工作探索了一對一匹配來(lái)抑制冗余預測,但它們通常引入了額外的推理開(kāi)銷(xiāo)。


與一對多分配不同,一對一匹配對每個(gè) ground truth 僅分配一個(gè)預測,避免 NMS 后處理。然而,這會(huì )導致弱監督,以至于準確率和收斂速度不理想。幸運的是,這種缺陷可以通過(guò)一對多分配來(lái)彌補。


該研究提出的「雙標簽分配」結合了上述兩種策略的優(yōu)點(diǎn)。如下圖所示,該研究為 YOLO 引入了另一個(gè)一對一 head。它保留了與原始一對多分支相同的結構并采用相同的優(yōu)化目標,但利用一對一匹配來(lái)獲取標簽分配。在訓練過(guò)程中,兩個(gè) head 聯(lián)合優(yōu)化,以提供豐富的監督;在推理過(guò)程中,YOLOv10 會(huì )丟棄一對多 head 并利用一對一 head 做出預測。這使得 YOLO 能夠進(jìn)行端到端部署,而不會(huì )產(chǎn)生任何額外的推理成本。


 


![img](https://i-blog.csdnimg.cn/img_convert/39cca1e2033e01fe3153d5f7ee273818.png)


## 4.**整體效率 - 準確率驅動(dòng)的模型設計**


除了后處理之外,YOLO 的模型架構也對效率 - 準確率權衡提出了巨大挑戰。盡管之前的研究工作探索了各種設計策略,但仍然缺乏對 YOLO 中各種組件的全面檢查。因此,模型架構表現出不可忽視的計算冗余和能力受限。


YOLO 中的組件包括 stem、下采樣層、帶有基本構建塊的階段和 head。作者主要對以下三個(gè)部分執行效率驅動(dòng)的模型設計。


1. 輕量級分類(lèi) head。

2. 空間通道解耦下采樣。

3. 排序指導的模塊設計。


![img](https://i-blog.csdnimg.cn/img_convert/a9eaca6c6fc30704f81a92a49d5acbb6.png)


# 二,yolov10 訓練


## 1.下載模型訓練代碼。


github 網(wǎng)址:https://github.com/THU-MIG/yolov10


拉取壓縮包如下圖


![img](https://i-blog.csdnimg.cn/img_convert/f92e11960687d35499d46673a2d86072.png)


## 2.搭建 conda 訓練環(huán)境


conda activate yolov10 #先激活自己的虛擬環(huán)境


pip install -r requirements.txt #一鍵安裝相應的安裝包


 


## 3.設置數據集


我使用的是 coco 數據集,如圖


![img](https://i-blog.csdnimg.cn/img_convert/2e7e98e7a707009d6c9a44ac18e843fd.png)


## 4.模型訓練,代碼如下圖。


![img](https://i-blog.csdnimg.cn/img_convert/f2b651f688f9a6c4e3743a854768f8a7.png)


## 5.訓練之后轉 onnx 模型。


# 三,yolov10 模型量化


使用的是地平線(xiàn) 征程 6 的 docker,版本是 v3.0.22


## 1.首先進(jìn)行模型檢查。


在浮點(diǎn)模型準備好之后,我們建議先進(jìn)行快速的模型驗證,以確保其符合計算平臺的支持約束。啟動(dòng)樣例里面的腳本,修改一下路徑即可,如下圖。如果模型驗證不通過(guò),請根據終端打印或在當前路徑下生成的日志文件確認報錯信息和修改建議。


![img](https://i-blog.csdnimg.cn/img_convert/c556ef3a56765069cb9b763f21838130.png)


## 2.準備校準數據集。


PTQ 方案的校準數據一般是從訓練集或驗證集中篩選 100 份左右(可適當增減)的典型數據,并應避免非常少見(jiàn)的異常樣本, 如純色圖片、不含任何檢測或分類(lèi)目標的圖片等。篩選出的校準數據還需進(jìn)行與模型 inference 前一致的預處理操作, 處理后保持與原始模型一樣的數據類(lèi)型、layout 和尺寸。


對于校準數據的預處理,地平線(xiàn)建議直接參考示例代碼進(jìn)行修改使用,preprocess.py 文件中 的 calibration_transformers 函數的包含了其校準數據的前處理 transformers,處理完的校準數據與其 yaml 配置文件保持一致,


![aW1hZ2U=.png](https://i-blog.csdnimg.cn/img_convert/fdf17383e29a314d62868690ca2869e3.png)


## 3.編輯 yaml 文件進(jìn)行模型量化編譯


Yaml 配置文件共包含 4 個(gè)必選參數組和 1 個(gè)可選參數組, 每個(gè)參數組下也區分必選和可選參數(可選參數默認隱藏), 具體要求和填寫(xiě)方式可以參考 OE 文檔里的具體章節。


準備完校準數據和 yaml 配置文件后,即可一步命令完成模型解析、圖優(yōu)化、校準、量化、編譯的全流程轉換。


![img](https://i-blog.csdnimg.cn/img_convert/a15c3a4d0c82bdd4f2daa426a1bc75d3.png)


## 4.編譯模型結果查看


轉換完成后,會(huì )在 yaml 文件配置的路徑下保存各階段流程產(chǎn)出的模型文件和編譯器預估的模型 BPU 部分的靜態(tài)性能評估文件。


各個(gè)算子余弦相似度如圖


![img](https://i-blog.csdnimg.cn/img_convert/5e330354bcaf28cd219c8242843e9519.png))


生成包含模型靜態(tài)性能預估的 html 和 json 文件,兩者內容相同, 但 html 文件的可讀性更好,如下圖。


余弦相似度如圖


[外鏈圖片轉存中...(img-410vo2h6-1740490280824)])


生成包含模型靜態(tài)性能預估的 html 和 json 文件,兩者內容相同, 但 html 文件的可讀性更好,如下圖。


![img](https://i-blog.csdnimg.cn/img_convert/56cd6fb5376a6ea1a34b215bc1330661.png)


*博客內容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀(guān)點(diǎn),如有侵權請聯(lián)系工作人員刪除。




相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>