[OpenVINO 学习笔记-02] Darknet模型转IR数据格式

本文旨在记录如何将YOLO系列模型转换IR数据格式,所有的YOLO模型最初实现框架是Darkent,而Darknet包含有两个文件:

  • .cfg 模型配置文件
  • .weights 模型权重文件

Intel OpenVINO中并没有直接封装从darknet转换IR的脚本,需要先将Darknet转换Tensorflow,然后再有TensorFlow转换至IR。

1. 转换YOLOv3模型到Tensorflow*

这里我们基于https://github.com/mystic123/tensorflow-yolo-v3 (commit ed60b90)将Darknet转换至TensorFlow,步骤如下:

git clone https://github.com/mystic123/tensorflow-yolo-v3
cd tensorflow-yolo-v3
git checkout ed60b90

准备coco.names和yolov3.weights(yolov3 模型) or yolov3-tiny.weights(yolov3-tiny 模型)

运行转换脚本:

# yolov3
python3 convert_weights_pb.py --class_names coco.names --data_format NHWC --weights_file yolov3.weights
# yolov3-tiny
python3 convert_weights_pb.py --class_names coco.names --data_format NHWC --weights_file yolov3-tiny.weights --tiny

需要注意,这里默认输入图像的大小为416*416, 若需要更换需指定输入图像大小(假设指定为448)

# yolov3
python3 convert_weights_pb.py --class_names coco.names --data_format NHWC --weights_file yolov3.weights --size 448

2. 转换YOLOv3 tensorflow模型到IR数据格式

转换过程中使用的配置文件yolo_v3.json或yolo_v3_tiny.json(取决于模型),配置文件位于/opt/intel/openvino/deployment_tools/model_optimizer/extensions/front/tf

以yolo_v3.json为例,包含属性如下:

[
  {
    "id": "TFYOLOV3",
    "match_kind": "general",
    "custom_attributes": {
      "classes": 80,
      "anchors": [10, 13, 16, 30, 33, 23, 30, 61, 62, 45, 59, 119, 116, 90, 156, 198, 373, 326],
      "coords": 4,
      "num": 9,
      "masks":[[6, 7, 8], [3, 4, 5], [0, 1, 2]],
      "entry_points": ["detector/yolo-v3/Reshape", "detector/yolo-v3/Reshape_4", "detector/yolo-v3/Reshape_8"]
    }
  }
]

id 和 match_kind 是参数,此处不需要进行修改;

custom_attributes 主要存储了YOLOv3某些特殊的属性:

       classses, coords, num, masks,  这些按照Darknet的.cfg配置过来就好;

       anchors:  是一个非必要参数,在模型推理时不使用,主要在解析Region 层的输出;

       entry_points 是一个节点名list,此处不需要修改;

生成YOLOv3 Tensorflow 模型的IR:

cd /opt/intel/openvino/deployment_tools/model_optimizer
python3 mo_tf.py 
--input_model /opt/MODEL/frozen_darknet_yolov3_model.pb
--tensorflow_use_custom_operations_config extensions/front/tf/yolo_v3.json
--batch 1

生成YOLOv3-tiny Tensorflow 模型的IR:

cd /opt/intel/openvino/deployment_tools/model_optimizer
python3 mo_tf.py 
--input_model /opt/MODEL/frozen_darknet_yolov3_model.pb
--tensorflow_use_custom_operations_config extensions/front/tf/yolo_v3_tiny.json
--batch 1

完,

发布了401 篇原创文章 · 获赞 39 · 访问量 45万+

猜你喜欢

转载自blog.csdn.net/caicaiatnbu/article/details/103806208