




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
基于TensorFlow的圖像上色模型部署邊緣智能計算應用TensorFlow模型轉(zhuǎn)RKNN模型并進行預測邊緣智能計算應用職業(yè)能力目標01任務描述與要求02任務分析與計劃03知識儲備04任務實施05任務檢查與評價06任務小結07任務拓展08
TensorFlow模型轉(zhuǎn)RKNN模型并進行預測了解TensorFlow和rknn的相關知識了解TensorFlow模型轉(zhuǎn)rknn模型的意義掌握如何將TensorFlow模型轉(zhuǎn)成rknn模型掌握如何使用rknn模型進行預測掌握將rknn模型部署到AI邊緣開發(fā)板并進行預測職業(yè)能力目標01知識目標技能目標職業(yè)能力目標01任務描述與要求02任務分析與計劃03知識儲備04任務實施05任務檢查與評價06任務小結07任務拓展08
TensorFlow模型轉(zhuǎn)RKNN模型并進行預測
此任務的主要內(nèi)容是了解TensorFlow模型轉(zhuǎn)換成rknn模型流程,通過代碼將TensorFlow模型轉(zhuǎn)換成rknn模型,并使用rknn模型進行預測。任務描述任務要求完成TensorFlow模型轉(zhuǎn)rknn模型;完成部署到AI邊緣開發(fā)板。任務描述與要求02職業(yè)能力目標01任務描述與要求02任務分析與計劃03知識儲備04任務實施05任務檢查與評價06任務小結07任務拓展08
TensorFlow模型轉(zhuǎn)RKNN模型并進行預測任務分析什么時rknn模型,為什么要將TensorFlow模型轉(zhuǎn)rknn模型?如何將TensorFlow模型轉(zhuǎn)rknn模型任務分析與計劃03任務計劃表項目名稱基于TensorFlow的圖像上色模型部署任務名稱TensorFlow模型轉(zhuǎn)RKNN模型并進行預測計劃方式自主設計計劃要求請用8個計劃步驟來完整描述出如何完成本次任務序號任務計劃1
2
3
45678通過上面的思考,你是否對本任務要完成的工作有所了解?讓我們一起來制訂完成本次任務的實施計劃吧!任務分析與計劃03職業(yè)能力目標01任務描述與要求02任務分析與計劃03知識儲備04任務實施05任務檢查與評價06任務小結07任務拓展08
TensorFlow模型轉(zhuǎn)RKNN模型并進行預測TensorFlow模型轉(zhuǎn)rknn模型的意義204知識儲備初識RKNN104初識RKNNRKNN是Rockchipnpu平臺使用的模型類型,以.rknn后綴結尾的模型文件。Rockchip提供了完整了模型轉(zhuǎn)換Python工具,方便用戶將自主研發(fā)的算法模型轉(zhuǎn)換成RKNN模型,同時Rockchip也提供了C/C++和PythonAPI接口。RKNN-Toolkit04初識RKNNRKNN-Toolkit是為用戶提供在PC、RockchipNPU平臺上進行模型轉(zhuǎn)換、推理和性能評估的開發(fā)套件,用戶通過該工具提供的Python接口可以便捷地完成以下功能:模型轉(zhuǎn)換,量化功能,模型推理,性能評估,內(nèi)存評估,模型預編譯,模型分段,自定義算子功能,量化精度分析功能,可視化功能,模型優(yōu)化等級功能,模型加密功能。RKNN-Toolkit04初識RKNNWindows只提供Python3.6的安裝包。MacOS提供python3.6和python3.7的安裝包。ARM64平臺(安裝Debian9或10操作系統(tǒng))提供Python3.5(Debain9)和Python3.7(Debian10)的安裝包。因為PyTorch/TensorFlow等逐漸停止對Python3.5的支持,RKNN-Toolkit下一個大版本將移除Linuxx86平臺上Python3.5的安裝包,轉(zhuǎn)而提供Python3.6和Python3.7的安裝包。除MacOS平臺外,其他平臺的scipy依賴為>=1.1.0。ARM64平臺不需要依賴sklearn和opencv-python。Jinja2只在使用自定義OP時用到。RKNN-Toolkit04初識RKNNRKNN-Toolkit是一個跨平臺的開發(fā)套件,已支持的操作系統(tǒng)如下:(1.7.1版本toolkit)Ubuntu:16.04(x64)及以上Windows:7(x64)及以上MacOS:10.13.5(x64)及以上Debian:9.8(aarch64)及以上RKNN-Toolkit04初識RKNN模型轉(zhuǎn)換:支持Caffe、TensorFlow、TensorFlowLite、ONNX、Darknet、Pytorch、MXNet模型轉(zhuǎn)成RKNN模型,支持RKNN模型導入導出,后續(xù)能夠在RockchipNPU平臺上加載使用。從1.2.0版本開始支持多輸入模型。從1.3.0版本開始支持Pytorch和MXNet。TensorFlow模型轉(zhuǎn)rknn模型的意義204知識儲備初識RKNN1TensorFlow模型轉(zhuǎn)rknn模型04將TensorFlow模型轉(zhuǎn)換成rknn目標模型的意義在于與AI邊緣計算終端結合。TensorFlow模型轉(zhuǎn)rknn模型04將rknn模型部署到終端上,利用AI邊緣終端的高速NPU處理能力來進行推理,進而實現(xiàn)實際場景化的應用。TensorFlow模型轉(zhuǎn)rknn模型04真實場景中,可以利用高算力設備,實現(xiàn)圖像彩色化實時運行,在醫(yī)療,遙感,航天等各個領域,可以實時觀測彩色化的圖像,增強其可視化效果,增強信息量。職業(yè)能力目標01任務描述與要求02任務分析與計劃03知識儲備04任務實施05任務檢查與評價06任務小結07任務拓展08
TensorFlow模型轉(zhuǎn)RKNN模型并進行預測部署到AI邊緣開發(fā)板204知識儲備TensorFlow模型轉(zhuǎn)rknn模型11轉(zhuǎn)換模型2運行RKNN模型3預編譯rknn模型05轉(zhuǎn)換模型05利用rknn_toolkit講tensorflow模型轉(zhuǎn)換成rknn模型,基本轉(zhuǎn)換流程為:注解:以上步驟請按順序執(zhí)行。藍色框標注的步驟導出的RKNN模型可以通過load_keras接口導入并使用。紅色框標注的模型推理、性能評估和內(nèi)存評估的步驟先后順序不固定,根據(jù)實際使用情況決定。只有當目標平臺是開發(fā)板時,才可以調(diào)用eval_memory接口獲取內(nèi)存使用情況。轉(zhuǎn)換模型05!python36-mpipinstallnumpymatplotlibtensorflow==2.1.0./packages/rknn_toolkit-1.7.1-cp36-cp36m-linux_x86_64.whl--ignore-installed-i/simple/1環(huán)境配置與安裝安裝環(huán)境importosimportsysimportnumpyasnpfromrknn.apiimportRKNN引入必要的環(huán)境轉(zhuǎn)換模型05rknn=RKNN(verbose=True,verbose_file=None)2創(chuàng)建RKNN對象初始化rknnSDK環(huán)境verbose
指定是否要在屏幕上打印詳細日志信息;默認False不打印,verbose_file
調(diào)試信息指定轉(zhuǎn)儲到文件路徑,默認為None。如果設置了verbose_file參數(shù),且verbose參數(shù)值為True,日志信息還將寫到該參數(shù)指定的文件中轉(zhuǎn)換模型05rknn.config(mean_values=[[0,0,0]],std_values=[[255,255,255]],reorder_channel='012',target_platform='rk3399pro',output_optimize=1)3設置模型預處理參數(shù)調(diào)用config接口設置模型的預處理參數(shù)轉(zhuǎn)換模型05ret=rknn.load_keras(model,convert_engine='Keras’)ret=rknn.load_keras(model='./models/model.h5')print(ret)4加載原始模型調(diào)用load_keras接口,加載原始的h5模型主要參數(shù)說明:model:h5模型文件(.h5后綴)所在的路徑convert_engine:按順序使用指定引擎轉(zhuǎn)換,支持引擎包含[Keras,TFLite],默認為Keras。返回值:0表示導入成功,-1表示導入失敗轉(zhuǎn)換模型05ret=rknn.build(do_quantization=True,dataset='./rknn/dataset.txt',pre_compile=False,rknn_batch_size=1)5構建RKNN模型調(diào)用build接口,依照加載的模型結構及權重數(shù)據(jù),構建對應的RKNN模型。主要參數(shù)說明:do_quantization:是否對模型進行量化,值為True或False。dataset:量化校正數(shù)據(jù)的數(shù)據(jù)集。目前支持文本文件格式,用戶可以把用于校正的圖片(jpg或png格式)或
npy文件路徑放到一個.txt文件中。轉(zhuǎn)換模型055構建RKNN模型文本文件里每一行一條路徑信息。如:如有多個輸入,則每個輸入對應的文件用空格隔開,如:a.jpga2.jpg轉(zhuǎn)換模型055構建RKNN模型pre_compile:預編譯開關,如果設置成True,可以減小模型大小,及模型在硬件設備上的首次啟動速度。但是打開這個開關后,構建出來的模型就只能在硬件平臺上運行,無法通過模擬器進行推理或性能評估。如果硬件有更新,則對應的模型要重新構建。注意事項:1.該選項不能在RK3399ProLinux開發(fā)板/WindowsPC/MacOSXPC上使用。2.RKNN-Toolkit-V1.0.0及以上版本生成的預編譯模型不能在NPU驅(qū)動版本小于0.9.6的設備上運行;RKNN-Toolkit-V1.0.0以前版本生成的預編譯模型不能在NPU驅(qū)動版本大于等于0.9.6的設備上運行。
驅(qū)動版本號可以通過get_sdk_version接口查詢。3.如果多個輸入,該選項需要設置成False。轉(zhuǎn)換模型055構建RKNN模型rknn_batch_size:模型的輸入Batch參數(shù)調(diào)整,默認值為1。如果大于1,則可以在一次推理中同時推理多幀輸入圖像或輸入數(shù)據(jù),如MobileNet模型的原始input維度為[1,224,224,3],output維度為[1,1001],當rknn_batch_size設為4時,input的維度變?yōu)閇4,224,224,3],output維度變?yōu)閇4,1001]。注意事項:1.rknn_batch_size的調(diào)整并不會提高一般模型在NPU上的執(zhí)行性能,但卻會顯著增加內(nèi)存消耗以及增加單幀的延遲。2.rknn_batch_size的調(diào)整可以降低超小模型在CPU上的消耗,提高超小模型的平均幀率。(適用于模型太小,CPU的開銷大于NPU的開銷)。3.rknn_batch_size的值建議小于32,避免內(nèi)存占用太大而導致推理失敗。4.rknn_batch_size修改后,模型的input/output維度會被修改,使用inference推理模型時需要設置相應的input的大小,后處理時,
也需要對返回的outputs進行處理。返回值:0表示構建成功,-1表示構建失敗轉(zhuǎn)換模型05ret=rknn.export_rknn('./rknn/models/best.rknn')6導出RKNN模型調(diào)用export_rknn接口,將RKNN模型保存到指定文件中(.rknn后綴)。主要參數(shù)說明:export_path:導出模型文件的路徑。返回值:0表示導出成功,-1表示導出失敗1轉(zhuǎn)換模型2運行RKNN模型3預編譯rknn模型05運行RKNN模型05運行RKNN模型時,用戶不需要設置模型預處理參數(shù),也不需要構建RKNN模型,其使用流程如下圖所示:注意事項:1、
以上步驟請按順序執(zhí)行。2、
紅色框標注的模型推理、性能評估和內(nèi)存評估的步驟先后順序不固定,根據(jù)實際使用情況決定。3、
調(diào)用eval_memory接口獲取內(nèi)存使用情況時,模型必須運行在硬件平臺上。運行RKNN模型05rknn=RKNN(verbose=True)1創(chuàng)建RKNN對象創(chuàng)建RKNN對象,以初始化RKNNSDK環(huán)境運行RKNN模型05ret=rknn.load_rknn(path,load_model_in_npu=False)2加載RKNN模型調(diào)用load_rknn接口,加載RKNN模型,參數(shù)load_model_in_npu通常默認就行主要的參數(shù)說明:path:RKNN模型文件路徑。load_model_in_npu:是否直接加載npu中的rknn模型。其中path為rknn模型在npu中的路徑。只有當RKNN-Toolkit運行在運行在RK3399ProLinux開發(fā)板或連有開發(fā)板或連有NPU設備設備的的PC上時才可以設為上時才可以設為True。默認值為False。返回值:0表示加載成功,-1表示加載失敗ret=rknn.load_rknn('./quantization/model.rknn’)print(ret)運行RKNN模型05ret=rknn.init_runtime(target=None,device_id=None,perf_debug=False,eval_mem=False,async_mode=False)3初始化運行時環(huán)境調(diào)用init_runtime接口,初始化運行時環(huán)境。在模型推理或性能評估之前,必須先初始化運行時環(huán)境,明確模型在的運行平臺(具體的目標硬件平臺或軟件模擬器),以及性能評估時是否啟用debug模式,以獲取更詳細的性能信息等。返回值:0表示初始化運行時環(huán)境成功,-1表示初始化運行時環(huán)境失敗。ret=rknn.init_runtime()
print(ret)運行RKNN模型054模型推理,性能評估,獲取內(nèi)存使用情況模型推理,模型性能評估,獲取模型的內(nèi)存使用情況,這三個并沒有哪個先后,都可以執(zhí)行。比較常用到的就是模型推理,因為現(xiàn)實當中,更需要的是模型推理出來的結果,比如目標檢測的結果類別是什么,在圖片上的位置信息等等運行RKNN模型054模型推理,性能評估,獲取內(nèi)存使用情況對當前模型進行推理,返回推理結果。推理結果只是一個numpy數(shù)組列表,這列表還需要我們進一步分析才能等到相對應的現(xiàn)實結果如果RKNN-Toolkit運行在PC上,且初始化運行環(huán)境時設置target為RockchipNPU設備
,得到的是模型在硬件平臺上的推理結果。如果RKNN-Toolkit運行在PC上,且初始化運行環(huán)境時沒有設置target,得到的是模型在模擬器上的推理結果。模擬器可以模擬哪款芯片,取決于RKNN模型target參數(shù)值。如果RKNN-Toolkit運行在RK3399ProLinux開發(fā)板上,得到的是模型在實際硬件上的推理結果。模型推理運行RKNN模型054模型推理,性能評估,獲取內(nèi)存使用情況模型推理results=rknn.inference(inputs=[img])主要的參數(shù)說明:inputs:待推理的輸入,比如,經(jīng)過cv2處理的圖片。格式是ndarraylist。data_type:輸入數(shù)據(jù)的類型,可填以下值
:float32,float16,int8,uint8,int16。默認值為uint8。data_format:數(shù)據(jù)模式,可以填以下值:nchw,nhwc。默認值為nhwc。這兩個的不同之處在于channel放置的位置。inputs_pass_through:將輸入透傳給NPU驅(qū)動。非透傳模式下,在將輸入傳給NPU驅(qū)動之前,工具會對輸入進行減均值、除方差等操作;而透傳模式下,不會做這些操作。這個參數(shù)的值是一個數(shù)組,比如要透傳input0,不透徹input1,則這個參數(shù)的值為[1,0]。默認值為None,即對所有輸入都不透傳。返回值:results為推理結果,類型是ndarraylist。運行RKNN模型054模型推理,性能評估,獲取內(nèi)存使用情況模型推理importutilsimportmatplotlib.pyplotasplt定義一個函數(shù),用于將tensorflow的tensor類型轉(zhuǎn)換成numpyarray類型importtensorflowastfdeftensor2numpy(data):sess=pat.v1.Session()sess.run(pat.v1.global_variables_initializer())data_numpy=data.eval(session=sess)returndata_numpy定義一個函數(shù),實現(xiàn)讀取圖片數(shù)據(jù)并使用RKNN模型進行預測及展示運行RKNN模型054模型推理,性能評估,獲取內(nèi)存使用情況模型性能評估通過評估模型性能,來決定是否采用這個模型。當然,在不同的平臺上,評估模型性能的結果也是不一樣的。比如:模型運行在PC上初始化運行環(huán)境時不指定target,得到的是模型在模擬器上運行的性能數(shù)據(jù),包含逐層的運行時間及模型完整運行一次需要的時間。模擬器可以模擬RK1808,也可以模擬RV1126,具體模擬哪款芯片,取決于RKNN模型的target_platform參數(shù)值
。模型運行在與PC連接的RockchipNPU上,且初始化運行環(huán)境時設置perf_debug為False,則獲得的是模型在硬件上運行的總時間;如果設置perf_debug為True,除了返回總時間外,還將返回每一層的耗時情況。模型運行在RK3399ProLinux開發(fā)板上時,如果初始化運行環(huán)境時設置perf_debug為False,獲得的也是模型在硬件上運行的總時間;如果設置perf_debug為True,返回總時間及每一層的耗時情況。運行RKNN模型054模型推理,性能評估,獲取內(nèi)存使用情況模型性能評估調(diào)用eval_perf接口,來評估模型性能。主要參數(shù)說明:inputs:類型為ndarraylist的輸入,在1.3.1之后的版本是非必須的is_print:是否格式化打印結果返回值:返回一個字典類型的評估結果perf_result:性能信息。類型為字典。在硬件平臺上運行,且初始運行環(huán)境時設置perf_debug為False時,得到的字典只有一個字段’total_time’,示例如下{‘total_time’:1000}運行RKNN模型054模型推理,性能評估,獲取內(nèi)存使用情況模型性能評估其他場景下,得到的性能信息字典多一個’layers’字段,這個字段的值也是一個字典,這個字典以每一層的ID作為key,其值是一個包含’name’(層名)、’operation’(操作符,只有運行在硬件平臺上時才有這個字段)、’time’(該層耗時)等信息的字典。舉例如下運行RKNN模型05{'total_time',4568,'layers',{'0':{'name':'convolution.relu.pooling.layer2_2','operation':'CONVOLUTION','time',362}'1':{'name':'convolution.relu.pooling.layer2_2','operation':'CONVOLUTION','time',158}}}image_to_predict_lab=utils.get_l_ab_channels("data/test/test.jpg")image_to_predict=tf.expand_dims(image_to_predict_lab[0],0)image_pre=tensor2numpy(image_to_predict)#results=rknn.inference(inputs=image_pre)performance_result=rknn.eval_perf(inputs=image_pre,is_print=True)print(performance_result)rknn.release()運行RKNN模型054模型推理,性能評估,獲取內(nèi)存使用情況獲取內(nèi)存使用情況獲取模型在硬件平臺運行時的內(nèi)存使用情況。(模型必須運行在與PC連接的RockchipNPU設備上,或直接運行在RK3399ProLinux開發(fā)板上時才可查看內(nèi)存使用情況)注意:使用該功能時,對應的驅(qū)動版本必須要大于等于0.9.4。驅(qū)動版本可以通過get_sdk_version接口查詢。運行RKNN模型054模型推理,性能評估,獲取內(nèi)存使用情況獲取內(nèi)存使用情況主要參數(shù)說明:is_print:是否以規(guī)范格式打印內(nèi)存使用情況。默認值為True。返回值:返回memory_detail內(nèi)存使用情況。類型為字典。內(nèi)存使用情況按照下面的格式封裝在字典中:
{'system_memory',{
'maximum_allocation':128000000,
'total_allocation':152000000
},
'npu_memory',{
'maximum_allocation':30000000,
'total_allocation':40000000
},
'total_memory',{
'maximum_allocation':158000000,
'total_allocation':192000000
}}運行RKNN模型054模型推理,性能評估,獲取內(nèi)存使用情況獲取內(nèi)存使用情況主要參數(shù)說明:system_memory:字段表示系統(tǒng)內(nèi)存占用。npu_memory:表示NPU內(nèi)部內(nèi)存的使用情況。#memory_detail=rknn.eval_memory(is_print=True)
#print(memory_detail)
1轉(zhuǎn)換模型2運行RKNN模型3預編譯rknn模型05預編譯rknn模型05離線預編譯(推薦)構建RKNN模型時,可以指定預編譯選項以導出預編譯模型,這被稱為離線編譯。離線預編譯在之前有介紹過,就是在轉(zhuǎn)換模型的時候,構建模型的接口上,加參數(shù)pre_compile=True注意:在使用預編譯的時候,請重啟內(nèi)核,避免緩存干擾
預編譯rknn模型05在線預編譯(不推薦)同樣,RKNNToolkit也提供在線編譯的接口:export_rknn_precompile_model。使用該接口,可以將普通RKNN模型轉(zhuǎn)成預編譯模型,但這個模型需要有硬件的配合注意:使用該接口前必須先調(diào)用load_rknn接口加載普通rknn模型;使用該接口前必須調(diào)用init_runtime接口初始化模型運行環(huán)境,target必須是RKNPU設備,不能是模擬器;而且要設置參數(shù)為True。接口說明:ret=rknn.export_rknn_precompile_model()export_path:導出模型路徑。必填參數(shù)。返回值:0是成功,-1是失敗
部署到AI邊緣開發(fā)板204知識儲備TensorFlow模型轉(zhuǎn)rknn模型1部署到AI邊緣開發(fā)板05為了提高模型的加載速度,建議采用預編譯后的模型(非預編譯模型也可以),部署到開發(fā)板當中。部署到AI邊緣開發(fā)板05部署步驟如下:(1)將模型(比如:model.rknn),預測腳本(rknn_demo.py),以及要測試的圖片下載到本地;(2
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 借款 民間借貸 合同范本
- 任意健身合同范本
- 醫(yī)院吊頂合同范本
- 醫(yī)師合同范本
- 獸醫(yī)聘用勞動合同范本
- 關于按揭車合同范本
- 個人租賃司機合同范本
- 出口業(yè)務合同范本
- 免租期補充合同范本
- 買賣小區(qū)用地合同范本
- 八年級數(shù)學下冊同步練習(全冊)
- 機房工程機房建設驗收報告
- 安全生產(chǎn)條件核查表
- 冀教版六年級下冊數(shù)學全冊教案完整版教學設計(含教材分析、教學計劃及進度表)
- GB/T 2951.21-2008電纜和光纜絕緣和護套材料通用試驗方法第21部分:彈性體混合料專用試驗方法-耐臭氧試驗-熱延伸試驗-浸礦物油試驗
- 復雜網(wǎng)絡-課件
- 土木工程材料課件(精選優(yōu)秀)
- 西師版六年級下冊數(shù)學課件(全冊)
- 減數(shù)分裂和受精作用(第二課時)課件-高一下學期生物人教版必修2
- 兒童期創(chuàng)傷量表
- 房地產(chǎn)標準踩盤表格模板
評論
0/150
提交評論