YOLOv3-tiny怎么在VS2015上使用Openvino部署

技术YOLOv3-tiny怎么在VS2015上使用Openvino部署YOLOv3-tiny怎么在VS2015上使用Openvino部署,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题

YOLOv3-tiny如何在VS2015上使用Openvino部署?针对这个问题,本文详细介绍了相应的分析和解答,希望能帮助更多想要解决这个问题的小伙伴找到更简单易行的方法。

00-1010前几天增加了两个Openvino组,本来想问Openvino是如何量化YOLOv3-tiny的int8的,但是没有得到想要的答案。但是发现这么多人没有好好利用Openvino。他们只是在网上寻找信息。我在百度上搜索了中文目标检测算法的部署信息。其实这并不难。我们可以用官方的例子来改变它。所以我答应几个同学写一个部署流程。希望用Openvino把YOLOv3-tiny(其他目标检测算法之类的)部署到cpu或者英特尔神经棒(1代或者2代)上就可以了。

00-1010,我就不多介绍了。我使用AlexeyAB版本darknet训练的YOLOv3-tiny模型(地址见附录),得到想要的权重文件,调用命令测试图像检测效果是否正确。

00-1010克隆OpenVINO-YoloV3项目,完整地址见附录。将项目下的coco.names修改为与培训时相同。确保要使用的python环境有tensorflow版本,1.8和1.9应该没问题。执行:python3 convert_weights_pb.py

-class _ name VOC . name

-weights _ file yolo v3 _ tiny _ 200000 . weights

-数据格式NHWC

-tiny-output _ graph frozed _ tiny _ yolo _ v3 . Pb

不出所料,冻结的_tiny_yolo_v3.pb文件将在您的OpenVINO-YoloV3文件下生成,这是我们需要的pb文件。00-1010我这里用的是OpenVINO2019.1.087,只要OpenVINO某个版本中的扩展模块包含YOLORegion Layer,应该就可以了。转换步骤如下:

将frozen _ tiny _ yolo _ v3.pb复制到OpenVINO所在的位置。

在文件夹f : \ intelswtools \ OpenVINO _ 2019 . 1 . 087 \ deployment _ tools \ model _ optimizer下,注意这个文件夹是我安装OpenVINO的路径,可以自己修改。创建一个新的yolov3-tiny.json文件并将其放入

在文件夹f : \ intelswtools \ open vino _ 2019 . 1 . 087 \ deployment _ tools \ model _ optimizer下。是的,请注意classes是数据集中目标类别的数量:[

{

id': 'TFYOLOV3 ',

match_kind': 'general ',

custom_attributes': {

类别' : 3,

坐标: 4,

num': 6,

mask': [0,1,2],

锚' :[10,14,23,27,37,58,81,82,135,169,344,319],

entry_points': ['检测器/yolo-v3-tiny/重塑','检测器/yolo-v3-tiny/重塑_4

quot;]
   }
 }
]

 


  •     F:\IntelSWTools\openvino_2019.1.087\deployment_tools\model_optimizer文件夹下,执行下面的命令来完成pb文件到OpenVINO的IR文件转换过程。
python mo_tf.py --input_model frozen_darknet_yolov3_model.pb
--tensorflow_use_custom_operations_config yolo_v3_tiny.json
--input_shape=[1,416,416,3]  --data_type=FP32

 

  • 不出意外的话就可以获得
        frozen_darknet_yolov3_model.bin
        frozen_darknet_yolov3_model.xml了。

 

利用VS2015配合OpenVINO完成YOLOv3-tiny的前向推理

因为yolov3-tiny里面的yoloRegion Layer层是openvino的扩展层,所以在vs2015配置libinclude文件夹的时候需要把cpu_extension.libextension文件夹加进来。最后includelib文件夹分别有的文件如下:

  • include文件夹:
        YOLOv3-tiny怎么在VS2015上使用Openvino部署
  • lib文件夹:

YOLOv3-tiny怎么在VS2015上使用Openvino部署其中cpu_extension.lib在安装了OpenVINO之后可能是没有的,这时候就需要手动编译一下。这个过程很简单,我在后边放了一个链接讲得很清楚了。

includelib配置好之后就可以编写代码进行预测了。代码只需要在OpenVINO-YoloV3工程的cpp目录下提供的main.cpp稍微改改就可以了。因为我这里使用的不是原始的Darknet,而是AlexeyAB版本的darknet,所以图像resize到416的时候是直接resize而不是letter box的方式。具体来说修改部分的代码为:YOLOv3-tiny怎么在VS2015上使用Openvino部署然后除了这个地方,由于使用的YOLOv3-tiny,OpenVINO-YoloV3里面的cpp默认使用的是YOLOv3的Anchor,所以Anchor也对应修改一下:

YOLOv3-tiny怎么在VS2015上使用Openvino部署这两个地方改完之后就可以顺利完成前向推理过程了,经过我的测试,相比于原始的darknet测试结果在小数点后两位开始出现差距,从我在几千张图片的测试结果来看,精度差距在1/1000到1/500,完全是可以接受的。

注意github上面的cpp那些打印信息都是没有必要可以注释掉,然后异步策略在测试时候也可以选择不用,我改好了一个可以直接运行的cpp。

关于YOLOv3-tiny怎么在VS2015上使用Openvino部署问题的解答就分享到这里了,希望

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/79839.html

(0)

相关推荐

  • 解析Java对象引用与JVM自动内存管理

    技术解析Java对象引用与JVM自动内存管理 解析Java对象引用与JVM自动内存管理对象引用应用程序设计接口是JDKTM1.2中新定义的。该应用程序设计接口允许应用程序以对象引用的方式与JVM的内存管

    礼包 2021年11月1日
  • activity和singletask(task和activity有什么区别)

    技术Activity的singleTask有什么作用本篇内容主要讲解“Activity的singleTask有什么作用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Activ

    攻略 2021年12月18日
  • 微信清空聊天记录,手机微信聊天信息如何清屏

    技术微信清空聊天记录,手机微信聊天信息如何清屏1、打开手机,在手机桌面找到微信选项软件,点击进入微信清空聊天记录。2、在微信界面中,点击我选项进入。3、在我界面中,点击设置选项进入。4、在设置界面中,点击聊天选项进入。5

    2021年10月23日
  • 和田玉价格走势,和田玉价格是怎样涨起来的

    技术和田玉价格走势,和田玉价格是怎样涨起来的以下是鸿璐的一些浅见和田玉价格走势,希望对您有所帮助和田玉历史悠久,从古至今备受人们喜爱!和田玉润更是以其优秀的润度屹立于玉石行列的顶端!和田玉的“羊脂白玉”更是以其白中有润,

    生活 2021年10月22日
  • 【Lock】加锁解锁

    技术【Lock】加锁解锁 【Lock】加锁解锁@Slf4j
    public class TestLock {public static void main(String[] args) throws Ex

    礼包 2021年11月18日
  • 为什么应该选择美国服务器服务器租用美国

    技术为什么应该选择美国服务器服务器租用美国在海外服务器上搭建您的网站时,美国服务器都是您应该考虑的选项。以下是为什么应该选择美国服务器的原因专业技术支持 人们应该选择美国服务器租用服务的主要原因是它提供的技术支持。无论发

    礼包 2021年12月17日