Milk-V Duo TPU 模型转化体验

tpu使用

安装conda

docker

  • 非22.04的用户必须要拉docker才行了

  • 创建

    • 拉取docker镜像
      • docker run --privileged --name sophgo_cv -it sophgo/tpuc_dev:v3.1
    • 启动docker
    • 拉取tpu-mlir仓库
      https://hub.gitmirror.com/https://github.com/milkv-duo/tpu-mlir.git
    • source env.sh
    • 创建transform文件夹,把yolov5n_jit.pt和tpu-mlir项目里面的dog.jpg拷贝进取(我尝试用640x640的图片代替,但发现转化失败,貌似只有dog.jpg可以)
    • 创建三个命令的py脚本,执行后就转化出 yolov5n_int8_fuse.cvimodel 文件
    #!/bin/bash
    # TORCH 模型转换成 MLIR
    model_transform.py \
    	--model_name yolov5n \
    	--model_def ./yolov5n_jit.pt \
    	--input_shapes [[1,3,640,640]] \
    	--pixel_format "rgb" \
    	--keep_aspect_ratio \
    	--mean 0,0,0 \
    	--scale 0.0039216,0.0039216,0.0039216 \
    	--test_input ./dog.jpg \
    	--test_result yolov5n_top_outputs.npz \
    	--output_names 1219,1234,1249 \
    	--mlir yolov5n.mlir
    # 生成量化需要的校准表
    run_calibration.py yolov5n.mlir \
    	--dataset ../regression/dataset/COCO2017 \
    	--input_num 100 \
    	-o ./yolov5n_cali_table
    #MLIR 量化成 INT8 非对称 cvimodel
    model_deploy.py \
    	--mlir yolov5n.mlir \
    	--quantize INT8 \
    	--calibration_table ./yolov5n_cali_table \
    	--chip cv180x \
    	--test_input ./dog.jpg \
    	--test_reference yolov5n_top_outputs.npz \
    	--compare_all \
    	--tolerance 0.96,0.72 \
    	--fuse_preprocess \
    	--debug \
    	--model yolov5n_int8_fuse.cvimodel
    
  • 板件中运行

    ../samples/samples_extra/bin/cvi_sample_detector_yolo_v5_fused_preprocess \
    	./yolov5n_int8_fuse.cvimodel ./bus.jpg bus_out.jpg
    
  • 查了一圈,貌似目前还没有tpu调用的源码级接口放出来,给出来的都是可执行文件,期待像rknn那样有python和C++的接口

2 Likes