×

签到

分享到微信

打开微信,使用扫一扫进入页面后,点击右上角菜单,

点击“发送给朋友”或“分享到朋友圈”完成分享

MLU220 请教yolov5s6 量化问题及部署推理问题 已解决 dao0272022-06-10 16:14:26 回复 18 查看 使用求助
MLU220 请教yolov5s6 量化问题及部署推理问题
分享到:

有四个问题请教一下各位大神:

1、我将yolov5s6的pth模型移植到mlu220设备进行使用,首先将模型进行了int8量化,然后转了.cambricon离线模型,但是找到的官方资料中量化过程都只使用了一张图片(程序最后两行),如果我想使用多张图片应该怎么操作呢?

import torch_mlu
import torch_mlu.core.mlu_model as ct
import torch_mlu.core.mlu_quantize as mlu_quantize
import torch
import torch.nn as nn
import torch.optim as optim
import torchvision
import numpy as np
import torchvision.transforms as transforms
import argparse
from collections import OrderedDict
from PIL import Image
import cv2
import os
import yolo
if __name__ == "__main__":
    parser = argparse.ArgumentParser()
    parser.add_argument('--cfg', type=str, default='yolov5s.yaml',help='model.yaml')
    parser.add_argument('--device', default='cpu',help='cuda device, i.e. 0 or 0,1,2,3 or cpu')
    opt = parser.parse_args()
    # 获取yolov5网络文件
    net = yolo.get_model(opt)
    # 配置量化参数
    qconfig={'iteration': 1, 'use_avg':False, 'data_scale':1.0, 'firstconv':False, 'per_channel': False}
    # 调用量化接口
    quantized_net = mlu_quantize.quantize_dynamic_mlu(net.float(),qconfig_spec=qconfig, dtype='int8', gen_quant=True)
    # 设置为推理模式
    quantized_net = quantized_net.eval().float()
    # 对图片作预处理
    img_mat = Image.open("./images/image.jpg")
    if img_mat.mode != 'RGB':
        img_mat = img_mat.convert('RGB')
    crop = 640
    resize = 640 
    transform = transforms.Compose([
            transforms.Resize(resize),
            transforms.CenterCrop(crop),
            transforms.ToTensor(),
        ])
    img = transform(img_mat)
    im_tensor = torch.unsqueeze(img, 0)
    im_tensor = im_tensor.float()
    print(im_tensor.shape)
    # 执行推理生成量化值 
    quantized_net(im_tensor)
    # 保存量化模型
    torch.save(quantized_net.state_dict(), './yolov5s_int8.pt')


2、另外量化过程中的mlu_quantize.quantize_dynamic_mlu()接口参数的mean和std应该怎么选择呢?


3、int8.pth模型在转.cambricon离线模型的过程中需要使用图片吗?


4、在mlu220设备上部署yolov5的c++代码中(github),模型推理获取结果后并没有找到NMS的处理,想问一下NMS是在c++的CNRT库内部实现了吗?

版权所有 © 2024 寒武纪 Cambricon.com 备案/许可证号:京ICP备17003415号-1
关闭