gpt4 book ai didi

python - 无法将 tensorflow 卡住图转换为 pbtxt 文件

转载 作者:行者123 更新时间:2023-12-01 00:45:34 26 4
gpt4 key购买 nike

我想在给定 tensorflow 卡住推理图的输入的情况下提取 pbtxt 文件。为了做到这一点,我使用以下脚本:

import tensorflow as tf

#from google.protobuf import text_format
from tensorflow.python.platform import gfile

def converter(filename):
with gfile.FastGFile(filename,'rb') as f:
graph_def = tf.GraphDef()
graph_def.ParseFromString(f.read())
tf.import_graph_def(graph_def, name='')
tf.train.write_graph(graph_def, 'pbtxt/', 'protobuf.pbtxt', as_text=True)
print(graph_def)
return


#converter('ssd_mobilenet_v1_coco_2017_11_17/frozen_inference_graph.pb') # here you can write the name of the file to be converted
# and then a new file will be made in pbtxt directory.

converter('ssd_mobilenet_v1_coco_2017_11_17/frozen_inference_graph.pb')

作为示例,我正在使用 SSD mobilenet 架构。使用上面的代码我得到的输出为 pbtxt 但我无法使用它。引用下图

enter image description here

RIGHT: Image of original pbtxt file of mobile-net architecture

LEFT: Image of pbtxt file obtained by using above script.

当我使用右侧的官方 pbtxt 时,我得到了正确的结果。但是,当我使用使用上面脚本生成的 LEFT pbtxt 时,我没有得到任何预测

我在 open cv DNN 模块上使用这些预测

tensorflowNet = cv2.dnn.readNetFromTensorflow('ssd_mobilenet_v1_coco_2017_11_17/frozen_inference_graph.pb', 'pbtxt/protobuf.pbtxt')

如何将 mobilenet 卡住推理图转换为正确的 pbtxt 格式以便我可以进行推理?

引用文献: https://gist.github.com/Arafatk/c063bddb9b8d17a037695d748db4f592

最佳答案

这对我有用

  • git 克隆 https://github.com/opencv/opencv.git
  • 导航至 opencv/samples/dnn/
  • 复制与您的 pb 文件对应的 freeze_inference_graph.pb 和 *.config 文件
  • 将复制的文件粘贴到 opencv/samples/dnn 目录中
  • 在 den 目录中创建一个新文件夹并将其命名为“exported_pbtxt”

并运行此脚本:

python3 tf_text_graph_ssd.py --input frozen_inference_graph.pb --output exported_pbtxt/output.pbtxt --config pipeline.config

enter image description here

这就是您所需要的,现在复制卡住的推理图和新生成的 pbtxt 文件。并且,使用以下脚本通过 OpenCV 运行您的模型:

import cv2

# Load a model imported from Tensorflow
tensorflowNet = cv2.dnn.readNetFromTensorflow('card_graph/frozen_inference_graph.pb', 'exported_pbtxt/output.pbtxt')

# Input image
img = cv2.imread('image.jpg')
rows, cols, channels = img.shape

# Use the given image as input, which needs to be blob(s).
tensorflowNet.setInput(cv2.dnn.blobFromImage(img, size=(300, 300), swapRB=True, crop=False))

# Runs a forward pass to compute the net output
networkOutput = tensorflowNet.forward()

# Loop on the outputs
for detection in networkOutput[0,0]:

score = float(detection[2])
if score > 0.9:

left = detection[3] * cols
top = detection[4] * rows
right = detection[5] * cols
bottom = detection[6] * rows

#draw a red rectangle around detected objects
cv2.rectangle(img, (int(left), int(top)), (int(right), int(bottom)), (0, 0, 255), thickness=2)

# Show the image with a rectagle surrounding the detected objects
cv2.imshow('Image', img)
cv2.waitKey()
cv2.destroyAllWindows()

关于python - 无法将 tensorflow 卡住图转换为 pbtxt 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57007707/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com