元宇宙既包含数字经济中的5G、人工智能、区块链、云计算、大数据,也融合了对VR、AR、脑机接口、物联网等技术的前瞻布局。发展元宇宙,关键在于大力提升自主创新能力,突破关键核心技术,实现高质量发展。
作为一种可能的Web3.0底层技术,区块链以去中心化、不可篡改、可溯源等特点,构建起数字经济时代的全新信任体系。
量化demo
1.转换onnx模型
首先需要将torch模型转换为onnx模型。转换主要是两种场景目的:转换torchvision的预训练模型、转换自定义模型。
转换都是两个步骤:加载模型和权重、调onnx接口转换
model=models.vgg16(pretrained=True)就会将模型下载到相应路径
#coding=gbk
#由.pt导成.onnx
import torch
import torchvision.models as models
#定义模型和载入模型权重
#model=models.resnet18()#【改】定义model
#model=models.resnet50()
model=models.vgg16(pretrained=False)
model.load_state_dict(torch.load("/home/xxx/.cache/torch/hub/checkpoints/vgg16-397923af.pth"))#【改】model权重地址
##set the model to inference mode
model.eval()
x=torch.randn(1,3,224,224)#生成张量
export_onnx_file="/home/xxx/model_optimization_tool/jm_log_quant/onnx_format_weight/vgg16.onnx"#【改】输出ONNX权重地址
torch.onnx.export(model,
x,
export_onnx_file,
opset_version=10,
do_constant_folding=True,#是否执行常量折叠优化
input_names=["input"],#输入名
output_names=["output"],#输出名
dynamic_axes={"input":{0:"batch_size"},#批处理变量
"output":{0:"batch_size"}})
1)准备数据集和原始onnx模型
按照教程,要在当前目录新建working/data文件夹,将生成的数据集(格式为.npy)放在文件夹里。(视频二还有另一种载入数据方式)
原始模型onnx放在working/文件夹
1.只想跑demo不管真实数据,可以生成随机数据集
#生成随机数据集
import numpy as np
for i in range(32):
np.save(file=f'working/data/{i+1}',arr=np.random.random(size=[1,3,224,224]))
2.载入imagenet数据集
#载入ImageNet校准数据集
import os
import torchvision.transforms as transforms
from PIL import Image
import numpy as np
import torch
input_path="xxxxxxx/xxxxx/x"#【改】数据集路径
for file in os.listdir(input_path):
filename=os.fsdecode(file)
img=Image.open(os.path.join(input_path,filename)).convert('RGB')
scaler=transforms.Resize((224,224))
normalize=transforms.Normalize(mean=[0.485,0.456,0.406],
std=[0.229,0.224,0.225])
to_tensor=transforms.ToTensor()
device=torch.device("cpu")
image=normalize(to_tensor(scaler(img))).unsqueeze(0).to(device)
np.save(file=f'working/data/{filename[:-4]}',arr=image)#【改】注意图像格式是.jpg还是.jpeg,.jpeg则filename[:-5]
print('{}已完成,进度{}/{}'.format(filename[:-5],os.listdir(input_path).index(file),len(os.listdir(input_path)