当前位置:网站首页>【onnx 输入尺寸】修改pytorch生成的onnx模型的输入尺寸
【onnx 输入尺寸】修改pytorch生成的onnx模型的输入尺寸
2022-08-03 05:27:00 【寻找永不遗憾】
1 问题描述
224x224的onnx模型,想把它的输入改成520x520的,怎么办呢?
2 代码
import sys
import argparse
import onnx
from onnx import shape_inference
def conv_model_input_size(converted_model, size1, size2):
# print(converted_model.graph.input)
# exit()
for i, node in enumerate(converted_model.graph.input):
if i == 0:
print("Before changing input size: {}".format(node.type.tensor_type.shape))
print("dim:{}".format(node.type.tensor_type.shape.dim[1].dim_param))
if node.type.tensor_type.shape.dim[1].dim_value == 3 :
# NCHW
node.type.tensor_type.shape.dim[2].dim_value= size1
node.type.tensor_type.shape.dim[3].dim_value= size2
elif node.type.tensor_type.shape.dim[3].dim_value== 3 :
# NHWC
node.type.tensor_type.shape.dim[1].dim_value= size1
node.type.tensor_type.shape.dim[2].dim_value= size2
else:
print("ERROR: Not supported input shape")
return
print("After changing input size: {}".format(node.type.tensor_type.shape))
# onnx.save(converted_model, dst_fullname)
# exit()
if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument("-i", "--input", default="./efficientnet_lite0.onnx", help="The input onnx model")
parser.add_argument("-a", "--action", default="size", choices=["size","dyn"],
help="Select command action")
parser.add_argument("-s1", "--size1", default="520", help="Input size, for action=size")
parser.add_argument("-s2", "--size2", default="520", help="Input size, for action=size")
args = parser.parse_args()
if not all([args.input, args.action]):
parser.print_help()
sys.exit(1)
src_root = args.input
print(src_root)
if args.action == "size":
if not src_root.endswith('.onnx'):
exit()
converted_model = onnx.load(src_root)
input_size1 = converted_model.graph.input[0].type.tensor_type.shape.dim[2].dim_value
input_size2 = converted_model.graph.input[0].type.tensor_type.shape.dim[3].dim_value
print("len of inputs:{}".format(len(converted_model.graph.input)))
# 修改input size
conv_model_input_size(converted_model, int(args.size1), int(args.size2))
# 疑问,函数明明没返回值,为什么converted_model模型的输入就变了呢?
# 有没有下面这一行,似乎对结果没啥影响,都只能显示输入尺寸信息,哭了!
inference_model = shape_inference.infer_shapes(converted_model)
onnx.checker.check_model(inference_model)
dst_fullname = src_root[:-5] + "_" + str(args.size1) + "x" + str(args.size2) + ".onnx"
onnx.save(inference_model, dst_fullname)
print(dst_fullname)
else:
print("ERROR, Invalid --action")
结果显示:
边栏推荐
- 学习C的第一天,尝试一下写博客
- All-round interpretation of POE switches (middle)
- Dynamic adjustment of web theme (2) Extraction
- 在Maya和ZBrush中制作战士模型
- Unity Animation从UAS获取动画资产到编制状态机控制简单的人物动画
- 在Zabbix5.4上使用ODBC监控Oracle数据库
- 零基础小白想往游戏建模方向发展,3D游戏建模好学嘛?
- 802.1AS 延迟测量理解
- 域名注册流程:如何选择购买合适的域名?
- C # program with administrator rights to open by default
猜你喜欢
随机推荐
2021-06-14
【面试】摸鱼快看:关于selenium/ui自动化的面试题
SQLMAP介绍及使用
Zabbix历史数据清理(保留以往每个项目每天一条数据)
【随笔】平常心
C # to switch input method
VB.net如何使用List类型
二分查找2 - x的平方根
Migration of BOA Server
2021-06-15
【面筋1】一些没什么标准答案的问题
【面试准备】游戏开发中的几个岗位分别做什么&考察侧重点
二分查找4 - 搜索旋转排序数组
阿里云短信服务的使用(创建,测试笔记)
数组与字符串13-两数之和等于目标数
Oracle数据文件收缩_最佳实践_超简单方法
ARP协议及简单路由器原理(1)
DNS常见资源记录类型详解
How the world's leading medical technology company maximizes design productivity | SOLIDWORKS Product Exploration
2021-06-14