rockchip user guide rknn toolkit v技術(shù)部圖形計算平臺中心_第1頁
rockchip user guide rknn toolkit v技術(shù)部圖形計算平臺中心_第2頁
rockchip user guide rknn toolkit v技術(shù)部圖形計算平臺中心_第3頁
rockchip user guide rknn toolkit v技術(shù)部圖形計算平臺中心_第4頁
rockchip user guide rknn toolkit v技術(shù)部圖形計算平臺中心_第5頁
已閱讀5頁,還剩49頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

密級狀態(tài): 內(nèi)部 公開(√RKNN-Toolkit用戶使用指南(技術(shù)部,圖形計算平臺中心[]正在修改 者2020-08- 核2020-08-瑞芯微電RockchipElectronics(版本所有 更新記API接口的build接 更新RKNN接口優(yōu)化:刪除get_run_duration、eval_perf接口使用說明;重寫RKNN()優(yōu)化pile模型的加載時間。新版本工調(diào)整模型推理結(jié)果的排列順序:在1.0.0以排列(如TensorFlow),則工具會把結(jié)果轉(zhuǎn)支持WindowsMacOSXconfigbatch_sizeepochs參數(shù)的解決創(chuàng)建RKNN善對dilatedconvolution的支持。TFLitedilatedconvolution的支持。Caffe:增加對CRNN的支持。ONNX:增加對Gather和Cast的支持;完善對avg_pool的支持。Pytorch:增加對upsample_nearest2d,contiguous,softmax,permute,leaky_relu,preluelog,deconvsub的支持;完善對Reshape,Constant的支持。MXNet:增加對Crop,UpSampling,SoftmaxActivation,_minus_scalarlog的支channel_mean_value參數(shù),改成mean_values/std_values;移除load_tensorflow接口中的mean_values和TensorFlow:增加對dense子圖的支持。ONNX:完善對prelu/deconvolution/avg_pool/clip的支持。Pytorchpixel_shuffleunsqueeze,sum,select,hardtanh,elu,slice,squeeze,exp,relu6,threshold_,matmulexp,pad的支持;完善對adaptive_avg_pool2d,upsample_bilinear,relu6的支持。MXNet:完善對fc的支持。:概 主要功能說 適用.......................................................................................................................................適用系 系統(tǒng)依賴說 使用說 安 通過pipinstall命令安 通過DOCKER鏡像安 RKNN-TOOLKIT的使 場景一:模型運行在模擬器 場景二:模型運行在與PC相連的RockchipNPU平臺 場景三:模型運行在RK3399ProLinux開發(fā)板 混合量 混合量化功能用 混合量化配置文 混合量化使用流 模型分 示 RKNN初始化及對象釋 RKNN模型配 模型加 構(gòu)建RKNN模 導(dǎo)出RKNN模 加載RKNN模 初始化運行時環(huán) 模型推 評估模型性 獲取內(nèi)存使用情 查詢SDK版 混合量 量化精度分 導(dǎo)出分段模 獲取設(shè)備列 自定義算 查詢模型可運行平 概主要功能說明開發(fā)套件,用戶通過該工具提供的Python接口可以便捷地完成以下功能:RKNNRKNNRockchipNPU平臺上加1.2.01.3.0PytorchMXNet。量化功能:支持將浮點模型轉(zhuǎn)成量化模型,目前支持的量化方法有非對稱量化考第3.3章節(jié)。RKNN模型分發(fā)到指定的NPUPC上模擬RockchipNPURKNN模型,并評估模型性能(包括總耗時和每一層的耗時);也可以將RKNNNPU設(shè)備上運行,以評估模型RKNN模型可以減少在硬件平臺上的加載時間。對 NPU上執(zhí)NPU的執(zhí)行時間,避免因為一個模型占用太多執(zhí)行時間,在帶有RockchipNPU的硬件上使用,且NPU驅(qū)動版本要大于0.9.8。 1.3.0版本開始支持。1.4.0版本增加逐層量化精度分析子功能,將每一層運行時的輸入指定為正確的可視化功能:該功能以圖形界面的形式呈現(xiàn)RKNN-Toolkit的各項功能,簡化用戶操作步 》文檔。1.3.0版本開始支持該功能。1.4.0版本完善了對多輸入模型的支持,并且支持RK1806,RV1109,RV1126等新的RKNPU設(shè)備。該功能從1.3.0版本開始支持。DebianMacOS/適用適用系系統(tǒng)依賴說1Windows7(x64)及以上MacOSX10.13.5(x64)‘numpy==‘scipy==‘Pillow==‘h5py==‘lmdb==‘networkx==‘flatbuffers==‘protobuf==‘onnx==‘onnx-tf==‘flask==‘tensorflow==1.11.0’or‘tensorflow-gpu’‘dill==’‘ruamel.yaml==‘psutils==‘ply==‘requests==‘pytorch==‘mxnet==本文檔主要以Ubuntu16.04/Python3.5為例進行說明。其他操作系統(tǒng)請參考《 使用說安是運行帶完整RKNN-Toolkit工具包的docker鏡像。下面分別介紹這兩種安裝方式的具體步驟。 sudoaptinstallsudoapt-getinstalllibpython3.5-devsudoaptinstallpython3-tkvirtualenvsudoaptinstallsudoapt-getinstalllibpython3.5-devsudoaptinstallpython3-tkvirtualenv-p/usr/bin/python3venvsourcevenv/bin/activatepipinstalltensorflow-pipinstall#執(zhí)行以下命令安裝pytorch和torchvisionpip3installtorch==1.2.0torchvision==0.4.0#執(zhí)行以下命令安裝mxnetpip3installpipinstallopencv-python安裝RKNN- 通過DOCKER鏡像安裝1請根據(jù)手冊安裝Docker(https 2、加載鏡像IMAGE1hoursdockerdockerrun-t-i--privileged-v/dev/bus/usb:/dev/bus/usbrknn-toolkit:1.4.0/bin/bashdockerdockerrun-t-i--privileged-v/dev/bus/usb:/dev/bus/usb-pythontest.pyRKNN-Toolkit的使開發(fā)板(Debian9或Debian10)RK1808AI計算棒(Debian10)上。接下來將詳細給出各使用場景下RKNNToolkit的使用流程。場景一:模型運行在模擬器上這種場景下,RKNNToolkit運行在PCRK1808/RV1109運行模型,以實現(xiàn)推運行非RKNN模型RKNNRKNN模型的最大區(qū)別在于,進行模型推理或模型性能/內(nèi)存評估前,需要先將非RKNNRKNN模型。該場景下RKNNToolkit開開創(chuàng)建RKNN對象,以初始化RKNNSDK調(diào)用config調(diào)用config接口設(shè)置模型的預(yù)處理參調(diào)用build接口構(gòu)建RKNN??诔跏蓟\行TensorFlow、TensorFlowLite、ONNX或調(diào)用eval_perf接口對模型結(jié)調(diào)用release接口釋放RKNN對結(jié)調(diào)用release接口釋放RKNN對運行RKNN模3-2-1-2-1PC上運行RKNN場景二:模型運行在與PC相連的RockchipNPU平臺上RKNNToolkit目前支持的RockchipNPU平臺包括RK1806,RK1808或TB-RKNN模型傳到NPU設(shè)備上運行,再從NPU當模型為RKNN模型(后綴為“rknn”)時,RKNN-Toolkit工具的使用流程及注意事項同場的子場景二(見章節(jié))。alldevice(s)withadbmode:alldevice(s)withntballdevice(s)withadbmode:alldevice(s)withntb###TB-RK1808AI###目前RK1806/RK1808/RV1109/RV1126等設(shè)備支持NTB或ADB兩種連接模式,RK3399ProADB模式。使用多設(shè)備時,需要確保這些設(shè)備使用相同的連接模式,即list_devices查詢出來的設(shè)備IDADB,或都是NTB。在Linux上第一次使用NTB設(shè)備時,非root用戶需要獲取該USB設(shè)備的讀寫權(quán)限,這 下的README.txt場景三:模型運行在RK3399ProLinux開發(fā)板上這種場景下,RKNN-Toolkit直接安裝在RK3399ProLinuxRKNN模型直接在RK3399Pro上運行,以獲取模型實際的推理結(jié)果或性能信息。RK3399ProLinux開發(fā)板,RKNN-Toolkit工具的使用流程取決于模型種類,如果模型類混合量RKNN-Toolkit提供的量化功能可以在提高模型性能的基礎(chǔ)上盡量少地降低模型精度,但是不 mon_function_demos下提供了一個混合量化的例子hybrid_zation,混合量化功能用法將指定的量化層改成非量化層(float進行計算),這種方式可能可以提高精度,但會混合量化配置文件當我們調(diào)用混合量化接口hybrid_zation_step1后,會在當前 下生成一個dtype:asymmetric_affinemethod:layer qtype: ze_layers,e.gconv2_3:#addlayernameandmethod:layer qtype:yaml的版本,第二行是一個分隔符,第三行是注釋。后面是配置文件的主要內(nèi)容。配置文件正文第一行是一個自定義量化層的字典,將層名和相應(yīng)的量化類型(可選值為接著是模型每層的量化參數(shù),每一層都是一個字典。每個字典的key由weight/bias/outoutputout0、out1等進行區(qū)分。字典的value即量化參數(shù),如果沒有經(jīng)過量化,則Value里只有dtype項,且值為None?;旌狭炕褂昧鞒? TensorFlow、TensorFlowLite、ONNX、3-3-3-1混合量化第一步接口調(diào)用流程如果是將某些量化層改成非量化層,則找到不要量化的層,將這些層名加到如果是將某些層從非量化改成量化,同樣找到這些層,將它的層名加到customized_ze_layers字典中,值設(shè)為asymmetric_affine/dynamic_fixed_point-i8/3-3-3-2混合量化第三步接口調(diào)用流程第四步,使用上一步生成的RKNN模型進行推理。模型分NPUNPU的執(zhí)行時間,避免因為一個NPU(如果該模型還有下一分段,則會將該分段再次加入到命令export_rknn_sync_modelRKNN模型分成多段,該接口的詳細用法請參考3.7.13章節(jié)。示importnumpyasnpimportcv2fromrknn.apiimportoutput=outputs[0][0]top5_str=‘ net_v1\n-----TOP5 forIinvalueimportnumpyasnpimportcv2fromrknn.apiimportoutput=outputs[0][0]top5_str=‘ net_v1\n-----TOP5 forIinvalue=index=np.where(output==value)forjinrange(len(index)):if(I+j)>=ifvalue>topi=‘{}:{}\n’.format(index[j],value)topi=‘-1:0.0\n’top5_str+=topidefif ==‘ #CreateRKNNobjectrknn=RKNN()#pre-processprint(‘→configmodel’)#Loadtensorflowprint(‘→Loadingret= ifret!= #Buildprint(‘→Buildingret= ifret!= #Exportrknnprint(‘→ExportRKNNret= ifret!= #Setimg=img=cv2.cvtColor(img,#initruntimeenvironmentprint(‘→Initruntimeenvironment’)ret=rknn.init_runtime()ifret!=#print(‘→Running#print(‘→Beginevaluatemodelperformance’)perf_results=rknn.eval_perf(inputs=[img])錄下有一張dog_224x224.jpg的,那么對應(yīng)的dataset.txt內(nèi)容如 TOPTOP[156]:[155]:[205]:[284]:[194]:Layer0TotalTotalTime(us):API詳細RKNN初始化及對象釋放RKNNToolkitAPIRKNN()RKNN對象,并在用完后調(diào)用該對象的release()方法將對象釋放掉。verbose參數(shù)指定是否要在屏幕上打印詳細日志信息;如果設(shè)置了verbose_file參數(shù),且verbose參數(shù)值為True,日志信息還將寫到這個參數(shù)指定的文件中。##net_build.log rknn=…RKNN模型配dataset中的數(shù)據(jù)量。128reorder_channel設(shè)置成’210‘,則優(yōu)先做通道調(diào)整,再做std_valueschannel_mean_value參數(shù)不能同時設(shè)置。參128reorder_channel設(shè)置成’210‘,Scale參數(shù)。對于輸入數(shù)據(jù)是三通道的(Cin0Cin1Cin2)數(shù)據(jù)來講,經(jīng)過預(yù)處理后,輸出的數(shù)據(jù)為(Cout0,Cout1Cout2),計算過程如下:Cout0=(Cin0–M0)/S0Cout1=(Cin1–M1)/S0Cout2=(Cin2–reorder_channel:表示是否需要對圖像通道順序進行調(diào)整。’012’表示按照輸入的通zed_dtype:量化類型,目前支持的量化類型有asymmetric_zed-u8target_tform:指定RKNN模型是基于哪個目標平臺生成的。目前支持RK1806、RK1808、RK3399Pro、RV1109和RV1126RK1806、RK1808RK3399Pro生RKNNRV1109RV1126RKNN模RK1806、RK1808或RK3399Pro上運行,該[“rk1806”],[“rk1808”],[“rk3399pro”][“rk1806”,“rk1808”,“rk3399pro”]等;如果模型要在RV1109或RV1126上運行,該參數(shù)的值可以是無##modelreorder_channel=’01 模型加載Caffe模型加載接口##ret=TensorFlow模型加載接##ret加載pb’,inputs=[‘FeatureExtractor/outputs=[‘concat’,‘concat_1’],input_size_list=[[300,300,3]])TensorFlowLite模型加載因為tflite不同版本的schema之間是互不兼容的,所以構(gòu)建的tflite模型使用與RKNN-是基于官網(wǎng)master分支上的提交:0c4f5dfea4ceb3d7c0b46fc ##ret=rknn.load_tflite(model= ONNX模型加##加載arcfaceret=rknn.load_onnx(model=Darknet模型加載接口##從當 Pytorch模型加載接口input_size_list:每個輸入節(jié)點對應(yīng)的的尺寸和通道數(shù)。例一個輸入的shape是[3,224,224]。必填參數(shù)。##加載resnet18ret=rknn.Load_pytorch(model=MXNet模型加載接口input_size_list:每個輸入節(jié)點對應(yīng)的的尺寸和通道數(shù)。例##加載resnext50RKNN片(jpgpng格式)npy文件路徑放到一個.txt文件中。文本文件里每一行一條a.jpga2.jpgb.jpgb2.jpga.npyb.npyRK3399ProLinuxWindowsPCMacOSXPCRKNN-Toolkit-V1.0.0及以上版本生成的預(yù)編譯模型不能在NPU3.False[1,224,224,3],output維度為[1,1001],當rknn_batch_size4時,input的維度變?yōu)閇42242243],output維度變?yōu)閇41001]。rknn_batch_sizeNPU上的執(zhí)行性能,但卻會顯著rknn_batch_sizeCPU上的消耗,提高超小模型的平均幀率。(適用于模型太小,CPU的開銷大于NPU的開銷)。ret=RKNN#ret=rknn.export_rknn(export_path=RKNN加載RKNN:##ret= 初始化運行時環(huán)境過”list_devices”接口查看。默認值為None。注:MACOSX系統(tǒng)當前版本還不支持多個設(shè)備。:ret=rknn.init_runtime(target='rk1808',device_id='ifret!=0:print('Initruntimeenvironmentfailed')模型推理如果RKNN-ToolkitPCtargetRockchipNPU設(shè)RKNN-ToolkitPCtarget,得到的是模RK1808,RV1126,具體模擬哪款,取決于RKNN模型的target_tform參數(shù)值.0]。默認值為None,即對所有輸入都不透傳。TOPTOP[156]:[155]:[205]:[284]:[194]:對于目標檢測的模型,如ssd_net_v1,代碼如下(完整代碼參outputs=評估模型性能PCtarget,得到的是模型在模擬器上運行RK1808,也可以模擬RV1126,具體模擬哪款,取決于RKNN模型的target_tformPCRockchipNPUperf_debug為{'layers',{'0':'operation':'CONVOLUTION','time','operation':'CONVOLUTION','time',}}}{}Layer06556645648TotalTime(us):獲取內(nèi)存使用情況注:使用該功能時,對應(yīng)的驅(qū)動版本必須要大于等于0.9.4:{{',{',{{,}}’memory_detail=MemoryProfileInfoSystemumallocation:22.65MiBtotalallocation :72.06MiBNPUumallocation:33.26MiBtotalallocation :34.57MiBTotalumallocation:55.92MiBtotalallocation :106.63MiBINFO:Whenevaluatingmemoryusage,weneedconsiderthesizeofmodel,currentmodelsizeis:4.10MiBSDK版target無sdk_version=RKNNVERSION: API:1.4.0(b4a8096build:2020-08-12 DRV:1.4.0(b4a8096build:2020-08-13混合量化hybrid_({model_name}.json)({model_name}.data)dataset量化校正數(shù)據(jù)的數(shù)據(jù)集。目前支持文本文件格式,用戶可

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論