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配置lib
和include
文件夹的时候需要把cpu_extension.lib
和extension文件夹
加进来。最后include
和lib
文件夹分别有的文件如下:
-
include文件夹:
-
lib文件夹:
其中cpu_extension.lib
在安装了OpenVINO之后可能是没有的,这时候就需要手动编译一下。这个过程很简单,我在后边放了一个链接讲得很清楚了。
把include
和lib
配置好之后就可以编写代码进行预测了。代码只需要在OpenVINO-YoloV3工程的cpp目录下提供的main.cpp稍微改改就可以了。因为我这里使用的不是原始的Darknet,而是AlexeyAB版本的darknet,所以图像resize到416
的时候是直接resize而不是letter box
的方式。具体来说修改部分的代码为:然后除了这个地方,由于使用的YOLOv3-tiny,OpenVINO-YoloV3里面的cpp默认使用的是YOLOv3的Anchor,所以Anchor也对应修改一下:
这两个地方改完之后就可以顺利完成前向推理过程了,经过我的测试,相比于原始的darknet测试结果在小数点后两位开始出现差距,从我在几千张图片的测试结果来看,精度差距在1/1000到1/500,完全是可以接受的。
注意github上面的cpp那些打印信息都是没有必要可以注释掉,然后异步策略在测试时候也可以选择不用,我改好了一个可以直接运行的cpp。
关于YOLOv3-tiny怎么在VS2015上使用Openvino部署问题的解答就分享到这里了,希望
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/79839.html