当前位置:   article > 正文

如何将yolov3转成tensorflow的.pb模型_yolo 生成pb

yolo 生成pb

如何将yolov3转成tensorflow的.pb模型

前言

参考资料:
https://blog.csdn.net/heiheiya/article/details/91437196
这里首先感谢上面的大佬提供的源码以及转换方法,本文只是搬运总结一下。
最近想把yolov3部署到移动端,然后用android的npu接口加载模型跑下试试性能。但网上大多提供的yolov3都是.weights模型,而最终npu接口所需要的是.tflite。所以我需要先把.weights转成.pb,然后再把.pb通过转换工具转成.tflite。本文先介绍如何将.weights转成.pb。
运行环境
python 3.6.7
tensorflow 1.9.0

具体步骤

按照参考资料中博客所写,即可轻松进行模型转换。
1.首先下载coco.namesyolov3.weights两个文件。
这里方便起见,可以直接新建个coco.names的文件,然后把下面内容复制进去。

person
bicycle
car
motorbike
aeroplane
bus
train
truck
boat
traffic light
fire hydrant
stop sign
parking meter
bench
bird
cat
dog
horse
sheep
cow
elephant
bear
zebra
giraffe
backpack
umbrella
handbag
tie
suitcase
frisbee
skis
snowboard
sports ball
kite
baseball bat
baseball glove
skateboard
surfboard
tennis racket
bottle
wine glass
cup
fork
knife
spoon
bowl
banana
apple
sandwich
orange
broccoli
carrot
hot dog
pizza
donut
cake
chair
sofa
pottedplant
bed
diningtable
toilet
tvmonitor
laptop
mouse
remote
keyboard
cell phone
microwave
oven
toaster
sink
refrigerator
book
clock
vase
scissors
teddy bear
hair drier
toothbrush
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80

2.下载https://github.com/mystic123/tensorflow-yolo-v3.git代码到本地。这个大神写的代码还是很好用的,很适合单纯的进行模型转换,没有冗余的东西。

git clone https://github.com/mystic123/tensorflow-yolo-v3.git
  • 1

下面是成功clone的log。
在这里插入图片描述

3.将下载好的coco.names、yolov3.weights放入步骤2的代码同级目录下。如下图所示。
在这里插入图片描述

4.开启终端,或pycharm的终端。进入tensorflow-yolo-v3的路径下,运行

python convert_weights_pb.py --class_names coco.names --data_format NHWC --weights_file yolov3.weights
  • 1

即可得到名为 frozen_darknet_yolov3_model.pb文件。
运行log如下:
在这里插入图片描述

5.生成 frozen_darknet_yolov3_model.pb文件后,我们运行下列代码,看下转换后的.pb文件各层的名字是否对应。

import tensorflow as tf
import os

model_dir = './'
model_name = 'frozen_darknet_yolov3_model.pb'

def create_graph():
    with tf.gfile.FastGFile(os.path.join(model_dir, model_name), 'rb') as f:
        graph_def = tf.GraphDef()
        graph_def.ParseFromString(f.read())
        tf.import_graph_def(graph_def, name='')

create_graph()
tensor_name_list = [tensor.name for tensor in tf.get_default_graph().as_graph_def().node]
for tensor_name in tensor_name_list:
    print(tensor_name, '\n')
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

运行完之后会出现一大坨层的名字,结果如下:
在这里插入图片描述

后记

至此,yolov3.weights转成.pb格式完成,希望接下来能坚持把.pb转.tflite的具体过程探索完成,并记录下来。

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号