




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
基于Pytorch(YOLOv5)目標(biāo)檢測(cè)模型部署邊緣智能計(jì)算應(yīng)用
ONNX模型文件轉(zhuǎn)RKNN模型文件邊緣智能計(jì)算應(yīng)用職業(yè)能力目標(biāo)01任務(wù)描述與要求02任務(wù)分析與計(jì)劃03知識(shí)儲(chǔ)備04任務(wù)實(shí)施05任務(wù)檢查與評(píng)價(jià)06任務(wù)小結(jié)07任務(wù)拓展08
ONNX模型文件轉(zhuǎn)RKNN模型文件了解轉(zhuǎn)成rknn模型的意義了解rknn的相關(guān)知識(shí)掌握如何將onnx模型文件轉(zhuǎn)成rknn模型文件掌握如何預(yù)測(cè)rknn模型文件職業(yè)能力目標(biāo)01知識(shí)目標(biāo)技能目標(biāo)職業(yè)能力目標(biāo)01任務(wù)描述與要求02任務(wù)分析與計(jì)劃03知識(shí)儲(chǔ)備04任務(wù)實(shí)施05任務(wù)檢查與評(píng)價(jià)06任務(wù)小結(jié)07任務(wù)拓展08
ONNX模型文件轉(zhuǎn)RKNN模型文件此任務(wù)要求讀者了解轉(zhuǎn)成rknn模型的意義,搭建onnx模型文件轉(zhuǎn)rknn模型文件的環(huán)境,將onnx模型文件轉(zhuǎn)換rknn模型文件,預(yù)測(cè)rknn模型文件并部署到AI邊緣開發(fā)板。任務(wù)描述任務(wù)要求創(chuàng)建模型轉(zhuǎn)換所需的虛擬環(huán)境配置腳本參數(shù)進(jìn)行模型轉(zhuǎn)換驗(yàn)證RKNN模型RKNN模型部署到邊緣端任務(wù)描述與要求02職業(yè)能力目標(biāo)01任務(wù)描述與要求02任務(wù)分析與計(jì)劃03知識(shí)儲(chǔ)備04任務(wù)實(shí)施05任務(wù)檢查與評(píng)價(jià)06任務(wù)小結(jié)07任務(wù)拓展08
ONNX模型文件轉(zhuǎn)RKNN模型文件任務(wù)分析onnx模型文件轉(zhuǎn)成rknn模型文件開始之前需要做哪些準(zhǔn)備工作?預(yù)測(cè)rknn模型文件過程中涉及到哪些參數(shù)?任務(wù)分析與計(jì)劃03任務(wù)計(jì)劃表項(xiàng)目名稱基于Pytorch(yolov5)目標(biāo)檢測(cè)模型部署任務(wù)名稱ONNX模型文件轉(zhuǎn)RKNN模型文件計(jì)劃方式自主設(shè)計(jì)計(jì)劃要求請(qǐng)用8個(gè)計(jì)劃步驟來(lái)完整描述出如何完成本次任務(wù)序號(hào)任務(wù)計(jì)劃1
2
3
4
5
6
78通過上面的思考,你是否對(duì)本任務(wù)要完成的工作有所了解?讓我們一起來(lái)制訂完成本次任務(wù)的實(shí)施計(jì)劃吧!任務(wù)分析與計(jì)劃03職業(yè)能力目標(biāo)01任務(wù)描述與要求02任務(wù)分析與計(jì)劃03知識(shí)儲(chǔ)備04任務(wù)實(shí)施05任務(wù)檢查與評(píng)價(jià)06任務(wù)小結(jié)07任務(wù)拓展08
ONNX模型文件轉(zhuǎn)RKNN模型文件轉(zhuǎn)rknn模型文件的意義204知識(shí)儲(chǔ)備ONNX簡(jiǎn)介133模型部署邊緣計(jì)算404ONNX簡(jiǎn)介OpenNeuralNetworkExchange(ONNX,開放神經(jīng)網(wǎng)絡(luò)交換)格式,是一個(gè)用于表示深度學(xué)習(xí)模型的標(biāo)準(zhǔn),可使模型在不同框架之間進(jìn)行轉(zhuǎn)移。04ONNX簡(jiǎn)介ONNX是一種針對(duì)機(jī)器學(xué)習(xí)所設(shè)計(jì)的開放式的文件格式,用于存儲(chǔ)訓(xùn)練好的模型。它使得不同的人工智能框架(如Pytorch,MXNet)可以采用相同格式存儲(chǔ)模型數(shù)據(jù)并交互。04ONNX簡(jiǎn)介ONNX的規(guī)范及代碼主要由微軟,亞馬遜,F(xiàn)acebook和IBM等公司共同開發(fā),以開放源代碼的方式托管在Github上。04ONNX簡(jiǎn)介目前官方支持加載ONNX模型并進(jìn)行推理的深度學(xué)習(xí)框架有:Caffe2,PyTorch,MXNet,ML.NET,Tensor和MicrosoftCNTK,并且TensorFlow也非官方的支持ONNX。04ONNX簡(jiǎn)介假設(shè)一個(gè)場(chǎng)景:現(xiàn)在某組織因?yàn)橹饕_發(fā)用TensorFlow為基礎(chǔ)的框架,現(xiàn)在有一個(gè)深度算法,需要將其部署在移動(dòng)設(shè)備上,以觀測(cè)變現(xiàn)。傳統(tǒng)地我們需要用caffe2重新將模型寫好,然后再訓(xùn)練參數(shù);試想下這將是一個(gè)多么耗時(shí)耗力的過程。04ONNX簡(jiǎn)介此時(shí),ONNX便應(yīng)運(yùn)而生,Caffe2,PyTorch,MicrosoftCognitiveToolkit,ApacheMXNet等主流框架都對(duì)ONNX有著不同程度的支持。這就便于了我們的算法及模型在不同的框架之間的遷移。04ONNX簡(jiǎn)介開放式神經(jīng)網(wǎng)絡(luò)交換(ONNX)是邁向開放式生態(tài)系統(tǒng)的第一步,它使AI開發(fā)人員能夠隨著項(xiàng)目的發(fā)展選擇合適的工具04ONNX簡(jiǎn)介
ONNX為AI模型提供開源格式。它定義了可擴(kuò)展的計(jì)算圖模型,以及內(nèi)置運(yùn)算符和標(biāo)準(zhǔn)數(shù)據(jù)類型的定義。04ONNX簡(jiǎn)介ONNX解釋計(jì)算圖的可移植,它使用graph的序列化格式。它不一定是框架選擇在內(nèi)部使用和操作計(jì)算的形式。例如,如果在優(yōu)化過程中操作更有效,則實(shí)現(xiàn)可以在存儲(chǔ)器中以不同方式表示模型。轉(zhuǎn)rknn模型文件的意義204知識(shí)儲(chǔ)備ONNX簡(jiǎn)介133模型部署邊緣計(jì)算404轉(zhuǎn)rknn模型文件的意義上一節(jié),有提到,onnx模型文件格式是只是一個(gè)過渡格式,其主要目的是將其他框架的模型文件轉(zhuǎn)成目標(biāo)模型文件。04轉(zhuǎn)rknn模型文件的意義在這里就是要將Pytorch模型文件轉(zhuǎn)換成rknn這個(gè)目標(biāo)模型文件。而轉(zhuǎn)成rknn模型文件的意義在于與AI邊緣計(jì)算終端結(jié)合04轉(zhuǎn)rknn模型文件的意義將rknn模型文件部署到終端上,利用AI邊緣終端的高速NPU處理能力來(lái)進(jìn)行推理,進(jìn)而實(shí)現(xiàn)實(shí)際場(chǎng)景化的應(yīng)用。轉(zhuǎn)rknn模型文件的意義204知識(shí)儲(chǔ)備ONNX簡(jiǎn)介133模型部署邊緣計(jì)算404模型部署模型訓(xùn)練重點(diǎn)關(guān)注的是如何通過訓(xùn)練策略來(lái)得到一個(gè)性能更好的模型,其過程似乎包含著各種“玄學(xué)”,被戲稱為“煉丹”。整個(gè)流程包含從訓(xùn)練樣本的獲?。ò〝?shù)據(jù)采集與標(biāo)注),模型結(jié)構(gòu)的確定,損失函數(shù)和評(píng)價(jià)指標(biāo)的確定,到模型參數(shù)的訓(xùn)練,這部分更多是業(yè)務(wù)方去承接相關(guān)工作。一旦“煉丹”完成(即訓(xùn)練得到了一個(gè)指標(biāo)不錯(cuò)的模型),如何將這顆“丹藥”賦能到實(shí)際業(yè)務(wù)中,充分發(fā)揮其能力,這就是部署方需要承接的工作。04模型部署云端部署常見的模式是模型部署在云端服務(wù)器,用戶通過網(wǎng)頁(yè)訪問或者API接口調(diào)用等形式向云端服務(wù)器發(fā)出請(qǐng)求,云端收到請(qǐng)求后處理并返回結(jié)果。邊緣部署則主要用于嵌入式設(shè)備,主要通過將模型打包封裝到SDK,集成到嵌入式設(shè)備,數(shù)據(jù)的處理和模型推理都在終端設(shè)備上執(zhí)行。如何對(duì)應(yīng)兩種場(chǎng)景去合理部署我們的模型呢?04模型部署針對(duì)上面提到的兩種場(chǎng)景,分別有兩種不同的部署方案,Service部署和SDK部署。04模型部署Service部署:主要用于中心服務(wù)器云端部署,一般直接以訓(xùn)練的引擎庫(kù)作為推理服務(wù)模式。04模型部署SDK部署:主要用于嵌入式端部署場(chǎng)景,以C++等語(yǔ)言實(shí)現(xiàn)一套高效的前后處理和推理引擎庫(kù)(高效推理模式下的Operation/Layer/Module的實(shí)現(xiàn)),用于提供高性能推理能力。此種方式一般需要考慮模型轉(zhuǎn)換(動(dòng)態(tài)圖靜態(tài)化)、模型聯(lián)合編譯等進(jìn)行深度優(yōu)化。04模型部署SDK部署與Service部署的對(duì)比04模型部署部署的核心目標(biāo)是合理把控成本、功耗、性價(jià)比三大要素。成本問題是部署硬件的重中之重,AI模型部署到硬件上的成本將極大限制用戶的業(yè)務(wù)承受能力。成本問題主要聚焦于芯片的選型,比如,對(duì)比寒武紀(jì)MLU220和MLU270,MLU270主要用作數(shù)據(jù)中心級(jí)的加速卡,其算力和功耗都相對(duì)于邊緣端的人工智能加速卡MLU220要低。至于Nvida推出的Jetson和TeslaT4也是類似思路,TeslaT4是主打數(shù)據(jù)中心的推理加速卡,而Jetson則是嵌入式設(shè)備的加速卡。轉(zhuǎn)rknn模型文件的意義204知識(shí)儲(chǔ)備ONNX簡(jiǎn)介133模型部署邊緣計(jì)算4邊緣計(jì)算04思考一下,邊緣計(jì)算與云計(jì)算相比優(yōu)勢(shì)在哪里?邊緣計(jì)算是將計(jì)算任務(wù)部署到靠近物或數(shù)據(jù)源頭的網(wǎng)絡(luò)邊緣側(cè)的設(shè)備上,融合網(wǎng)絡(luò)、計(jì)算、存儲(chǔ)、應(yīng)用核心能力的分布式開放平臺(tái),就近提供邊緣智能服務(wù)。邊緣網(wǎng)關(guān)04邊緣網(wǎng)關(guān)是部署在網(wǎng)絡(luò)邊緣側(cè)的網(wǎng)關(guān),通過網(wǎng)絡(luò)聯(lián)接、協(xié)議轉(zhuǎn)換等功能聯(lián)接物理和數(shù)字世界,提供輕量化的聯(lián)接管理、實(shí)時(shí)數(shù)據(jù)分析及應(yīng)用管理功能。數(shù)據(jù)優(yōu)化敏捷連接實(shí)時(shí)響應(yīng)智能分析減少流量邊緣網(wǎng)關(guān)擁有強(qiáng)勁的邊緣計(jì)算能力職業(yè)能力目標(biāo)01任務(wù)描述與要求02任務(wù)分析與計(jì)劃03知識(shí)儲(chǔ)備04任務(wù)實(shí)施05任務(wù)檢查與評(píng)價(jià)06任務(wù)小結(jié)07任務(wù)拓展08
ONNX模型文件轉(zhuǎn)RKNN模型文件05任務(wù)實(shí)施onnx模型文件轉(zhuǎn)rknn模型文件1部署到AI邊緣開發(fā)板2onnx模型文件轉(zhuǎn)rknn模型文件05搭建環(huán)境在RK3399Pro板子上,官方有提供rknn_toolkit-1.7.1-cp36-cp36m-linux_x86_64.whl的pip安裝包;這個(gè)軟件包,就是用來(lái)轉(zhuǎn)換模型,加載模型,推理模型等等,但目前Linux版本只能支持python3.6的版本,最新安裝包的版本,可以根據(jù)官方地址進(jìn)行下載
onnx模型文件轉(zhuǎn)rknn模型文件05搭建環(huán)境在虛擬環(huán)境下,安裝依賴包,轉(zhuǎn)換成rknn模型主要依賴一下幾個(gè)包:? rknn_toolkit-1.7.1-cp36-cp36m-linux_x86_64.whl? torch==1.9.0? torchaudio==0.9.0? torchvision==0.10.0? tensorflow==2.1.0? numpy==1.19.5onnx模型文件轉(zhuǎn)rknn模型文件05轉(zhuǎn)換模型利用rknn_toolkit工具將onnx模型文件轉(zhuǎn)換成rknn模型文件,基本轉(zhuǎn)換流程為:onnx模型文件轉(zhuǎn)rknn模型文件05轉(zhuǎn)換模型為了后面部署方便,把上一節(jié)的onnx模型文件拷貝到y(tǒng)olov5/rknn/models/下面,然后再進(jìn)行轉(zhuǎn)換,轉(zhuǎn)換完成后,將yolov5/rknn/目錄打包下來(lái),上傳到開發(fā)板上importosimportsysimportnumpyasnpfromrknn.apiimportRKNN初始化rknnSDK環(huán)境rknn=RKNN(verbose=True,verbose_file=None)? verbose指定是否要在屏幕上打印詳細(xì)日志信息;默認(rèn)False不打印,? verbose_file調(diào)試信息指定轉(zhuǎn)儲(chǔ)到文件路徑,默認(rèn)為None。如果設(shè)置了verbose_file參數(shù),且verbose參數(shù)值為True,日志信息還將寫到該參數(shù)指定的文件中onnx模型文件轉(zhuǎn)rknn模型文件05轉(zhuǎn)換模型調(diào)用config接口設(shè)置模型的預(yù)處理參數(shù)rknn.config(reorder_channel='012',
mean_values=[[0,0,0]],
std_values=[[255,255,255]],
optimization_level=3,
target_platform='rk3399pro',
output_optimize=1,
quantize_input_node=True)onnx模型文件轉(zhuǎn)rknn模型文件05轉(zhuǎn)換模型調(diào)用load_onnx接口,加載原始的onnx模型文件ret=rknn.load_onnx(model='./yolov5/rknn/models/best.onnx',outputs=['378','439','500'])onnx模型文件轉(zhuǎn)rknn模型文件05轉(zhuǎn)換模型調(diào)用build接口,依照加載的模型結(jié)構(gòu)及權(quán)重?cái)?shù)據(jù),構(gòu)建對(duì)應(yīng)的RKNN模型。ret=rknn.build(do_quantization=True,dataset=‘./rknn/dataset.txt’,pre_compile=False,rknn_batch_size=1)onnx模型文件轉(zhuǎn)rknn模型文件05轉(zhuǎn)換模型調(diào)用export_rknn接口,將RKNN模型文件保存到指定文件路徑中(.rknn后綴)。ret=rknn.export_rknn('./rknn/models/best.rknn')onnx模型文件轉(zhuǎn)rknn模型文件05運(yùn)行RKNN模型運(yùn)行RKNN模型時(shí),用戶不需要設(shè)置模型預(yù)處理參數(shù),也不需要構(gòu)建RKNN模型其使用流程如右圖所示:onnx模型文件轉(zhuǎn)rknn模型文件05創(chuàng)建RKNN對(duì)象,以初始化RKNNSDK環(huán)境(前面已經(jīng)有創(chuàng)建過,可以忽略,具體說明參照2.2.1)importosimportsysimportnumpyasnpfromrknn.apiimportRKNNrknn=RKNN(verbose=True)調(diào)用load_rknn接口,加載RKNN模型,參數(shù)load_model_in_npu通常默認(rèn)就行ret=rknn.load_rknn(path,load_model_in_npu=False)onnx模型文件轉(zhuǎn)rknn模型文件05預(yù)編譯rknn模型離線預(yù)編譯(推薦)在線預(yù)編譯(不推薦)同樣,RKNNToolkit也提供在線編譯的接口:export_rknn_precompile_model。使用該接口,可以將普通RKNN模型轉(zhuǎn)成預(yù)編譯模型,但這個(gè)模型需要有硬件的配合。構(gòu)建RKNN模型時(shí),可以指定預(yù)編譯選項(xiàng)以導(dǎo)出預(yù)編譯模型,這被稱為離線編譯。離線預(yù)編譯在之前有介紹過,就是在轉(zhuǎn)換模型的時(shí)候,構(gòu)建模型的接口上,加參數(shù)pre_compile=Trueonnx模型文件轉(zhuǎn)rknn模型文件05預(yù)測(cè)rknn模型利用預(yù)測(cè)腳本rknn_detect_yolov5.py對(duì)生成的rknn模型進(jìn)行預(yù)測(cè)。如果在模擬器上(本機(jī))進(jìn)行預(yù)測(cè),則導(dǎo)出的模型時(shí),不能開啟預(yù)編譯(pre_compile)的開關(guān),否則無(wú)法進(jìn)行預(yù)測(cè),預(yù)編譯模型只能在硬件平臺(tái)進(jìn)行預(yù)測(cè)。根據(jù)實(shí)際轉(zhuǎn)換后的模型,修改以下內(nèi)容,進(jìn)行預(yù)測(cè):修改腳本中,自己的模型路徑修改腳本中,要檢測(cè)的圖片路徑設(shè)置檢測(cè)結(jié)果保存的圖片路徑注意:
每一次運(yùn)行預(yù)測(cè)模型時(shí),需要重啟一下內(nèi)核,以免緩存干擾05任務(wù)實(shí)施onnx模型文件轉(zhuǎn)rknn模型文件1部署到AI邊緣開發(fā)板2部署到AI邊緣開發(fā)板05部署步驟如下:(1)將模型(比如:yolov5.rknn),預(yù)測(cè)腳本(rknn_detect_yolov5.py),以及要測(cè)試的圖片下載到本地;(2)在AI邊緣開發(fā)板上,創(chuàng)建一個(gè)項(xiàng)目目錄(比如:test_rknn),并將rknn_detect_yolov5.py、./models/best.rknn、bus.jpg上傳至該目錄;mkdirtest_rknn為了提高模型的加載速度,建議采用預(yù)編譯后的模型(非預(yù)編譯模型也可以),部署到開發(fā)板當(dāng)中。部署到AI邊緣開發(fā)板05(3)修改rknn_detect_yolov5.py腳本,將腳本中,模型路徑,需要檢測(cè)的圖片路徑,結(jié)果圖片保存路徑改為當(dāng)前目錄;(4)將模型,預(yù)測(cè)腳本,測(cè)試圖片上傳到開發(fā)板項(xiàng)目目錄中,運(yùn)行命令sudopython3rknn_detect_yolov5.py即可;部署到AI邊緣開發(fā)板05(5)查看使用NPU進(jìn)行加速的RKNN模型的推理結(jié)果。職業(yè)能力目標(biāo)01任務(wù)描述與要求02任務(wù)分析與計(jì)劃03知識(shí)儲(chǔ)備04任務(wù)實(shí)施05任務(wù)檢查與評(píng)價(jià)06任務(wù)小結(jié)07任務(wù)拓展08
ONNX模型文件轉(zhuǎn)RKNN模型文件任務(wù)檢查與評(píng)價(jià)061、請(qǐng)參照評(píng)價(jià)標(biāo)準(zhǔn)完成自評(píng)和對(duì)其他小組的互評(píng)。2、各組請(qǐng)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 化妝學(xué)校合同范本
- 包車居間服務(wù)合同范本
- 鄉(xiāng)村園林出售合同范本
- 別墅大門購(gòu)買合同范本
- 醫(yī)療旅行合同范本
- 倉(cāng)庫(kù)分租協(xié)議合同范例
- 分包非標(biāo)工程合同范本
- 勞動(dòng)配送合同范本
- 上牌購(gòu)車合同范本
- 公寓欄桿維修合同范本
- 2024 河北公務(wù)員考試(筆試、省直、A類、C類)4套真題及答案
- 廈門2025年福建廈門市公安文職人員服務(wù)中心招聘17人筆試歷年參考題庫(kù)附帶答案詳解
- 2025年高三歷史教學(xué)工作計(jì)劃
- 《職業(yè)性肌肉骨骼疾患的工效學(xué)預(yù)防指南 》
- 不同產(chǎn)地筠連紅茶風(fēng)味化學(xué)成分差異分析
- DB50 577-2015 汽車整車制造表面涂裝大氣污染物排放標(biāo)準(zhǔn)
- 生態(tài)安全課件
- 消防風(fēng)道風(fēng)管施工方案
- 大學(xué)英語(yǔ)(西安歐亞學(xué)院)知到智慧樹章節(jié)測(cè)試課后答案2024年秋西安歐亞學(xué)院
- 人教版高中英語(yǔ)挖掘文本深度學(xué)習(xí)-選修四-UNIT-2-(答案版)
- 八下冀教版英語(yǔ)單詞表
評(píng)論
0/150
提交評(píng)論