




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
密级状态: 内部 公开(√RKNN-Toolkit用户使用指南(技术部,图形计算平台中心[]正在修改 者2020-08- 核2020-08-瑞芯微电RockchipElectronics(版本所有 更新记API接口的build接 更新RKNN接口优化:删除get_run_duration、eval_perf接口使用说明;重写RKNN()优化pile模型的加载时间。新版本工调整模型推理结果的排列顺序:在1.0.0以排列(如TensorFlow),则工具会把结果转支持WindowsMacOSXconfigbatch_sizeepochs参数的解决创建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参数,改成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的支持。:概 主要功能说 适用.......................................................................................................................................适用系 系统依赖说 使用说 安 通过pipinstall命令安 通过DOCKER镜像安 RKNN-TOOLKIT的使 场景一:模型运行在模拟器 场景二:模型运行在与PC相连的RockchipNPU平台 场景三:模型运行在RK3399ProLinux开发板 混合量 混合量化功能用 混合量化配置文 混合量化使用流 模型分 示 RKNN初始化及对象释 RKNN模型配 模型加 构建RKNN模 导出RKNN模 加载RKNN模 初始化运行时环 模型推 评估模型性 获取内存使用情 查询SDK版 混合量 量化精度分 导出分段模 获取设备列 自定义算 查询模型可运行平 概主要功能说明开发套件,用户通过该工具提供的Python接口可以便捷地完成以下功能:RKNNRKNNRockchipNPU平台上加1.2.01.3.0PytorchMXNet。量化功能:支持将浮点模型转成量化模型,目前支持的量化方法有非对称量化考第3.3章节。RKNN模型分发到指定的NPUPC上模拟RockchipNPURKNN模型,并评估模型性能(包括总耗时和每一层的耗时);也可以将RKNNNPU设备上运行,以评估模型RKNN模型可以减少在硬件平台上的加载时间。对 NPU上执NPU的执行时间,避免因为一个模型占用太多执行时间,在带有RockchipNPU的硬件上使用,且NPU驱动版本要大于0.9.8。 1.3.0版本开始支持。1.4.0版本增加逐层量化精度分析子功能,将每一层运行时的输入指定为正确的可视化功能:该功能以图形界面的形式呈现RKNN-Toolkit的各项功能,简化用户操作步 》文档。1.3.0版本开始支持该功能。1.4.0版本完善了对多输入模型的支持,并且支持RK1806,RV1109,RV1126等新的RKNPU设备。该功能从1.3.0版本开始支持。DebianMacOS/适用适用系系统依赖说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为例进行说明。其他操作系统请参考《 使用说安是运行带完整RKNN-Toolkit工具包的docker镜像。下面分别介绍这两种安装方式的具体步骤。 sudoaptinstallsudoapt-getinstalllibpython3.5-devsudoaptinstallpython3-tkvirtualenvsudoaptinstallsudoapt-getinstalllibpython3.5-devsudoaptinstallpython3-tkvirtualenv-p/usr/bin/python3venvsourcevenv/bin/activatepipinstalltensorflow-pipinstall#执行以下命令安装pytorch和torchvisionpip3installtorch==1.2.0torchvision==0.4.0#执行以下命令安装mxnetpip3installpipinstallopencv-python安装RKNN- 通过DOCKER镜像安装1请根据手册安装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的使开发板(Debian9或Debian10)RK1808AI计算棒(Debian10)上。接下来将详细给出各使用场景下RKNNToolkit的使用流程。场景一:模型运行在模拟器上这种场景下,RKNNToolkit运行在PCRK1808/RV1109运行模型,以实现推运行非RKNN模型RKNNRKNN模型的最大区别在于,进行模型推理或模型性能/内存评估前,需要先将非RKNNRKNN模型。该场景下RKNNToolkit开开创建RKNN对象,以初始化RKNNSDK调用config调用config接口设置模型的预处理参调用build接口构建RKNN模口初始化运行TensorFlow、TensorFlowLite、ONNX或调用eval_perf接口对模型结调用release接口释放RKNN对结调用release接口释放RKNN对运行RKNN模3-2-1-2-1PC上运行RKNN场景二:模型运行在与PC相连的RockchipNPU平台上RKNNToolkit目前支持的RockchipNPU平台包括RK1806,RK1808或TB-RKNN模型传到NPU设备上运行,再从NPU当模型为RKNN模型(后缀为“rknn”)时,RKNN-Toolkit工具的使用流程及注意事项同场的子场景二(见章节)。alldevice(s)withadbmode:alldevice(s)withntballdevice(s)withadbmode:alldevice(s)withntb###TB-RK1808AI###目前RK1806/RK1808/RV1109/RV1126等设备支持NTB或ADB两种连接模式,RK3399ProADB模式。使用多设备时,需要确保这些设备使用相同的连接模式,即list_devices查询出来的设备IDADB,或都是NTB。在Linux上第一次使用NTB设备时,非root用户需要获取该USB设备的读写权限,这 下的README.txt场景三:模型运行在RK3399ProLinux开发板上这种场景下,RKNN-Toolkit直接安装在RK3399ProLinuxRKNN模型直接在RK3399Pro上运行,以获取模型实际的推理结果或性能信息。RK3399ProLinux开发板,RKNN-Toolkit工具的使用流程取决于模型种类,如果模型类混合量RKNN-Toolkit提供的量化功能可以在提高模型性能的基础上尽量少地降低模型精度,但是不 mon_function_demos下提供了一个混合量化的例子hybrid_zation,混合量化功能用法将指定的量化层改成非量化层(float进行计算),这种方式可能可以提高精度,但会混合量化配置文件当我们调用混合量化接口hybrid_zation_step1后,会在当前 下生成一个dtype:asymmetric_affinemethod:layer qtype: ze_layers,e.gconv2_3:#addlayernameandmethod:layer qtype:yaml的版本,第二行是一个分隔符,第三行是注释。后面是配置文件的主要内容。配置文件正文第一行是一个自定义量化层的字典,将层名和相应的量化类型(可选值为接着是模型每层的量化参数,每一层都是一个字典。每个字典的key由weight/bias/outoutputout0、out1等进行区分。字典的value即量化参数,如果没有经过量化,则Value里只有dtype项,且值为None。混合量化使用流程 TensorFlow、TensorFlowLite、ONNX、3-3-3-1混合量化第一步接口调用流程如果是将某些量化层改成非量化层,则找到不要量化的层,将这些层名加到如果是将某些层从非量化改成量化,同样找到这些层,将它的层名加到customized_ze_layers字典中,值设为asymmetric_affine/dynamic_fixed_point-i8/3-3-3-2混合量化第三步接口调用流程第四步,使用上一步生成的RKNN模型进行推理。模型分NPUNPU的执行时间,避免因为一个NPU(如果该模型还有下一分段,则会将该分段再次加入到命令export_rknn_sync_modelRKNN模型分成多段,该接口的详细用法请参考3.7.13章节。示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的,那么对应的dataset.txt内容如 TOPTOP[156]:[155]:[205]:[284]:[194]:Layer0TotalTotalTime(us):API详细RKNN初始化及对象释放RKNNToolkitAPIRKNN()RKNN对象,并在用完后调用该对象的release()方法将对象释放掉。verbose参数指定是否要在屏幕上打印详细日志信息;如果设置了verbose_file参数,且verbose参数值为True,日志信息还将写到这个参数指定的文件中。##net_build.log rknn=…RKNN模型配dataset中的数据量。128reorder_channel设置成’210‘,则优先做通道调整,再做std_valueschannel_mean_value参数不能同时设置。参128reorder_channel设置成’210‘,Scale参数。对于输入数据是三通道的(Cin0Cin1Cin2)数据来讲,经过预处理后,输出的数据为(Cout0,Cout1Cout2),计算过程如下:Cout0=(Cin0–M0)/S0Cout1=(Cin1–M1)/S0Cout2=(Cin2–reorder_channel:表示是否需要对图像通道顺序进行调整。’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上运行,该参数的值可以是无##modelreorder_channel=’01 模型加载Caffe模型加载接口##ret=TensorFlow模型加载接##ret加载pb’,inputs=[‘FeatureExtractor/outputs=[‘concat’,‘concat_1’],input_size_list=[[300,300,3]])TensorFlowLite模型加载因为tflite不同版本的schema之间是互不兼容的,所以构建的tflite模型使用与RKNN-是基于官网master分支上的提交:0c4f5dfea4ceb3d7c0b46fc ##ret=rknn.load_tflite(model= ONNX模型加##加载arcfaceret=rknn.load_onnx(model=Darknet模型加载接口##从当 Pytorch模型加载接口input_size_list:每个输入节点对应的的尺寸和通道数。例一个输入的shape是[3,224,224]。必填参数。##加载resnet18ret=rknn.Load_pytorch(model=MXNet模型加载接口input_size_list:每个输入节点对应的的尺寸和通道数。例##加载resnext50RKNN片(jpgpng格式)npy文件路径放到一个.txt文件中。文本文件里每一行一条a.jpga2.jpgb.jpgb2.jpga.npyb.npyRK3399ProLinuxWindowsPCMacOSXPCRKNN-Toolkit-V1.0.0及以上版本生成的预编译模型不能在NPU3.False[1,224,224,3],output维度为[1,1001],当rknn_batch_size4时,input的维度变为[42242243],output维度变为[41001]。rknn_batch_sizeNPU上的执行性能,但却会显著rknn_batch_sizeCPU上的消耗,提高超小模型的平均帧率。(适用于模型太小,CPU的开销大于NPU的开销)。ret=RKNN#ret=rknn.export_rknn(export_path=RKNN加载RKNN:##ret= 初始化运行时环境过”list_devices”接口查看。默认值为None。注:MACOSX系统当前版本还不支持多个设备。:ret=rknn.init_runtime(target='rk1808',device_id='ifret!=0:print('Initruntimeenvironmentfailed')模型推理如果RKNN-ToolkitPCtargetRockchipNPU设RKNN-ToolkitPCtarget,得到的是模RK1808,RV1126,具体模拟哪款,取决于RKNN模型的target_tform参数值.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):获取内存使用情况注:使用该功能时,对应的驱动版本必须要大于等于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量化校正数据的数据集。目前支持文本文件格式,用户可
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论