本次為大家?guī)?YOLOv8、PP-YOLOE+等 YOLO 全系列體驗(yàn)。歡迎廣大開發(fā)者使用 NVIDIA 與飛槳聯(lián)合深度適配的 NGC 飛槳容器,在 NVIDIA GPU 上體驗(yàn) PaddleDetection v2.5 的新特性。
PaddleDetection 快速體驗(yàn) YOLO 全系列模型
回顧整個虎年,堪稱 YOLO 內(nèi)卷元年,各路 YOLO 系列神仙打架,各顯神通。一開始大部分用戶做項(xiàng)目做實(shí)驗(yàn)還是使用的 YOLOv5,然后 YOLOv6、YOLOv7、PP-YOLOE+、DAMO-YOLO、RTMDet 就接踵而至,于是就在自己的數(shù)據(jù)集逐一嘗試,好不容易把這些下餃子式的 YOLO 模型訓(xùn)練完測試完,忙完工作準(zhǔn)備回家過年時,YOLOv8 又閃電發(fā)布,YOLOv6 又更新了 3.0 版本...用戶還得跟進(jìn)繼續(xù)訓(xùn)練測試,其實(shí)很多時候就是重復(fù)工作。此外換模型訓(xùn)練調(diào)參也會引入更多的不確定性,而且往往業(yè)務(wù)數(shù)據(jù)集大則幾十萬張圖片,重訓(xùn)成本很高,但訓(xùn)完了新的精度不一定更高,速度指標(biāo)在特定機(jī)器環(huán)境上也未必可觀,參數(shù)量、計(jì)算量的變化尤其在邊緣設(shè)備上也不能忽視。所以在這樣的內(nèi)卷期,作為開發(fā)者我們應(yīng)該怎么選擇一個適合自己的模型呢?
![41ebb9c2-aeea-11ed-bfe3-dac502259ad0.png](https://file1.elecfans.com//web2/M00/99/27/wKgaomTnZOeAcT9KAAEaQsuaLqU070.png)
為了方便統(tǒng)一 YOLO 系列模型的開發(fā)測試基準(zhǔn),以及模型選型,百度飛槳推出了 PaddleYOLO 開源模型庫,支持 YOLO 系列模型一鍵快速切換,并提供對應(yīng) ONNX 模型文件,充分滿足各類部署需求。此外 YOLOv5、YOLOv6、YOLOv7 和 YOLOv8 在評估和部署過程中使用了不同的后處理配置,因而可能造成評估結(jié)果虛高,而這些模型在 PaddleYOLO 中實(shí)現(xiàn)了統(tǒng)一,保證實(shí)際部署效果和模型評估指標(biāo)的一致性,并對這幾類模型的代碼進(jìn)行了重構(gòu),統(tǒng)一了代碼風(fēng)格,提高了代碼易讀性。下面的講解內(nèi)容也將圍繞 PaddleYOLO 相關(guān)測試數(shù)據(jù)進(jìn)行分析。
完整教程文檔及模型下載鏈接:
https://github.com/PaddlePaddle/PaddleDetection/blob/release/2.5/docs/feature_models/PaddleYOLO_MODEL.md
YOLO 系列多硬件部署示例下載鏈接:
https://github.com/PaddlePaddle/FastDeploy/blob/develop/examples/vision/detection/paddledetection
總體來說,選擇合適的模型,要明確自己項(xiàng)目的要求和標(biāo)準(zhǔn),精度和速度一般是最重要的兩個指標(biāo),但還有模型參數(shù)量、FLOPs 計(jì)算量等也需要考慮。接下來就具體講一講這幾個關(guān)鍵點(diǎn)。
![42216536-aeea-11ed-bfe3-dac502259ad0.jpg](https://file1.elecfans.com//web2/M00/99/27/wKgaomTnZOeAG5YAAADMy6Ttp-g871.jpg)
![424e6a4a-aeea-11ed-bfe3-dac502259ad0.jpg](https://file1.elecfans.com//web2/M00/99/27/wKgaomTnZOeANkkOAADRrE1IK7U786.jpg)
STEP1. 看精度
首先是精度,從上圖 YOLO 系列 Benchmark 圖可以看出,幾乎每個模型的目標(biāo)都是希望自己的模型折線在坐標(biāo)軸上是最高的,這也是各個模型的主要競爭點(diǎn)。各家都會訓(xùn)練業(yè)界權(quán)威的 COCO 數(shù)據(jù)集去刷高精度,但是遷移到實(shí)際業(yè)務(wù)數(shù)據(jù)集上時,效果哪個高并不一定,各個模型的泛化能力并不和 COCO 數(shù)據(jù)集上的精度正相關(guān)。COCO 數(shù)據(jù)集精度差距在 1.0 以內(nèi)的模型,其實(shí)業(yè)務(wù)數(shù)據(jù)集上差別不會很大,而且實(shí)際業(yè)務(wù)項(xiàng)目一般也不會只看 mAP 這一個指標(biāo),也可能需要關(guān)注 AP50、AP75、Recall 等指標(biāo)。
要想在業(yè)務(wù)數(shù)據(jù)集達(dá)到較高精度,最重要是一點(diǎn)其實(shí)是加載一個較強(qiáng)的預(yù)訓(xùn)練(pre-trained)權(quán)重。COCO 預(yù)訓(xùn)練權(quán)重可以極快收斂,精度也會遠(yuǎn)高于用 ImageNet 預(yù)訓(xùn)練權(quán)重訓(xùn)的。一個較強(qiáng)的預(yù)訓(xùn)練在下游任務(wù)中的效果會優(yōu)于絕大多數(shù)的調(diào)參和算法優(yōu)化。在 2022 年 9 月份,飛槳官方將 PP-YOLOE 模型升級為 PP-YOLOE+,最重要的一點(diǎn)就是提供了 Objects365 大規(guī)模數(shù)據(jù)集的預(yù)訓(xùn)練權(quán)重,Objects365 數(shù)據(jù)集含有的數(shù)據(jù)量可達(dá)百萬級,在大數(shù)據(jù)量下的訓(xùn)練可以使模型獲得更強(qiáng)大的特征提取能力、更好的泛化能力,在下游任務(wù)上的訓(xùn)練可以達(dá)到更好的效果。基于 Objects365 的 PP-YOLOE+預(yù)訓(xùn)練模型,將學(xué)習(xí)率調(diào)整為原始的十分之一,在 COCO 數(shù)據(jù)集上訓(xùn)練的 epoch 數(shù)從300減少到了只需 80,大大縮短了訓(xùn)練時間的同時,獲得了精度上的顯著提升。實(shí)際業(yè)務(wù)場景中,在遇到比 COCO 更大規(guī)模數(shù)據(jù)集的情況下,傳統(tǒng)的基于 COCO 預(yù)訓(xùn)練的模型就顯得杯水車薪了,無論訓(xùn)練 200 epoch還是80 epoch,模型收斂都會非常慢,而使用 Objects365 預(yù)訓(xùn)練模型可以在較少的訓(xùn)練輪次 epoch 數(shù)如只 30 個 epoch,就實(shí)現(xiàn)快速收斂并且最終精度更高。
此外還有一些自監(jiān)督或半監(jiān)督策略可以繼續(xù)提升檢測精度,但是對于開發(fā)者來講,時間資源、硬件資源消耗極大,以及目前的開發(fā)體驗(yàn)還不是很友好,需要持續(xù)優(yōu)化。
STEP2. 看速度
速度不像精度很快就能復(fù)現(xiàn)證明的,鑒于各大 YOLO 模型發(fā)布的測速環(huán)境也不同,還是得統(tǒng)一測試環(huán)境進(jìn)行實(shí)測。上圖是飛槳團(tuán)隊(duì)在飛槳框架對齊各大模型精度的基礎(chǔ)上,統(tǒng)一在 Tesla T4 上開啟 TensorRT 以 FP16 進(jìn)行的測試。
另外需要注意的是,各大 YOLO 模型發(fā)布的速度只是純模型速度,是去除 NMS(非極大值抑制)的后處理和圖片前處理的,實(shí)際應(yīng)用端到端的耗時還是要加上 NMS 后處理和圖片前處理的時間,以及將數(shù)據(jù)從 CPU 拷貝到 GPU/XPU 等加速卡上和將數(shù)據(jù)從加速卡拷貝到 CPU 的時間。通常 NMS 的參數(shù)對速度影響極大,尤其是 score threshold(置信度閾值) 、NMS 的 IoU 閾值、top-k 框數(shù)(參與 NMS 的最多框數(shù))以及 max_dets(每張圖保留的最多框數(shù)) 等參數(shù)。
比如最常用的是調(diào) score threshold,一般為了提高 Recall(召回率)都會設(shè)置成 0.001、0.01 之類的,但其實(shí)這種置信度范圍的低分框?qū)?shí)際應(yīng)用來說意義不大;如果設(shè)置成 0.1、0.2 則會提前過濾掉眾多的低分框,這樣 NMS 速度和整個端到端部署的速度就會顯著上升,代價是掉一些 mAP,但對于結(jié)果可視化在視覺效果上其實(shí)影響很小。
STEP3. 看參數(shù)量、計(jì)算量
這方面在學(xué)術(shù)研究場景中一般不會著重考慮,但是在產(chǎn)業(yè)應(yīng)用場景中就非常重要,需要注意設(shè)備的硬件限制。例如堆疊一些模塊結(jié)構(gòu)來改造原模型,增加了 2~3 倍參數(shù)量提高了一點(diǎn)點(diǎn) mAP,這是 AI 競賽常用的“套路”,精度雖然有少許提升,但速度變慢了很多,參數(shù)量和 FLOPs 也都變大了很多,對于產(chǎn)業(yè)應(yīng)用來說意義不大,又如一些特殊模塊,例如 ConvNeXt,參數(shù)量極大但是 FLOPs 很小,雖然可以提升精度,但也會降低速度,參數(shù)量也可能受設(shè)備容量限制。
在對資源、顯存及其敏感的場景,除了選擇參數(shù)量較小的模型,也需要考慮和壓縮工具聯(lián)合使用。如下圖所示,在 YOLO 系列模型上,使用 PaddleSlim 自動壓縮工具(ACT)壓縮后,可以在盡量保證精度的同時,降低模型大小和顯存占用,并且該能力已經(jīng)在飛槳全場景高性能 AI 部署工具 FastDeploy 中集成,實(shí)現(xiàn)一鍵壓縮。
![426eebe4-aeea-11ed-bfe3-dac502259ad0.png](https://file1.elecfans.com//web2/M00/99/27/wKgaomTnZOiADgrlAAJZIlpTjLI238.png)
FastDeploy 快速部署
基于產(chǎn)業(yè)落地部署需求,全場景高性能 AI 部署工具 FastDeploy 統(tǒng)一了飛槳的推理引擎和生態(tài)推理引擎(包括 Paddle Inference、Paddle Lite、TensorRT、Poros 等多推理后端),并融合高性能 NLP 加速庫 FastTokenizer、CV 高新能加速庫 CV-CUDA,實(shí)現(xiàn)了 AI 模型端到端的推理性能優(yōu)化,支持 YOLOv5、YOLOv8、PP-YOLOE+等在內(nèi)的 160 多個產(chǎn)業(yè)級特色模型。支持 NVIDIA Jetson、NVIDIA GPU 等全系列硬件,同時支持高性能服務(wù)化部署,助力企業(yè)用戶快速完成 AI 模型部署。
![4297be8e-aeea-11ed-bfe3-dac502259ad0.png](https://file1.elecfans.com//web2/M00/99/27/wKgaomTnZOiAdjA9AAOvt4tdcIk142.png)
加入 PaddleDetection 技術(shù)交流群,體驗(yàn) NVIDIA NGC + PaddleDetection
入群方式:微信掃描下方二維碼,關(guān)注公眾號,填寫問卷后進(jìn)入微信群隨時進(jìn)行技術(shù)交流,獲取 PaddleDetection 學(xué)習(xí)大禮包
![42cb08e8-aeea-11ed-bfe3-dac502259ad0.jpg](https://file1.elecfans.com//web2/M00/99/27/wKgaomTnZOiAKSRcAAD1-3snuTI159.jpg)
NGC 飛槳容器介紹
如果您希望體驗(yàn) PaddleDetection v2.5 的新特性,歡迎使用 NGC 飛槳容器。NVIDIA 與百度飛槳聯(lián)合開發(fā)了 NGC 飛槳容器,將最新版本的飛槳與最新的 NVIDIA 的軟件棧(如 CUDA)進(jìn)行了無縫的集成與性能優(yōu)化,最大程度的釋放飛槳框架在 NVIDIA 最新硬件上的計(jì)算能力。這樣,用戶不僅可以快速開啟 AI 應(yīng)用,專注于創(chuàng)新和應(yīng)用本身,還能夠在 AI 訓(xùn)練和推理任務(wù)上獲得飛槳+NVIDIA 帶來的飛速體驗(yàn)。
最佳的開發(fā)環(huán)境搭建工具 - 容器技術(shù)
-
容器其實(shí)是一個開箱即用的服務(wù)器。極大降低了深度學(xué)習(xí)開發(fā)環(huán)境的搭建難度。例如你的開發(fā)環(huán)境中包含其他依賴進(jìn)程(redis,MySQL,Ngnix,selenium-hub 等等),或者你需要進(jìn)行跨操作系統(tǒng)級別的遷移
-
容器鏡像方便了開發(fā)者的版本化管理
-
容器鏡像是一種易于復(fù)現(xiàn)的開發(fā)環(huán)境載體
-
容器技術(shù)支持多容器同時運(yùn)行
![42f12744-aeea-11ed-bfe3-dac502259ad0.png](https://file1.elecfans.com//web2/M00/99/27/wKgaomTnZOiAWLT0AACMvErs8Qk849.png)
最好的 PaddlePaddle 容器
NGC 飛槳容器針對 NVIDIA GPU 加速進(jìn)行了優(yōu)化,并包含一組經(jīng)過驗(yàn)證的庫,可啟用和優(yōu)化 NVIDIA GPU 性能。此容器還可能包含對 PaddlePaddle 源代碼的修改,以最大限度地提高性能和兼容性。此容器還包含用于加速 ETL (DALI, RAPIDS),、訓(xùn)練(cuDNN, NCCL)和推理(TensorRT)工作負(fù)載的軟件。
PaddlePaddle 容器具有以下優(yōu)點(diǎn):
-
適配最新版本的 NVIDIA 軟件棧(例如最新版本 CUDA),更多功能,更高性能
-
更新的 Ubuntu 操作系統(tǒng),更好的軟件兼容性
-
按月更新
-
滿足 NVIDIA NGC 開發(fā)及驗(yàn)證規(guī)范,質(zhì)量管理
通過飛槳官網(wǎng)快速獲取
![43132d30-aeea-11ed-bfe3-dac502259ad0.png](https://file1.elecfans.com//web2/M00/99/27/wKgaomTnZOiAcapYAAJjgxgqx1A142.png)
環(huán)境準(zhǔn)備
使用 NGC 飛槳容器需要主機(jī)系統(tǒng)(Linux)安裝以下內(nèi)容:
-
Docker 引擎
-
NVIDIA GPU 驅(qū)動程序
-
NVIDIA 容器工具包
有關(guān)支持的版本,請參閱 NVIDIA 框架容器支持矩陣 和 NVIDIA 容器工具包文檔。
不需要其他安裝、編譯或依賴管理。無需安裝 NVIDIA CUDA Toolkit。
NGC 飛槳容器正式安裝:
要運(yùn)行容器,請按照 NVIDIA Containers For Deep Learning Frameworks User’s Guide 中 Running A Container 一章中的說明發(fā)出適當(dāng)?shù)拿睿⒅付ㄗ员?、存儲庫?a target="_blank">標(biāo)簽。有關(guān)使用 NGC 的更多信息,請參閱 NGC 容器用戶指南。如果您有 Docker 19.03 或更高版本,啟動容器的典型命令是:
dockerrun--gpusall--shm-size=1g--ulimitmemlock=-1-it--rm
nvcr.io/nvidia/paddlepaddle:22.08-py3
*詳細(xì)安裝介紹 《NGC 飛槳容器安裝指南》
https://www.paddlepaddle.org.cn/documentation/docs/zh/install/install_NGC_PaddlePaddle_ch.html
【飛槳開發(fā)者說|NGC飛槳容器全新上線 NVIDIA產(chǎn)品專家全面解讀】
https://www.bilibili.com/video/BV16B4y1V7ue?share_source=copy_web&vd_source=266ac44430b3656de0c2f4e58b4daf82
飛槳與 NVIDIA NGC 合作介紹
NVIDIA 非常重視中國市場,特別關(guān)注中國的生態(tài)伙伴,而當(dāng)前飛槳擁有超過 470 萬的開發(fā)者。在過去五年里我們緊密合作,深度融合,做了大量適配工作,如下圖所示。
![43508b3a-aeea-11ed-bfe3-dac502259ad0.png](https://file1.elecfans.com//web2/M00/99/27/wKgaomTnZOmASy_QAAH4pvVnKLk721.png)
今年,我們將飛槳列為 NVIDIA 全球前三的深度學(xué)習(xí)框架合作伙伴。我們在中國已經(jīng)設(shè)立了專門的工程團(tuán)隊(duì)支持,賦能飛槳生態(tài)。
為了讓更多的開發(fā)者能用上基于 NVIDIA 最新的高性能硬件和軟件棧。當(dāng)前,我們正在進(jìn)行全新一代NVIDIA GPU H100的適配工作,以及提高飛槳對 CUDA Operation API 的使用率,讓飛槳的開發(fā)者擁有優(yōu)秀的用戶體驗(yàn)及極致性能。
以上的各種適配,僅僅是讓飛槳的開發(fā)者擁有高性能的推理訓(xùn)練成為可能。但是,這些離行業(yè)開發(fā)者還很遠(yuǎn),門檻還很高,難度還很大。
為此,我們將剛剛這些集成和優(yōu)化工作,整合到三大產(chǎn)品線中。其中 NGC 飛槳容器最為閃亮。
NVIDIA NGC Container – 最佳的飛槳開發(fā)環(huán)境,集成最新的 NVIDIA 工具包(例如 CUDA)
![43897c7e-aeea-11ed-bfe3-dac502259ad0.png](https://file1.elecfans.com//web2/M00/99/27/wKgaomTnZOmAE7VaAAKM-cAJHgI748.png)
點(diǎn)擊“閱讀原文”或掃描下方海報(bào)二維碼,即可免費(fèi)注冊 GTC 23,切莫錯過這場 AI 和元宇宙時代的技術(shù)大會!
原文標(biāo)題:YOLOv8 來啦!一文帶你解讀 YOLO"內(nèi)卷"期的模型選型以及在 NGC 飛槳容器中快速體驗(yàn)!
文章出處:【微信公眾號:NVIDIA英偉達(dá)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
-
英偉達(dá)
+關(guān)注
關(guān)注
22文章
3854瀏覽量
92080
原文標(biāo)題:YOLOv8 來啦!一文帶你解讀 YOLO"內(nèi)卷"期的模型選型以及在 NGC 飛槳容器中快速體驗(yàn)!
文章出處:【微信號:NVIDIA_China,微信公眾號:NVIDIA英偉達(dá)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
在RK3568教學(xué)實(shí)驗(yàn)箱上實(shí)現(xiàn)基于YOLOV5的算法物體識別案例詳解
YOLOv10自定義目標(biāo)檢測之理論+實(shí)踐
![<b class='flag-5'>YOLOv</b>10自定義目標(biāo)檢測之理論+實(shí)踐](https://file1.elecfans.com/web2/M00/0B/C1/wKgZomc4Ar6AL6scAAA2_1o7xZI645.png)
在Ubuntu 24.04 LTS上安裝飛槳PaddleX
![<b class='flag-5'>在</b>Ubuntu 24.04 LTS上安裝<b class='flag-5'>飛</b><b class='flag-5'>槳</b>PaddleX](https://file1.elecfans.com/web2/M00/0C/3C/wKgaomcx0YKAVW5EAAIw8KgsSgg548.png)
YOLOv6在LabVIEW中的推理部署(含源碼)
![<b class='flag-5'>YOLOv</b>6<b class='flag-5'>在</b>LabVIEW<b class='flag-5'>中</b>的推理部署(含源碼)](https://file1.elecfans.com//web2/M00/8D/98/wKgZomS-F6iADBs8AADw4J6SGjY218.png)
YOLOv8中的損失函數(shù)解析
![<b class='flag-5'>YOLOv8</b><b class='flag-5'>中</b>的損失函數(shù)解析](https://file1.elecfans.com/web2/M00/0B/CA/wKgaomcp4mOAWXxdAAAAZMZaAdw759.png)
【飛凌嵌入式OK3576-C開發(fā)板體驗(yàn)】RKNN神經(jīng)網(wǎng)絡(luò)-YOLO目標(biāo)檢測
使用NVIDIA JetPack 6.0和YOLOv8構(gòu)建智能交通應(yīng)用
![使用NVIDIA JetPack 6.0和<b class='flag-5'>YOLOv8</b>構(gòu)建智能交通應(yīng)用](https://file1.elecfans.com/web2/M00/03/F4/wKgZombITTeAJoN0AAFiFjt_ems659.png)
NVIDIA與百度飛槳攜手革新汽車風(fēng)阻預(yù)測:DNNFluid-Car模型的崛起
百度發(fā)布文心大模型4.0 Turbo與飛槳框架3.0,引領(lǐng)AI技術(shù)新篇章
用OpenVINO C# API在intel平臺部署YOLOv10目標(biāo)檢測模型
![用OpenVINO C# API<b class='flag-5'>在</b>intel平臺部署<b class='flag-5'>YOLOv</b>10目標(biāo)檢測<b class='flag-5'>模型</b>](https://file1.elecfans.com/web2/M00/F1/5B/wKgZomZ01qSAfuqIAAAvhGmMIdc334.png)
使用sophon-demo_v0.1.8_dbb4632_20231116下面的YOLOv8中的yolov8_bmcv歷程出現(xiàn)段錯誤的原因?
OpenVINO? C# API部署YOLOv9目標(biāo)檢測和實(shí)例分割模型
![OpenVINO? C# API部署<b class='flag-5'>YOLOv</b>9目標(biāo)檢測和實(shí)例分割<b class='flag-5'>模型</b>](https://file1.elecfans.com/web2/M00/C6/E7/wKgZomYNI5yAcjPFAAAnnaRSWvY109.png)
基于OpenCV DNN實(shí)現(xiàn)YOLOv8的模型部署與推理演示
![基于OpenCV DNN實(shí)現(xiàn)<b class='flag-5'>YOLOv8</b>的<b class='flag-5'>模型</b>部署與推理演示](https://file1.elecfans.com/web2/M00/C2/4A/wKgZomXhidOAS5bgAAA85lM3BAY512.png)
在Windows上使用OpenVINO? C# API部署Yolov8-obb實(shí)現(xiàn)任意方向的目標(biāo)檢測
![<b class='flag-5'>在</b>Windows上使用OpenVINO? C# API部署<b class='flag-5'>Yolov8</b>-obb實(shí)現(xiàn)任意方向的目標(biāo)檢測](https://file1.elecfans.com/web2/M00/C1/8F/wKgaomXXEPaAC8AtAAAyPS6rKlo663.png)
OpenCV4.8 C++實(shí)現(xiàn)YOLOv8 OBB旋轉(zhuǎn)對象檢測
![OpenCV4.8 C++實(shí)現(xiàn)<b class='flag-5'>YOLOv8</b> OBB旋轉(zhuǎn)對象檢測](https://file1.elecfans.com/web2/M00/C0/8A/wKgZomXWrpyAA-X_AABPfe5K8eA015.png)
評論