1.onnx参数说明
- 其中的input_size_list必须是静态参数

2.模型参数查看脚本
示例输出:
=== 输入节点 ===
Name: images
Shape: [1, 3, 640, 640]
=== 输出节点 ===
Name: output
Shape: [1, 255, 80, 80]
Name: 283
Shape: [1, 255, 40, 40]
Name: 285
Shape: [1, 255, 20, 20]
import onnx
# 加载模型
model = onnx.load('yolov5s_relu.onnx')
# 查看所有输入
print("=== 输入节点 ===")
for input in model.graph.input:
print(f"Name: {input.name}")
# 获取 shape
shape = [dim.dim_value if dim.dim_value else dim.dim_param
for dim in input.type.tensor_type.shape.dim]
print(f"Shape: {shape}")
# print(f"Dtype: {input.type.tensor_type.elem_type}") # 1=FLOAT, 7=INT64
# 查看所有输出
print("\n=== 输出节点 ===")
for output in model.graph.output:
print(f"Name: {output.name}")
shape = [dim.dim_value if dim.dim_value else dim.dim_param
for dim in output.type.tensor_type.shape.dim]
print(f"Shape: {shape}")
# 查看所有中间节点(可选)
# print("\n=== 所有节点 ===")
# for node in model.graph.node:
# print(f"{node.op_type}: {node.name}")
3.模型转换脚本
from rknn.api import RKNN
rknn = RKNN(verbose=True)
rknn.config(
target_platform='rk3568',
)
batch_size=1
sequence_length=512
past_sequence_length=512
ret = rknn.load_onnx(model='yolov5s_relu.onnx')
if ret != 0:
print('Load model failed!')
exit(ret)
print('done')
ret = rknn.build(do_quantization=False)
if ret != 0:
print('Load model failed!')
exit(ret)
print('done')
ret = rknn.export_rknn(export_path='./rknn.rknn')
if ret != 0:
print('Load model failed!')
exit(ret)
print('done')