YOLOv3-tiny在VS2015上使用Openvino部署
BBuf
前言
前几天加了两个Openvino群,准备请教一下关于Openvino对YOLOv3-tiny的int8量化怎么做的,没有得到想要的答案。但缺发现有那么多人Openvino并没有用好,都是在网络上找资料,我百度了一下中文似乎没有靠谱的目标检测算法的部署资料,实际上这个并不难,用官方提供的例子改一改就可以出来。所以我答应了几个同学写一个部署流程希望对想使用Openvino部署YOLOv3-tiny(其他目标检测算法类推)到cpu或者Intel神经棒上(1代或者2代)都是可以的。
YOLOv3-tiny模型训练
这部分我就不过多介绍了,我使用的是AlexeyAB版本darknet训练的YOLOv3-tiny模型(地址见附录),得到想要的weights文件,并调用命令测试图片的检测效果无误。具体训练过程可以看我之前写的一篇博客,地址放附录了。
Darknet模型转pb模型
- 克隆OpenVINO-YoloV3 工程,完整地址见附录。
- 修改工程下面的coco.names改成和自己训练的时候一样。
- 确保你要使用的python环境有tensorflow版本,1.8和1.9应该都没什么问题。
- 执行:
python3 convert_weights_pb.py
--class_names voc.names
--weights_file yolov3_tiny_200000.weights
--data_format NHWC
--tiny --output_graph frozen_tiny_yolo_v3.pb
- 不出意外会在你的OpenVINO-YoloV3文件下生成了frozen_tiny_yolo_v3.pb文件,这个文件就是我们需要的pb文件。
在Windows上将pb文件转换为IR模型
我这里使用了OpenVINO2019.1.087,只要OpenVINO某个版本里面extension模块包含了YOLORegion Layer应该都是可以的。转换步骤如下:
-
拷贝frozen_tiny_yolo_v3.pb到OpenVINO所在的
F:\IntelSWTools\openvino_2019.1.087\deployment_tools\model_optimizer
文件夹下,注意这个文件夹是我安装OpenVINO的路径,自行修改一下即可。 -
新建一个yolov3-tiny.json文件,放在
F:\IntelSWTools\openvino_2019.1.087\deployment_tools\model_optimizer
文件夹下。内容是,注意一下里面classes是你的数据集中目标类别数:
[
"id": "TFYOLOV3",
"match_kind": "general",
"custom_attributes": {
"classes": 3,
"coords": 4,
"num": 6,
"mask": [0,1,2],
"anchors":[10,14,23,27,37,58,81,82,135,169,344,319],