本次為大家?guī)?lái) YOLOv8、PP-YOLOE+等 YOLO 全系列體驗(yàn)。歡迎廣大開發(fā)者使用 NVIDIA 與飛槳聯(lián)合深度適配的 NGC 飛槳容器,在 NVIDIA GPU 上體驗(yàn) PaddleDetection v2.5 的新特性。
PaddleDetection 快速體驗(yàn) YOLO 全系列模型
回顧整個(gè)虎年,堪稱 YOLO 內(nèi)卷元年,各路 YOLO 系列神仙打架,各顯神通。一開始大部分用戶做項(xiàng)目做實(shí)驗(yàn)還是使用的 YOLOv5,然后 YOLOv6、YOLOv7、PP-YOLOE+、DAMO-YOLO、RTMDet 就接踵而至,于是就在自己的數(shù)據(jù)集逐一嘗試,好不容易把這些下餃子式的 YOLO 模型訓(xùn)練完測(cè)試完,忙完工作準(zhǔn)備回家過(guò)年時(shí),YOLOv8 又閃電發(fā)布,YOLOv6 又更新了 3.0 版本...用戶還得跟進(jìn)繼續(xù)訓(xùn)練測(cè)試,其實(shí)很多時(shí)候就是重復(fù)工作。此外換模型訓(xùn)練調(diào)參也會(huì)引入更多的不確定性,而且往往業(yè)務(wù)數(shù)據(jù)集大則幾十萬(wàn)張圖片,重訓(xùn)成本很高,但訓(xùn)完了新的精度不一定更高,速度指標(biāo)在特定機(jī)器環(huán)境上也未必可觀,參數(shù)量、計(jì)算量的變化尤其在邊緣設(shè)備上也不能忽視。所以在這樣的內(nèi)卷期,作為開發(fā)者我們應(yīng)該怎么選擇一個(gè)適合自己的模型呢?
為了方便統(tǒng)一 YOLO 系列模型的開發(fā)測(cè)試基準(zhǔn),以及模型選型,百度飛槳推出了 PaddleYOLO 開源模型庫(kù),支持 YOLO 系列模型一鍵快速切換,并提供對(duì)應(yīng) ONNX 模型文件,充分滿足各類部署需求。此外 YOLOv5、YOLOv6、YOLOv7 和 YOLOv8 在評(píng)估和部署過(guò)程中使用了不同的后處理配置,因而可能造成評(píng)估結(jié)果虛高,而這些模型在 PaddleYOLO 中實(shí)現(xiàn)了統(tǒng)一,保證實(shí)際部署效果和模型評(píng)估指標(biāo)的一致性,并對(duì)這幾類模型的代碼進(jìn)行了重構(gòu),統(tǒng)一了代碼風(fēng)格,提高了代碼易讀性。下面的講解內(nèi)容也將圍繞 PaddleYOLO 相關(guān)測(cè)試數(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
總體來(lái)說(shuō),選擇合適的模型,要明確自己項(xiàng)目的要求和標(biāo)準(zhǔn),精度和速度一般是最重要的兩個(gè)指標(biāo),但還有模型參數(shù)量、FLOPs 計(jì)算量等也需要考慮。接下來(lái)就具體講一講這幾個(gè)關(guān)鍵點(diǎn)。
STEP1. 看精度
首先是精度,從上圖 YOLO 系列 Benchmark 圖可以看出,幾乎每個(gè)模型的目標(biāo)都是希望自己的模型折線在坐標(biāo)軸上是最高的,這也是各個(gè)模型的主要競(jìng)爭(zhēng)點(diǎn)。各家都會(huì)訓(xùn)練業(yè)界權(quán)威的 COCO 數(shù)據(jù)集去刷高精度,但是遷移到實(shí)際業(yè)務(wù)數(shù)據(jù)集上時(shí),效果哪個(gè)高并不一定,各個(gè)模型的泛化能力并不和 COCO 數(shù)據(jù)集上的精度正相關(guān)。COCO 數(shù)據(jù)集精度差距在 1.0 以內(nèi)的模型,其實(shí)業(yè)務(wù)數(shù)據(jù)集上差別不會(huì)很大,而且實(shí)際業(yè)務(wù)項(xiàng)目一般也不會(huì)只看 mAP 這一個(gè)指標(biāo),也可能需要關(guān)注 AP50、AP75、Recall 等指標(biāo)。
要想在業(yè)務(wù)數(shù)據(jù)集達(dá)到較高精度,最重要是一點(diǎn)其實(shí)是加載一個(gè)較強(qiáng)的預(yù)訓(xùn)練(pre-trained)權(quán)重。COCO 預(yù)訓(xùn)練權(quán)重可以極快收斂,精度也會(huì)遠(yuǎn)高于用 ImageNet 預(yù)訓(xùn)練權(quán)重訓(xùn)的。一個(gè)較強(qiáng)的預(yù)訓(xùn)練在下游任務(wù)中的效果會(huì)優(yōu)于絕大多數(shù)的調(diào)參和算法優(yōu)化。在 2022 年 9 月份,飛槳官方將 PP-YOLOE 模型升級(jí)為 PP-YOLOE+,最重要的一點(diǎn)就是提供了 Objects365 大規(guī)模數(shù)據(jù)集的預(yù)訓(xùn)練權(quán)重,Objects365 數(shù)據(jù)集含有的數(shù)據(jù)量可達(dá)百萬(wàn)級(jí),在大數(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í)間的同時(shí),獲得了精度上的顯著提升。實(shí)際業(yè)務(wù)場(chǎng)景中,在遇到比 COCO 更大規(guī)模數(shù)據(jù)集的情況下,傳統(tǒng)的基于 COCO 預(yù)訓(xùn)練的模型就顯得杯水車薪了,無(wú)論訓(xùn)練 200 epoch還是80 epoch,模型收斂都會(huì)非常慢,而使用 Objects365 預(yù)訓(xùn)練模型可以在較少的訓(xùn)練輪次 epoch 數(shù)如只 30 個(gè) epoch,就實(shí)現(xiàn)快速收斂并且最終精度更高。
此外還有一些自監(jiān)督或半監(jiān)督策略可以繼續(xù)提升檢測(cè)精度,但是對(duì)于開發(fā)者來(lái)講,時(shí)間資源、硬件資源消耗極大,以及目前的開發(fā)體驗(yàn)還不是很友好,需要持續(xù)優(yōu)化。
STEP2. 看速度
速度不像精度很快就能復(fù)現(xiàn)證明的,鑒于各大 YOLO 模型發(fā)布的測(cè)速環(huán)境也不同,還是得統(tǒng)一測(cè)試環(huán)境進(jìn)行實(shí)測(cè)。上圖是飛槳團(tuán)隊(duì)在飛槳框架對(duì)齊各大模型精度的基礎(chǔ)上,統(tǒng)一在 Tesla T4 上開啟 TensorRT 以 FP16 進(jìn)行的測(cè)試。
另外需要注意的是,各大 YOLO 模型發(fā)布的速度只是純模型速度,是去除 NMS(非極大值抑制)的后處理和圖片前處理的,實(shí)際應(yīng)用端到端的耗時(shí)還是要加上 NMS 后處理和圖片前處理的時(shí)間,以及將數(shù)據(jù)從 CPU 拷貝到 GPU/XPU 等加速卡上和將數(shù)據(jù)從加速卡拷貝到 CPU 的時(shí)間。通常 NMS 的參數(shù)對(duì)速度影響極大,尤其是 score threshold(置信度閾值) 、NMS 的 IoU 閾值、top-k 框數(shù)(參與 NMS 的最多框數(shù))以及 max_dets(每張圖保留的最多框數(shù)) 等參數(shù)。
比如最常用的是調(diào) score threshold,一般為了提高 Recall(召回率)都會(huì)設(shè)置成 0.001、0.01 之類的,但其實(shí)這種置信度范圍的低分框?qū)?shí)際應(yīng)用來(lái)說(shuō)意義不大;如果設(shè)置成 0.1、0.2 則會(huì)提前過(guò)濾掉眾多的低分框,這樣 NMS 速度和整個(gè)端到端部署的速度就會(huì)顯著上升,代價(jià)是掉一些 mAP,但對(duì)于結(jié)果可視化在視覺(jué)效果上其實(shí)影響很小。
STEP3. 看參數(shù)量、計(jì)算量
這方面在學(xué)術(shù)研究場(chǎng)景中一般不會(huì)著重考慮,但是在產(chǎn)業(yè)應(yīng)用場(chǎng)景中就非常重要,需要注意設(shè)備的硬件限制。例如堆疊一些模塊結(jié)構(gòu)來(lái)改造原模型,增加了 2~3 倍參數(shù)量提高了一點(diǎn)點(diǎn) mAP,這是 AI 競(jìng)賽常用的“套路”,精度雖然有少許提升,但速度變慢了很多,參數(shù)量和 FLOPs 也都變大了很多,對(duì)于產(chǎn)業(yè)應(yīng)用來(lái)說(shuō)意義不大,又如一些特殊模塊,例如 ConvNeXt,參數(shù)量極大但是 FLOPs 很小,雖然可以提升精度,但也會(huì)降低速度,參數(shù)量也可能受設(shè)備容量限制。
在對(duì)資源、顯存及其敏感的場(chǎng)景,除了選擇參數(shù)量較小的模型,也需要考慮和壓縮工具聯(lián)合使用。如下圖所示,在 YOLO 系列模型上,使用 PaddleSlim 自動(dòng)壓縮工具(ACT)壓縮后,可以在盡量保證精度的同時(shí),降低模型大小和顯存占用,并且該能力已經(jīng)在飛槳全場(chǎng)景高性能 AI 部署工具 FastDeploy 中集成,實(shí)現(xiàn)一鍵壓縮。
FastDeploy 快速部署
基于產(chǎn)業(yè)落地部署需求,全場(chǎng)景高性能 AI 部署工具 FastDeploy 統(tǒng)一了飛槳的推理引擎和生態(tài)推理引擎(包括 Paddle Inference、Paddle Lite、TensorRT、Poros 等多推理后端),并融合高性能 NLP 加速庫(kù) FastTokenizer、CV 高新能加速庫(kù) CV-CUDA,實(shí)現(xiàn)了 AI 模型端到端的推理性能優(yōu)化,支持 YOLOv5、YOLOv8、PP-YOLOE+等在內(nèi)的 160 多個(gè)產(chǎn)業(yè)級(jí)特色模型。支持 NVIDIA Jetson、NVIDIA GPU 等全系列硬件,同時(shí)支持高性能服務(wù)化部署,助力企業(yè)用戶快速完成 AI 模型部署。
加入 PaddleDetection 技術(shù)交流群,體驗(yàn) NVIDIA NGC + PaddleDetection
入群方式:微信掃描下方二維碼,關(guān)注公眾號(hào),填寫問(wèn)卷后進(jìn)入微信群隨時(shí)進(jìn)行技術(shù)交流,獲取 PaddleDetection 學(xué)習(xí)大禮包
NGC 飛槳容器介紹
如果您希望體驗(yàn) PaddleDetection v2.5 的新特性,歡迎使用 NGC 飛槳容器。NVIDIA 與百度飛槳聯(lián)合開發(fā)了 NGC 飛槳容器,將最新版本的飛槳與最新的 NVIDIA 的軟件棧(如 CUDA)進(jìn)行了無(wú)縫的集成與性能優(yōu)化,最大程度的釋放飛槳框架在 NVIDIA 最新硬件上的計(jì)算能力。這樣,用戶不僅可以快速開啟 AI 應(yīng)用,專注于創(chuàng)新和應(yīng)用本身,還能夠在 AI 訓(xùn)練和推理任務(wù)上獲得飛槳+NVIDIA 帶來(lái)的飛速體驗(yàn)。
最佳的開發(fā)環(huán)境搭建工具 - 容器技術(shù)
-
容器其實(shí)是一個(gè)開箱即用的服務(wù)器。極大降低了深度學(xué)習(xí)開發(fā)環(huán)境的搭建難度。例如你的開發(fā)環(huán)境中包含其他依賴進(jìn)程(redis,MySQL,Ngnix,selenium-hub 等等),或者你需要進(jìn)行跨操作系統(tǒng)級(jí)別的遷移
-
容器鏡像方便了開發(fā)者的版本化管理
-
容器鏡像是一種易于復(fù)現(xiàn)的開發(fā)環(huán)境載體
-
容器技術(shù)支持多容器同時(shí)運(yùn)行
最好的 PaddlePaddle 容器
NGC 飛槳容器針對(duì) NVIDIA GPU 加速進(jìn)行了優(yōu)化,并包含一組經(jīng)過(guò)驗(yàn)證的庫(kù),可啟用和優(yōu)化 NVIDIA GPU 性能。此容器還可能包含對(duì) 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ì)量管理
通過(guò)飛槳官網(wǎng)快速獲取
環(huán)境準(zhǔn)備
使用 NGC 飛槳容器需要主機(jī)系統(tǒng)(Linux)安裝以下內(nèi)容:
-
Docker 引擎
-
NVIDIA GPU 驅(qū)動(dòng)程序
-
NVIDIA 容器工具包
有關(guān)支持的版本,請(qǐng)參閱 NVIDIA 框架容器支持矩陣 和 NVIDIA 容器工具包文檔。
不需要其他安裝、編譯或依賴管理。無(wú)需安裝 NVIDIA CUDA Toolkit。
NGC 飛槳容器正式安裝:
要運(yùn)行容器,請(qǐng)按照 NVIDIA Containers For Deep Learning Frameworks User’s Guide 中 Running A Container 一章中的說(shuō)明發(fā)出適當(dāng)?shù)拿?,并指定注?cè)表、存儲(chǔ)庫(kù)和標(biāo)簽。有關(guān)使用 NGC 的更多信息,請(qǐng)參閱 NGC 容器用戶指南。如果您有 Docker 19.03 或更高版本,啟動(dòng)容器的典型命令是:
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ā)者說(shuō)|NGC飛槳容器全新上線 NVIDIA產(chǎn)品專家全面解讀】
https://www.bilibili.com/video/BV16B4y1V7ue?share_source=copy_web&vd_source=266ac44430b3656de0c2f4e58b4daf82
飛槳與 NVIDIA NGC 合作介紹
NVIDIA 非常重視中國(guó)市場(chǎng),特別關(guān)注中國(guó)的生態(tài)伙伴,而當(dāng)前飛槳擁有超過(guò) 470 萬(wàn)的開發(fā)者。在過(guò)去五年里我們緊密合作,深度融合,做了大量適配工作,如下圖所示。
今年,我們將飛槳列為 NVIDIA 全球前三的深度學(xué)習(xí)框架合作伙伴。我們?cè)谥袊?guó)已經(jīng)設(shè)立了專門的工程團(tuán)隊(duì)支持,賦能飛槳生態(tài)。
為了讓更多的開發(fā)者能用上基于 NVIDIA 最新的高性能硬件和軟件棧。當(dāng)前,我們正在進(jìn)行全新一代NVIDIA GPU H100的適配工作,以及提高飛槳對(duì) 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)
? ? ? ?
點(diǎn)擊“閱讀原文”或掃描下方海報(bào)二維碼,即可免費(fèi)注冊(cè) GTC 23,切莫錯(cuò)過(guò)這場(chǎng) AI 和元宇宙時(shí)代的技術(shù)大會(huì)!
原文標(biāo)題:YOLOv8 來(lái)啦!一文帶你解讀 YOLO"內(nèi)卷"期的模型選型以及在 NGC 飛槳容器中快速體驗(yàn)!
文章出處:【微信公眾號(hào):NVIDIA英偉達(dá)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
-
英偉達(dá)
+關(guān)注
關(guān)注
22文章
3686瀏覽量
90512
原文標(biāo)題:YOLOv8 來(lái)啦!一文帶你解讀 YOLO"內(nèi)卷"期的模型選型以及在 NGC 飛槳容器中快速體驗(yàn)!
文章出處:【微信號(hào):NVIDIA_China,微信公眾號(hào):NVIDIA英偉達(dá)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論