日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 人文社科 > 生活经验 >内容正文

生活经验

目标检测推理部署:优化和部署

發(fā)布時(shí)間:2023/11/28 生活经验 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 目标检测推理部署:优化和部署 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

目標(biāo)檢測(cè)推理部署:優(yōu)化和部署

本文簡(jiǎn)要介紹了端對(duì)端推理管道的優(yōu)化技術(shù)和部署。
將在以下三個(gè)方面研究推理優(yōu)化過(guò)程:硬件優(yōu)化,軟件優(yōu)化和模型優(yōu)化。推理優(yōu)化的關(guān)鍵指標(biāo)如下:
? 吞吐量(未推理圖像/秒)
? 硬件成本
? 存儲(chǔ)
? 功耗消耗
? 質(zhì)量

圖1.三軸推理優(yōu)化。
模型優(yōu)化
YOLOv3-416模型用作預(yù)訓(xùn)練模型時(shí),在兼容的數(shù)據(jù)集上表現(xiàn)最佳。當(dāng)用作基本模型時(shí),需要調(diào)整超參數(shù)以更好地適合自定義數(shù)據(jù)集。下面列出了YOLOv3中需要考慮的體系結(jié)構(gòu)選擇和配置:
? 全卷積基礎(chǔ)架構(gòu)的106層比YOLOv2的層更多,并且層越多,性能越慢。
? 實(shí)現(xiàn)了使用跳轉(zhuǎn)連接的深層殘余層以解決降級(jí)問(wèn)題和精度飽和,這是深層網(wǎng)絡(luò)達(dá)到收斂的典型癥狀。
? 總共使用了9個(gè)錨定框,每個(gè)比例尺使用3個(gè)?;趯?duì)MS COCO數(shù)據(jù)集中的目標(biāo)大小的分析精心選擇的錨定框上下文定義了預(yù)測(cè)的邊界框。錨框是可配置的。檢測(cè)器以三種不同的比例工作,從比例1,獲取較大的目標(biāo),到比例3,獲取較小的目標(biāo)。
? 邊界框的預(yù)測(cè)發(fā)生在三個(gè)不同的尺度上。在每個(gè)尺度上,每個(gè)網(wǎng)格都可以使用三個(gè)錨點(diǎn)預(yù)測(cè)三個(gè)框。對(duì)于416 x 416的輸入圖像,預(yù)測(cè)的框數(shù)為10,647。
? 目標(biāo)置信度和類預(yù)測(cè)通過(guò)邏輯回歸進(jìn)行。訓(xùn)練探測(cè)器時(shí),會(huì)為每個(gè)groundtruth真值框分配一個(gè)邊界框,該邊界框的錨點(diǎn)與groundtruth真值框最大重疊。
? 數(shù)據(jù)集中的“ Person”和“ Women”等等級(jí)類別的預(yù)測(cè)使用邏輯回歸,并應(yīng)用閾值來(lái)處理圖像中檢測(cè)到的目標(biāo)的多個(gè)標(biāo)簽,且分?jǐn)?shù)高于分配給邊界框的閾值的類別。
? 在416 x 416輸入分辨率下,模型性能最佳。在較低的分辨率下,更少的檢測(cè)發(fā)生。在較大的輸入分辨率下,性能未檢測(cè)到或有時(shí)檢測(cè)到誤報(bào)。同樣,較大的輸入分辨率會(huì)增加推理時(shí)間,并且分辨率應(yīng)為32的倍數(shù)。
? 可以根據(jù)需要調(diào)整其它可配置參數(shù),例如批大小,客觀置信度和非最大抑制閾值。
? 后處理NMS僅在CPU上運(yùn)行,并占用大量運(yùn)行時(shí)runtime間。
? 平衡影響性能的準(zhǔn)確性和速度的選擇還包括提取程序的輸出步幅,IOU閾值,數(shù)據(jù)擴(kuò)充,定位損失功能,所使用的深度學(xué)習(xí)框架等。
硬件優(yōu)化

