首页 > 其他分享 >全志V853 在 NPU 转换 YOLO V3 模型

全志V853 在 NPU 转换 YOLO V3 模型

时间:2022-12-19 11:03:16浏览次数:64  
标签:文件 yolov3 V853 -- 模型 YOLO 全志 model data

NPU 转换 YOLO V3 模型

YOLO 全称是 You Only Look Once(你只需看一次),从名称上也能看出这种算法速度快的优势,因此在许多边缘设备上,YOLO 算法的使用十分广泛。YOLOV3 是华盛顿大学研究生 Joseph Redmon 所开发,他也因此凭借该算法获得了计算机视觉领域的很多奖项。

本文将通过 YOLO V3 模型的下载、转换、仿真三部分讲解如何使用现成的模型转换为 V853 NPU 所支持的模型。

模型的准备

在开始转换模型之前,需要准备模型。

模型可以通过自行准备数据集,工具训练而成,也可以从网上下载已经训练好了的 YOLO V3 模型。

本文演示的是从网上下载的已经训练好的模型。

我们使用的框架是 darknet,模型为 YOLOv3-608。 其训练的数据集是 COCO trainval 数据集,模型可以在这里下载到:https://pjreddie.com/darknet/yolo/

在这里插入图片描述

darknet 版的 yolov3 模型包含两个文件,分别是权重文件 yolov3.weights 和模型结构描述文件 yolov3.cfg 这里两个都需要下载。下载完毕后放到配置好 NPU 开发工具的环境内。

在这里插入图片描述

打开模型结构描述文件 yolov3.cfg,将 widthheight 改为 416 以获得更好的性能。

在这里插入图片描述

然后还需要准备 dataset.txt 和测试的图片文件作为量化使用。先在 dataset.txt 文件中写入图片的路径和 id

./data/01.jpg 0
./data/02.jpg 1

然后将测试的图片放到文件夹里,这里我们准备 2 张不同的图片以供量化使用。

在这里插入图片描述

至此所有准备就完成了,你准备的文件看起来是这样的:

文件夹下包含 yolov3.cfg, yolov3.weight 这两个模型文件,一个dataset.txt 文件,存放量化使用的图片路径与 id,data 文件夹下包括已经修改统一分辨率的测试图片。

在这里插入图片描述

模型的转换

导入模型

首先我们导入模型

pegasus import darknet --model yolov3.cfg --weights yolov3.weights --output-model yolov3.json --output-data yolov3.data

在这里插入图片描述

导入生成两个文件,分别是是 yolov3.datayolov3.json 文件,他们是 YOLO V3 网络对应的芯原内部格式表示文件,分别对应原始模型文件的 yolov3.weightsyolov3.cfg

创建 YML 文件

YML 文件对网络的输入和输出的超参数进行描述以及配置,这些参数包括,输入输出 tensor 的形状,归一化系数 (均值,零点),图像格式,tensor 的输出格式,后处理方式等等

pegasus generate inputmeta --model yolov3.json --input-meta-output yolov3_inputmeta.yml

pegasus generate postprocess-file --model yolov3.json --postprocess-file-output yolov3_postprocessmeta.yml

在这里插入图片描述

修改 yolov3_inputmeta.yml 文件中的的 scale 参数为 0.0039(1/255),目的是对输入 tensor 进行归一化,和网络进行训练的时候是对应的。

量化

生成下量化表文件,使用非对称量化,uint8,修改 --batch-size 参数为你的 dataset.txt 里提供的图片数量。

pegasus quantize --model yolov3.json --model-data yolov3.data --batch-size 1 --device CPU --with-input-meta yolov3_inputmeta.yml --rebuild --model-quantize yolov3.quantize --quantizer asymmetric_affine --qtype uint8

在这里插入图片描述

预推理

利用前文的量化表执行预推理,得到推理 tensor,yolov3 是 1 输入 3 输出网络,所以一共产生了 4 个 tensor

