yolov3 darknet模型转换为DPU xmodel模型

一、个人电脑或服务器安装Vitis-AI docker镜像

参考github仓库Installation

  1. 确保已经安装了docker环境,并安装docker镜像
docker pull xilinx/vitis-ai-cpu:latest  
  1. 下载Vitis-AI仓库
git clone --recurse-submodules https://github.com/Xilinx/Vitis-AI  

cd Vitis-AI
  1. 启动Vitis-AI docker镜像
./docker_run.sh xilinx/vitis-ai-cpu:latest

二、darknet模型转为caffe模型

以下二 三 四步操作都在Vitis-AI docker镜像中完成

  1. 激活conda环境
conda activate vitis-ai-caffe
  1. 使用工具进行转换
python /opt/vitis_ai/conda/envs/vitis-ai-caffe/bin/convert.py /path/to/yolov3-voc.cfg /path/to/yolov3-voc.weights /path/to/yolov3.prototxt /path/to/yolov3.caffemodel #prototxt和caffemodel为生成的文件

三、caffe模型量化

  1. 修改生成的yolov3.prototxt文件,将文件头部修改为如下
name: "Darkent2Caffe"
#input: "data"
#input_dim: 1
#input_dim: 3
#input_dim: 416
#input_dim: 416

layer {
  name: "data"
  type: "ImageData"
  top: "data"
  top: "label"
  include {
    phase: TRAIN
  }
  image_data_param {
    root_folder: "/workspace/quImg/"
    source: "/workspace/q.txt"
    batch_size: 1
    shuffle: false
  }
  transform_param {
    mirror: false
    yolo_width: 416
    yolo_height: 416
  }
}

其中root_folder是图片的文件夹,source中的q.txt中是具体图片的名字。

q.txt中内容如下:

64_01_20210428111258426_1-7265.jpg 0
64_01_20210429011105543_19-6710.jpg 1
64_01_20210429011105543_23-3593.jpg 1
64_01_20210427115650449_3-2244.jpg 0
64_01_20210429011105543_20-4260.jpg 1

该步骤解释:量化时要准备多张训练时的样本图片,这些样本图片对量化后的检测准确率有很大提升。(一类200张)

  1. 使用vai_q_caffe进行量化
vai_q_caffe quantize -model yolov3.prototxt -keep_fixed_neuron -calib_iter 20 -weights yolov3.caffemodel -output_dir yolov3_quantized/ -method 1

编译成功之后,yolov3_quantized文件夹下有四个文件

  • deploy.caffemodel
  • deploy.prototxt 前两个都是后续编译需要的模型,无法被caffe所读取
  • quantize_train_test.caffemodel
  • quantize_train_test.prototxt 这两个文件是量化过后的caffe模型,可以用作测试和迁移训练

四、模型编译

将caffemodel转换为DPU可以运行的模型

ARCH=/opt/vitis_ai/compiler/arch/DPUCZDX8G/ZCU104/arch.json; #不同开发板设置不同json

vai_c_caffe --prototxt yolov3_quantized/deploy.prototxt --caffemodel yolov3_quantized/deploy.caffemodel --arch ${ARCH} --output_dir yolov3_compiled/ --net_name dpu_yolov3_voc --options "{'mode':'normal','save_kernel':''}";

运行完成后,可以yolov3_compiled文件夹下生成dpu_yolov3_voc.xmodel,拷贝到zcu104开发板即可。

你可能感兴趣的:(yolov3 darknet模型转换为DPU xmodel模型)