1.部署seg
笔者试过paddleseg和mmseg里的fastscnn,后者比前者更快,故部署时选用了该模型。
流程:
1.导出onnx
2.在x86的Ubuntu中安装好rknntoolkit后(注意这里的toolkit要和板子上推理的toolkitlite版本对齐),写转换脚本,流程为
rknn = RKNN(verbose=True) #创建RKNN执行对象
rknn.config(mean_values=[[123.675, 116.28, 103.53]], std_values=[[58.395, 57.12, 57.375]], target_platform='rk3588')
#这里的mean_vaulues和std_value要和原模型训练时严格对齐
ret = rknn.load_onnx(model='xxx.onnx',input_size_list=[[3, 357, 863]])#加载onnx模型/写出输入数据大小
rknn.build(do_quantization=False)#这里可以选择是否量化,是否预训练,若量化,则要给出量化数据集:rknn.build(do_quantization=False,dataset="",pre_compile=True)
ret = rknn.export_rknn('xxx.rknn')#导出rknn模型
rknn.release()#释放句柄
导出rknn模型后,要对其进行推理
流程为
rknn_lite = RKNNLite()#创建RKNNlite执行对象
ret = rknn_lite.load_rknn(rknn_model.rknn)#加载rknn模型
ret = rknn_lite.init_runtime(core_mask=RKNNLite.NPU_CORE_0)#初始化推理环境,开启双核可把参数设为NPU_CORE_0_1三核可设为NPU_CORE_0_1_2
outputs = rknn_lite.inference(inputs=[ori_img])#输入图片,开始推理,得到结果数组outputs
#...对结果进行后处理
#...对结果进行后处理
#...对结果进行后处理
2.部署OCR
笔者用过paddleOCR和pytorchOCR,这次部署可谓是大费周章,在用paddleOCR导出onnx遇到一个问题:
跟着飞浆的教程装了最新版的paddle2onnx(忘了是多少?可能是1.2.2),然后在导出onnx时将模型输入大小固定后,竟然不能推理了!由此导rknn时当然也是错误的。
后来请教了高人后,将paddle2onnx降版本降到0.9.8后,一切都顺利完成。
记录一下踩到的坑~后续再更新部署和推理代码,争取试试部署yolo。