pegasus inference --model yolov3.json --model-data yolov3.data --batch-size 1 --dtype quantized --model-quantize yolov3.quantize --device CPU --with-input-meta yolov3_inputmeta.yml --postprocess-file yolov3_postprocessmeta.yml

在这里插入图片描述

导出模板代码与模型

pegasus export ovxlib --model yolov3.json --model-data yolov3.data --dtype quantized --model-quantize yolov3.quantize --batch-size 1 --save-fused-graph --target-ide-project 'linux64' --with-input-meta yolov3_inputmeta.yml --output-path ovxilb/yolov3/yolov3prj --pack-nbg-unify --postprocess-file yolov3_postprocessmeta.yml --optimize "VIP9000PICO_PID0XEE" --viv-sdk ${VIV_SDK}

在这里插入图片描述

至此,模型转换完成,生成的模型存放在 ovxilb/yolov3_nbg_unify 文件夹内。

在这里插入图片描述

原贴链接:https://bbs.aw-ol.com/topic/1641/ 作者@YterAA 全志及开发者最新动态可以关注全志在线微信公众号

标签:文件,yolov3,V853,--,模型,YOLO,全志,model,data
From: https://blog.51cto.com/u_15380233/5951527

相关文章

  • [OpenCV实战]8 深度学习目标检测网络YOLOv3的训练
    目录​​1 数据集​​​​1.1 下载openImages雪人数据[约1.5小时]​​​​1.2 训练集测试集拆分​​​​2Darknet​​​​2.1 下载并构建Darknet​​​​2.2 修改代码......
  • YoloV7 标签匹配机 loss 计算详解
    这是一篇v7后处理详解的文章本篇文章主要对YoloV7的后处理进行详细讲解,YoloV7除了结构上,对前后处理都进行了改进,其余包括scheduler、optimizer等与YoloV6都是保......
  • 实现labelme标注的json格式转换为yolov5需要的txt格式
    importos,cv2,jsonimportnumpyasnpclasses=['road']base_path='E:\\aaa\\dataf1\\'path_list=[i.split('.')[0]foriinos.listdir(base_path)]for......
  • Y2、yolov5训练自己的数据集
    一、准备数据image文件夹下存放所有的图片文件annotation文件夹下存放所有的label文件两个文件夹内的图片文件名和label文件名一一对应简单查看一下xml文件:xml文件都......
  • YOLOv5安装
    安装官方的安装文档,由于大家都懂的原因,会遇到pipinstall超时,因此需要更换pip源,具体步骤如下:(1)gitclonehttps://github.com/ultralytics/yolov5.git(2)cdyolov5(3)pip......
  • YOLOX: Exceeding YOLO Series in 2021
    2107.08430.pdf(arxiv.org)-----------------------------------------------------2022-11-2数据增广:Mosaic(RandomResizedCrop有冲突),Mixup1.训练技巧,在最后15个e......
  • 【yolov4】基于yolov4深度学习网络目标检测MATLAB仿真
    YOLO发展至YOLOv3时,基本上这个系列都达到了一个高潮阶段,很多实际任务中,都会见到YOLOv3的身上,而对于较为简单和场景,比如没有太密集的目标和极端小的目标,多数时候仅用YOLOv2......
  • 基于YOLOv5的手势识别系统(含手势识别数据集+训练代码)
    基于YOLOv5的手势识别系统(含手势识别数据集+训练代码)目录基于YOLOv5的手势识别系统(含手势识别数据集+训练代码)1.前言2.手势识别的方法(1)基于多目标检测的手势识别方法(2......
  • xml数据转yolov5的txt代码
    通过labelimg标注的xml文件转换yolov5可训练的txt格式代码。包含读取xml文件代码,保存txt格式代码。  fromlxml.etreeimportElement,SubElement,tostring,Elem......
  • 31、OAK使用Yolov4-tiny进行训练、部署、测距功能使用
    基本思想:参考官网教程就行,这里只为实现自己的功能,做一下尝试和记录链接:https://pan.baidu.com/s/1vF7zbdyqpsfwmAV8Xmo9MQ 提取码:th5e (前提)安装openVINO环境,以备转换模......