圖2. YOLOv3在不同硬件配置上的推理速度與批量大小的關(guān)系。
在具有不同批處理大小的單個(gè)CPU,單個(gè)GPU和多個(gè)GPU上運(yùn)行推理服務(wù)器。可以看出,在GPU環(huán)境中運(yùn)行時(shí)runtime,推理性能更高。對(duì)于較小的批處理大小,未充分利用多GPU,并且最大批處理大小為128,四個(gè)GPU的吞吐量最高。
最初在NVIDIA Volta架構(gòu)中引入的Tensor Core是混合精度訓(xùn)練的主力軍。PyTorch支持使用FP32和FP16數(shù)據(jù)類型的混合精度,從而有效地最大程度地利用Volta和Turing Tensor Core。在16位中執(zhí)行乘法,然后在32位累加中求和,可實(shí)現(xiàn)能源和面積成本的優(yōu)化。
軟件優(yōu)化
PyTorch提供了高級(jí)功能,例如具有強(qiáng)大GPU加速功能的張量計(jì)算,無(wú)論是將模型放在GPU上還是將張量復(fù)制到GPU。使用NVIDIA NGC上提供的PyTorch容器,NVIDIA NGC是GPU優(yōu)化的軟件中心,針對(duì)多GPU和多節(jié)點(diǎn)系統(tǒng)的支持而針對(duì)可擴(kuò)展性能進(jìn)行了優(yōu)化。容器化的環(huán)境使構(gòu)建在PyTorch框架之上的整個(gè)目標(biāo)檢測(cè)堆棧變得輕便,輕松。該部署能夠在Pascal,Volta或基于Turing的NVIDIA DGX,工作站,服務(wù)器和領(lǐng)先的云平臺(tái)上的任何地方運(yùn)行。
使用DataParallel來(lái)最大化四個(gè)GPU的利用率。它會(huì)自動(dòng)分割數(shù)據(jù),并在多個(gè)GPU上的多個(gè)模型之間分配它們,并合并輸出。使用四個(gè)NVIDIA V100 GPU,能夠提高每次迭代的推理吞吐量,并且使用四個(gè)GPU和一個(gè)GPU,批處理大小增加到128張圖像。CPU的數(shù)量必須足夠高,以避免數(shù)據(jù)預(yù)處理和后處理中的瓶頸。需要八個(gè)CPU才能達(dá)到131 FPS的推理速度。
諸如修剪,權(quán)重共享和量化之類的幾種技術(shù)是可用于增強(qiáng)算法性能的其它優(yōu)化方法。
Tensor RT優(yōu)化
諸如PyTorch之類的框架非常靈活,可以快速地表達(dá)規(guī)定的網(wǎng)絡(luò)體系結(jié)構(gòu),因?yàn)樗鼈円杨A(yù)先配置了cuDNN之類的庫(kù)。cuDNN庫(kù)有效地實(shí)現(xiàn)了低級(jí)原子運(yùn)算,以在CUDA中執(zhí)行卷積,矩陣乘法等。但是,PyTorch之類的框架提供的靈活性確實(shí)會(huì)增加開(kāi)銷(xiāo),從而影響部署后的總體推理性能。
TensorRT是一個(gè)旨在優(yōu)化推理性能的庫(kù)。TensorRT由優(yōu)化器和運(yùn)行時(shí)runtime引擎組成。優(yōu)化器是一次操作,負(fù)責(zé)通過(guò)指定推理批大小和FP-32,FP-16或8位INT精度來(lái)優(yōu)化模型圖,以將優(yōu)化的模型或計(jì)劃序列化到存儲(chǔ)中。TensorRT運(yùn)行時(shí)runtime引擎從存儲(chǔ)加載優(yōu)化的模型以在運(yùn)行時(shí)runtime執(zhí)行推理。在對(duì)其它框架的支持中,模型導(dǎo)入器支持通過(guò)ONNX格式將基于PyTorch的模型導(dǎo)入TensorRT。 torch2trt 是使用TensorRT Python API的PyTorch到TensorRT轉(zhuǎn)換器。
大規(guī)模部署:Dockerzing推理代碼
Docker作為容器化平臺(tái)的興起極大地簡(jiǎn)化了創(chuàng)建,部署和管理分布式應(yīng)用程序的過(guò)程。Docker容器將軟件包裝及其核心組件和依賴項(xiàng)作為標(biāo)準(zhǔn)單元,然后可以在任何計(jì)算環(huán)境中可靠地運(yùn)行。
使用PyTorch-YOLOv3系統(tǒng)
從NGC提取的PyTorch容器用作目標(biāo)檢測(cè)應(yīng)用程序堆棧的框架。NGC擁有以下資源:
? 針對(duì)TensorFlow,RAPIDS和PyTorch等框架的高度優(yōu)化的容器。
? 預(yù)先訓(xùn)練的模型和模型腳本,例如BERT,ResNet50和Net。
? 適用于NVIDIA Clara和NVIDIADeepStream等應(yīng)用的Kubernetes就緒Helm圖表。
構(gòu)建應(yīng)用程序需要安裝一些Python依賴包,例如libopencv-dev。該軟件包有助于實(shí)時(shí)圖像處理。運(yùn)行此應(yīng)用程序還需要其它基于Python的軟件包,例如NumPy,Matplotlib,Pillow,Tqdm和OpenCV-python。NGC上托管的PyTorch容器包括所有這些軟件包。
運(yùn)行NGC GPU容器的前提條件
NGC容器在支持NGC的系統(tǒng)(例如NVIDIA DGX系統(tǒng),工作站和帶有NVIDIA計(jì)算服務(wù)器的虛擬化環(huán)境)中開(kāi)箱即用。
大多數(shù)云服務(wù)提供商(CSP)提供隨必要的NVIDIA驅(qū)動(dòng)程序,Docker版本和容器工具包一起提供的機(jī)器映像。以下是與某些最常見(jiàn)的CSP對(duì)應(yīng)的NVIDIA機(jī)器映像:
? 亞馬遜網(wǎng)絡(luò)服務(wù):NVIDIA Volta AMI,可通過(guò)市場(chǎng)訪問(wèn)
? Microsoft Azure:NGC映像
? Google Cloud:用于深度學(xué)習(xí)和HPC的NVIDIA Cloud Image
或者,必須在配備N(xiāo)VIDIA GPU的系統(tǒng)上運(yùn)行的VM中安裝以下軟件包:
? NVIDIA容器工具包:CUDA工具包提供了開(kāi)發(fā)環(huán)境,并包括GPU加速的庫(kù),調(diào)試和優(yōu)化工具,C / C ++編譯器以及用于部署應(yīng)用程序的運(yùn)行時(shí)runtime庫(kù)。
? NVIDIA驅(qū)動(dòng)程序:從NVIDIA下載與GPU相對(duì)應(yīng)的驅(qū)動(dòng)程序可使OS和其它應(yīng)用程序“感知GPU”。
運(yùn)行PyTorch-YOLOv3容器
可以運(yùn)行容器化的PyTorch-YOLOv3應(yīng)用程序。主機(jī)路徑可以使用綁定掛載進(jìn)行安裝,而容器路徑可以直接從主機(jī)輸入源數(shù)據(jù)并將其輸出存儲(chǔ)在主機(jī)中。
要在運(yùn)行容器時(shí)使用機(jī)器中所有可用的GPU,請(qǐng)?zhí)峒皑Cgpus all以下命令中所示??梢酝ㄟ^(guò)將以下命令中突出顯示的部分替換為來(lái)使用有限數(shù)量的GPU運(yùn)行該容器–gpus=。甚至可以通過(guò)刪除命令中突出顯示的部分來(lái)僅使用CPU運(yùn)行此容器。
$ sudo docker run -it --gpus all -v(輸入主機(jī)路徑):(輸入容器路徑)-v(輸出主機(jī)路徑):(輸出容器路徑)
結(jié)論
自動(dòng)駕駛汽車(chē)行業(yè)一直在尋找從當(dāng)前狀態(tài)轉(zhuǎn)變?yōu)榭刹渴鸬陌踩?#xff0c;自動(dòng)駕駛車(chē)輛所需的技術(shù)創(chuàng)新。神經(jīng)網(wǎng)絡(luò)的陣列為自動(dòng)駕駛汽車(chē)的感知和決策能力奠定了基礎(chǔ)。AI注釋模型推論簡(jiǎn)化了標(biāo)注新訓(xùn)練數(shù)據(jù)以開(kāi)發(fā)神經(jīng)網(wǎng)絡(luò)的過(guò)程,這些神經(jīng)網(wǎng)絡(luò)形成了自動(dòng)駕駛汽車(chē)軟件開(kāi)發(fā)堆棧的核心,從而節(jié)省了寶貴的時(shí)間和資源。
本文介紹了自動(dòng)駕駛上下文中的數(shù)據(jù)注釋管道,包括設(shè)置,推理,性能指標(biāo),優(yōu)化,部署以及使用NVIDIA在GPU上運(yùn)行的端到端目標(biāo)檢測(cè)管道的運(yùn)行時(shí)runtime。來(lái)自NGC的Docker,并利用TensorRT。

總結(jié)

以上是生活随笔為你收集整理的目标检测推理部署:优化和部署的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。