当前位置: 首页 > news >正文

深圳专业网站建设公司苏州设计公司排行榜

深圳专业网站建设公司,苏州设计公司排行榜,成都建设监理协会网站,推广方案万能模板rv1109/1126是瑞芯微出的嵌入式AI芯片#xff0c;带有npu, 可以用于嵌入式人工智能应用。算法工程师训练出的算法要部署到芯片上#xff0c;需要经过模型转换和量化#xff0c;下面记录一下整个过程。 量化环境 模型量化需要安装rk的工具包#xff1a; rockchip-linux/rk…rv1109/1126是瑞芯微出的嵌入式AI芯片带有npu, 可以用于嵌入式人工智能应用。算法工程师训练出的算法要部署到芯片上需要经过模型转换和量化下面记录一下整个过程。 量化环境 模型量化需要安装rk的工具包 rockchip-linux/rknn-toolkit (github.com) 版本要根据开发板的固件支持程度来如果二者不匹配可能转出来的模型无法运行或者结果不对。 模型量化 rknn支持caffe,tensorflow,tflite,onnx,mxnet,pytorch等模型量化下面以onnx为例其他格式基本类似。即可以使用量化包带的可视化界面也可以自行写代码更推荐自己写代码复用性和灵活性更强对可视化界面一笔带过。 可视化量化工具 执行 python -m rknn.bin.visualization 选择对应格式然后设置模型参数进行量化。 写代码量化 基础量化 最简单的量化方式如下只需设置模型的均值、方差载入原始模型调用rknn.build接口然后export_rknn即可。 from rknn.api import RKNNif __name__ __main__:rknnRKNN()# pre-process configprint(-- config model)rknn.config(channel_mean_value0 0 0 255,reorder_channel0 1 2,target_platform[rv1109],#quantized_dtypedynamic_fixed_point-i16)print(done)# Load mxnet modelonnx_model yolov8n.onnxprint(-- Loading model)ret rknn.load_onnx(onnx_model)if ret ! 0:print(Load onnx_model model failed!)exit(ret)print(done)# Build modelprint(-- Building model)ret rknn.build(do_quantizationTrue, dataset../coco_resize.txt, pre_compileFalse) # 若要在PC端仿真pre_compile 为Falseif ret ! 0:print(Build model failed!)exit(ret)print(done)print(-- Export RKNN model)ret rknn.export_rknn(yolov8n_nohead.rknn)if ret ! 0:print(Export RKNN model failed!)exit(ret)print(done)rknn.release()模型量化需要提供量化图片的列表格式为每行是一张图片的路径, 一般需要几百张如 images/0.jpg images/1.jpg模型推理验证 有两种方式验证模型的结果一种是连接开发板在开发板上运行可以实际测试模型的推理速度需要USB连接开发板一种是在PC端仿真速度较慢适合在没有开发板的情况下验证模型结果是否正确。两种方式使用的代码大部分一样区别是在PC端仿真时模型要以pre_compileFalse模式进行量化init_runtime参数为targeNone。 import os import sys from rknn.api import RKNN import cv2 import numpy as npif __name____main__:# Create RKNN objectrknn RKNN()print(-- Loading RKNN model)ret rknn.load_rknn(yolov8.rknn)if ret ! 0:print(Load failed!)exit(ret)print(load done)# Init Runtimerknn.init_runtime(targetrv1109)#第二个参数device_id为开发板的设备id不用填, targeNone时代表PC仿真image cv2.imread(1.jpg)outputs rknn.inference(inputs[image]) rknn.release()量化精度评估逐层 有些时候量化损失可能过大这时我们希望能够逐层比对量化后模型与原始模型这时需要使用accuracy_analysis接口这个接口第一个参数是图片列表文件里面是测试图片的路径第二个参数是比对结果保存路径 from rknn.api import RKNNif __name__ __main__:rknnRKNN()# pre-process configprint(-- config model)rknn.config(channel_mean_value0 0 0 255,reorder_channel0 1 2,target_platform[rv1109],#quantized_dtypedynamic_fixed_point-i16)print(done)# Load mxnet modelonnx_model yolov8n.onnxprint(-- Loading model)ret rknn.load_onnx(onnx_model)if ret ! 0:print(Load onnx_model model failed!)exit(ret)print(done)# Build modelprint(-- Building model)ret rknn.build(do_quantizationTrue, dataset../coco_resize.txt, pre_compileFalse) # 若要在PC端仿真pre_compile 为Falseif ret ! 0:print(Build model failed!)exit(ret)print(done)rknn.accuracy_analysis(test_list.txt, output_dir./snapshot5)     print(-- Export RKNN model)ret rknn.export_rknn(yolov8n_nohead.rknn)if ret ! 0:print(Export RKNN model failed!)exit(ret)print(done)rknn.release()比对文件如下 Conv__model.0_conv_Conv_214_out0_nhwc_1_320_320_16.tensor eculidean_norm0.030792 cosine_norm0.999525 eculidean202.926056 cosine0.999526 Sigmoid__model.0_act_Sigmoid_213_Mul__model.0_act_Mul_212_out0_nhwc_1_320_320_16.tensor eculidean_norm0.049676 cosine_norm0.998766 eculidean178.751434 cosine0.998767 Conv__model.1_conv_Conv_210_out0_nhwc_1_160_160_32.tensor eculidean_norm0.103382 cosine_norm0.994656 eculidean521.709229 cosine0.994656 Sigmoid__model.1_act_Sigmoid_211_Mul__model.1_act_Mul_209_out0_nhwc_1_160_160_32.tensor eculidean_norm0.113702 cosine_norm0.993536 eculidean436.044495 cosine0.993536 Conv__model.2_cv1_conv_Conv_208_out0_nhwc_1_160_160_32.tensor eculidean_norm0.120058 cosine_norm0.992793 eculidean351.808380 cosine0.992794 Sigmoid__model.2_cv1_act_Sigmoid_207_Mul__model.2_cv1_act_Mul_205_out0_nhwc_1_160_160_32.tensor eculidean_norm0.169184 cosine_norm0.985688 eculidean262.819550 cosine0.985688 混合量化 有些时候使用默认量化方法模型精度损失较大我们通过逐层分析也知道了那些层的损失较大这时就需要控制一些层不量化或以更高精度模式量化这种方式就是混合量化。 与基础量化相比混合量化分为两步 第一步是通过rknn.hybrid_quantization_step1(替换基础量化中的rknn.build)获得模型的量化配置文件 rknn.hybrid_quantization_step1(dataset../coco_resize.txt)该接口会生成3个文件 xx.data xx.json xx.quantization.cfg其中.cfg文件时量化配置文件用于控制每一层的量化 %YAML 1.2 --- # add layer name and corresponding quantized_dtype to customized_quantize_layers, e.g conv2_3: float32 customized_quantize_layers: {} quantize_parameters:attach_Concat_/model.22/Concat_5/out0_0:out0:dtype: asymmetric_affinemethod: layermax_value:- 647.7965087890625min_value:- 0.0zero_point:- 0scale:- 2.5403785705566406qtype: u8Concat_/model.22/Concat_5_1:out0:dtype: asymmetric_affinemethod: layermax_value:- 647.7965087890625min_value:- 0.0zero_point:- 0scale:- 2.5403785705566406qtype: u8对于不量化或者以其他精度模式量化的层以字典形式写在customized_quantize_layers中rv1109支持asymmetric_quantized-u8dynamic_fixed_point-i8和dynamic_fixed_point-i16默认情况下以asymmetric_quantized-u8方式量化在需要更高精度时可用dynamic_fixed_point-i16但速度会更慢。对于损失较大的层我们可以尝试设置dynamic_fixed_point-i16量化(若float32则不量化) customized_quantize_layers: {Split_/model.22/Split_21: dynamic_fixed_point-i16,Reshape_/model.22/dfl/Reshape_20: float32 }设置完成量化配置后使用rknn.hybrid_quantization_step2进行量化 from rknn.api import RKNNif __name__ __main__:rknnRKNN()# pre-process configprint(-- config model)rknn.config(channel_mean_value0 0 0 255,reorder_channel0 1 2,target_platform[rv1109],#quantized_dtypedynamic_fixed_point-i16)print(done)# Load mxnet modelonnx_model yolov8n.onnxprint(-- Loading model)ret rknn.load_onnx(onnx_model)if ret ! 0:print(Load onnx_model model failed!)exit(ret)print(done)# Build modelprint(-- Building model)rknn.hybrid_quantization_step2(dataset../coco_resize.txt, model_inputtorch_jit.json,data_inputtorch_jit.data,model_quantization_cfgtorch_jit.quantization.cfg,pre_compileFalse)if ret ! 0:print(Build model failed!)exit(ret)print(done)rknn.accuracy_analysis(test_list.txt, output_dir./snapshot5)     print(-- Export RKNN model)ret rknn.export_rknn(yolov8n_nohead.rknn)if ret ! 0:print(Export RKNN model failed!)exit(ret)print(done)rknn.release()
http://www.pierceye.com/news/18468/

