固化pb模型(faster rcnn 等一系列都适用)

固化pb模型(faster rcnn 等一系列都适用)

很多时候在固化模型时会遇到找不到node_names的情况,尤其是使用现成的网络。

训练生成ckpt

使用网络训练后会生成4个ckpt加一个checkpoint文件

使用tensorboard

使用tensorboard可以查看到完整的网络结构,我们需要从ckpt生成tensorboard

graph = tf.get_default_graph()
graphdef = graph.as_graph_def()
tfmodel = os.path.join('default',  DATASETS[dataset][0], 'default', NETS[demonet][0])  #ckpt 目录
meta = tfmodel+“meta”

这里需要获取meta的目录

 _= tf.train.import_meta_graph(meta)
 summary_write = tf.summary.FileWriter("logs", graph)

ok可以在logs中看到生成 events.out.tfevents.1564024320.XXXX 文件,下面就可以启动tensorflow了
在命令行通过:

tensorboard --logdir logs --host localhost --port 6006

启动浏览器,地址栏输入 localhost:6006就可以了,类似这个样子。这里盗张图

固化pb模型(faster rcnn 等一系列都适用)
这样就可以找到想要的节点了。

很多时候还是懵逼

我们直接在图中打印出来节点信息
同样拿到ckpt目录

tfmodel = os.path.join('default',  DATASETS[dataset][0], 'default', NETS[demonet][0]) #ckpt 目录

把网络还原出来

sess = tf.Session(config=tfconfig)
# load network
net = resnetv1(batch_size=1, num_layers=50)

net.create_architecture(sess, "TEST", 3,
                        tag='default', anchor_scales=[8, 16,
                                                      32])  # sess, mode, num_classes, tag=None, anchor_scales, anchor_ratios
saver = tf.train.Saver()
saver.restore(sess, tfmodel)

直接打印

# 获得几乎所有的operations相关的tensor
    ops = [o for o in sess.graph.get_operations()]
    for o in ops:
        print(o.name)

打印出来是这样的

save/Assign_268
save/Assign_269
save/Assign_270
save/Assign_271
save/Assign_272
save/Assign_273
save/Assign_274
save/restore_all

直接在固化函数里使用即可

上一篇:cs20_6-1


下一篇:Unity-SHA256加密