青岛seo整站优化,桔子seo,检索类的网站建设,建筑培训网考题答案1、转换为rknn模型环境搭建
onnx模型需要转换为rknn模型才能在rv1126开发板上运行#xff0c;所以需要先搭建转换环境 模型转换工具 模型转换相关文件下载#xff1a;
网盘下载链接#xff1a;百度网盘 请输入提取码 提取码#xff1a;teuc
将其移动到虚拟机中#xf…1、转换为rknn模型环境搭建
onnx模型需要转换为rknn模型才能在rv1126开发板上运行所以需要先搭建转换环境 模型转换工具 模型转换相关文件下载
网盘下载链接百度网盘 请输入提取码 提取码teuc
将其移动到虚拟机中找到文件夹中的docker文件 rknn-toolkit-1.7.1-docker.tar.gz 、 model_convert文件夹 加载 模型转换工具docker镜像
docker load --input /home/developer/rknn-toolkit/rknn-toolkit-1.7.1-docker.tar.gz 进入 镜像bash环境 执行以下指令把工作区域映射进docker镜像其中/home/developer/rknn-toolkit/model_convert为工作区域/test为映射到docker镜像/dev/bus/usb:/dev/bus/usb为映射usb到docker镜像
docker run -t -i --privileged -v /dev/bus/usb:/dev/bus/usb -v /home/developer/rknn-toolkit/model_convert:/test rknn-toolkit:1.7.1 /bin/bash 两处文件映射即同步 2、生成量化图片列表
这一步是把准备好的一些图片生成图片路径的文本文件在构建RKNN模型的时候有用处。通过使用真实的样本数据集RKNN工具可以更好地理解和建模模型的输入数据从而更好地优化网络结构、权重和量化方案。
在docker环境切换到模型转换工作目录执行 gen_list.py会得到一个文本文件pic_path.txt里面是图片的路径:
cd /test/coco_object_detect
python gen_list.py gen_list.py内容如下
import os
import randomdef main(image_dir):save_image_txt ./pic_path.txtsave_val_number 0img_path_list []image_list os.listdir(image_dir)for i in image_list:#if os.path.isdir(image_dir):#print(i:, i)image_path image_dir / i#print(image_path:, image_path)img_path_list.append(image_path)#print(img_path_list)print(len of all, len(img_path_list))random.shuffle(img_path_list)with open(save_image_txt, w) as F:for i in range(len(img_path_list)):F.write(img_path_list[i]\n)if __name__ __main__:image_dir /test/quant_dataset/coco_data # 图片所在路径大概500张main(image_dir)3、onnx模型转换为rknn模型
还是在docker环境 模型转换工作目录运行rknn_convert.py
python rknn_convert.py 这一步如果是在虚拟机上运行的话8GB的内存条win10系统也要用分配给虚拟机的没多少3GB也不够执行这一步。
后来我直接在Ubuntu系统执行这一步8GB系统用一点还剩6.7GBCPU和内存直接干满 rknn_convert.py 源码
import os
import urllib
import traceback
import time
import sys
import numpy as np
import cv2
from rknn.api import RKNNONNX_MODEL best.onnx # onnx 模型的路径
RKNN_MODEL ./yolov5_mask_rv1126.rknn # 转换后的 RKNN 模型保存路径
DATASET ./pic_path.txt # 数据集文件路径QUANTIZE_ON True # 是否进行量化if __name__ __main__:# 创建 RKNN 对象rknn RKNN(verboseTrue)# 检查 ONNX 模型文件是否存在if not os.path.exists(ONNX_MODEL):print(model not exist)exit(-1)# 配置模型预处理参数print(-- Config model)rknn.config(reorder_channel0 1 2, # 表示 RGB 通道mean_values[[0, 0, 0]], # 每个通道的像素均值预处理时对应通道减去该值std_values[[255, 255, 255]], # 每个通道的像素标准差每个通道除以该值optimization_level3, # 优化级别target_platform rv1126, #指定目标平台为rv1126output_optimize1, # 输出优化为真quantize_input_nodeQUANTIZE_ON) # 对时输入节点进行量化print(done)# 加载 ONNX 模型print(-- Loading model)ret rknn.load_onnx(modelONNX_MODEL)if ret ! 0:print(Load yolov5 failed!)exit(ret)print(done)# 构建模型print(-- Building model)ret rknn.build(do_quantizationQUANTIZE_ON, datasetDATASET)if ret ! 0:print(Build yolov5 failed!)exit(ret)print(done)# 导出 RKNN 模型print(-- Export RKNN model)ret rknn.export_rknn(RKNN_MODEL)if ret ! 0:print(Export yolov5rknn failed!)exit(ret)print(done)