相关文章:

  • 湖南网站开发公司电话宁波网站制作设计
  • 砀山县住房和城乡建设局网站开发公司前期部岗位职责
  • 长沙企业网站建设团队有二维码怎样做网站
  • 正保建工网校官网seo网站建设哪家专业
  • 网站首页地址是什么微信下载安装2024最新版
  • 制作手机网站什么软件下载wordpress 采集函数
  • 投资网站开发wordpress安装用户名密码
  • 安徽建网站国外网站怎么做引流
  • 织梦网站首页栏目修改wordpress空间安装教程视频教程
  • 网站进不去怎么解决时尚网站
  • 海港区网站快排seowordpress速度优化插件
  • 电子商务公司网站怎么建鄂州商城网站建设
  • 免费网站制作模板网站建设需求书
  • 中国住房建设部网站2022企业所得税减半
  • 运动网站建设主题又名林州站长网
  • 网站开发公司可行报告做的物流网站有哪些
  • 网站域名注册商wordpress没有登陆框
  • 腾讯云网站托管杭州优质网站建设
  • 全球搜索引擎网站c语言做的网站有什么优缺点
  • 商城网站需要多少钱电商平台怎么开发
  • 浙江省建设厅网站证件时事新闻最新2022
  • 高米店网站建设网页设计html代码大全空格
  • 福州外网站建设wordpress上传图片占空间
  • 一个网站百度百科怎么做重庆江北营销型网站建设价格
  • 如何做网站产品经理网站数据库开发
  • 外贸网站优化建设wordpress 别名排序
  • 山西做网站的公司哪个好兰州建设局网站公告
  • 华为云做网站宁夏百度推广代理商
  • php网站开发案例wordpress的编辑器
  • 网站界面设计案例教程wordpress 分类目录函数