首页 > 其他分享 >昇腾 amtc 工具 量化yolov5 的onnx

昇腾 amtc 工具 量化yolov5 的onnx

时间:2023-02-22 11:57:18浏览次数:32  
标签:yolov5 量化 output -- onnx input path data amtc

1 概述

量化根据是否进行重新训练分为两种量化方法
- 训练后量化 PTQ(Post-Traing Quantization)(本项目中应用此方法)
- 量化感知训练  (昇腾暂不支持)   

2 训练后量化

知名见意 所谓训练后量化 指的就是模型训练结束之后进行的量化。具体手段 就是将float32 通过某种手段映射到 低比特的int8 在通过少量的校准数据在前向推理过程中进行校准

3 具体过程

  1. 生成用于校准的数据集(bin文件)
    opencv 读取数据集后调整通道并存储为bin文件
    def preprocess(dir_path, save_path, batch_size, img_size):
    in_files = []
    output_data = []
    if not os.path.exists(save_path):
        os.makedirs(save_path)
    files= os.listdir(dir_path)
    for i, file in enumerate(files):
        file =os.path.join(dir_path,file)
        img0 = cv2.imread(file)
        resized = cv2.resize(img0, (640, 640), interpolation=cv2.INTER_LINEAR)
        input_data = cv2.cvtColor(resized, cv2.COLOR_BGR2RGB)
        input_data = np.transpose(input_data, (2, 0, 1)).astype(np.float32)
        input_data = np.expand_dims(input_data, axis=0)
        input_data /= 255.0
        print("shape:", input_data.shape)
    
        if i % batch_size == 0:
            output_data = input_data
        else:
            output_data = np.concatenate((output_data, input_data), axis=0)
    
        if (i + 1) % batch_size == 0:
            output_data.tofile("{}/img_bs{}_n{}.bin".format(save_path, batch_size,i))
    
    1. 利用amtc 工具进行转量化压缩。
    amct_onnx calibration --model xxxx.onnx  --save_path ./output/yolov5s --input_shape "images:1,3,640,640"  --data_dir  "xxx_bin__data"  --data_types  "float32"
    
    --model xxxx.onnx 要量化的模型
    --data_dir 由第一步生成的 校准数据集bin文件所在的文件夹.

标签:yolov5,量化,output,--,onnx,input,path,data,amtc
From: https://www.cnblogs.com/ryzemagic/p/17143864.html

相关文章

  • yolov5 移植到海思3403踩坑记
    1.忠告1.昇腾是昇腾,海思是海思!!尽管兄弟俩的解决方案相似度百分之九十五,但是能不能成功就看那百分之五,所以忘掉昇腾的一切,从海思文档一点点做起。2.文档很重要,文档内容......
  • TensorRT教程(六)使用Python和C++部署YOLOv5的TensorRT模型
    前言 今天这里主要介绍使用Python部署TensorRT的模型以及使用C++部署TensorRT的模型这两种方法。其实在日常部署的工作中,更多是使用C++进行部署,因为这样可以更加丝滑地迁......
  • yolov5 DDP
    目录0.一些概念:1.local_rank参数2.init_process_group,torch.distributed.barrier需要先初始化一下3.注意随机种子需要设置每个进程不一样4.model需要ddp包装一下5.......
  • 【opencv c++】实现yolov5部署onnx模型完成目标检测
    总代码#include<fstream>#include<sstream>#include<iostream>#include<opencv2/dnn.hpp>#include<opencv2/imgproc.hpp>#include<opencv2/highgui.hpp>usin......
  • onnxruntime.InferenceSession
      https://vimsky.com/examples/detail/python-method-onnxruntime.InferenceSession.html  https://github.com/htshinichi/caffe-onnx/blob/master/onnxmodel/t......
  • openvino yolov5/ssd 实时推流目标检测在html上显示
    安装ffmepg并添加到环境变量中,流媒体使用m7s运行效果SSD:检测在10ms左右,yolov5在100ms左右app.py#!/usr/local/bin/python3#encodin:utf-8importsubprocessim......
  • onnxconverter_common/onnx2py.py
      """Convertsonnxmodelintomodel.pyfileforeasyediting.Resultingmodel.pyfileusesonnx.helperlibrarytorecreatetheoriginalonnxmodel.Const......
  • 晟腾 YOLOV5 转onnx
    晟腾pytorch转onnx以下操作都是基于官方yolov5s.pt为案例1修改yolov5export.py文件/YOLOv5/yolov5/models/common.py中Foucs类中的forward方法。修改yolov5......
  • 车牌识别服务-JAVA+ONNX版本,支持全类型的车牌
    1、车牌识别简介车牌识别分为车牌检测与识别,检测模型一般需要检查车牌的位置识别模型一般为识别车牌号及车牌的颜色类型等,目前有较多的深度学习模型能支持,这里就不详细......
  • yolov5训练前准备工作(采样、制作数据集、数据集增强、数据集预处理)
    写在前面训练数据可以有多种输入方式,本文提到了其中一种。使用的时候注意工作路径。使用方法:收集图片,或使用video_2_jpg.py采样视频,(用cam_video.py拍视频,用get_img.py拍照......