当前位置: 首页 > 知识库问答 >
问题:

AutoML Vision Edge的saved_model未正确加载

柴英锐
2023-03-14

我一直在使用AutoML Vision Edge进行一些图像分类任务,在以TFLite格式导出模型时效果很好。但是,我刚刚尝试导出saved_model.pb文件并使用Tensorflow 2.0运行它,似乎遇到了一些问题。

代码段:

import numpy as np
import tensorflow as tf
import cv2

from tensorflow import keras

my_model = tf.keras.models.load_model('saved_model')
print(my_model)
print(my_model.summary())

saved_model是包含我下载的saved_model.pb文件的目录。这是我看到的:

2019-10-1823:TensorFlow binary:8.801647,TysFrace/Cyp/ Sturdie/CpUPUTIONEXLA DEARG.CC:142)CPU支持该编译的指令:AVX2FMA2019-10-1823:8.829017:I TysFult/Cyp/XLA/Service /Service,CC:168)XLA服务0x7FFC2D717510在平台主机上执行计算。设备:2019-10-18 23:29:08.829038:I tensorflow/compiler/xla/service/service.cc:175]StreamExecutor设备(0):主机,默认版本回溯(最后一次调用):文件“classify_in_out_tf2.py”,第81行,正在打印(my_model.summary())AttributeError:“AutoTrackable”对象没有属性“summary”

我不确定这是否与导出模型的方式有关,或者与加载模型的代码有关,或者这些模型是否与Tensorflow 2.0或某些组合不兼容。

任何帮助将不胜感激!

共有1个答案

蓟捷
2023-03-14

我的已保存\u model.pb在docker容器外工作(用于对象检测,而不是分类-但它们应该类似,更改tf 1.14的输出和可能的输入),以下是如何:

import cv2
import tensorflow as tf
cv2.imread(filepath)
flag, bts = cv.imencode('.jpg', img)
inp = [bts[:,0].tobytes()]
with tf.Session(graph=tf.Graph()) as sess:
    tf.saved_model.loader.load(sess, ['serve'], 'directory_of_saved_model')
    graph = tf.get_default_graph()
    out = sess.run([sess.graph.get_tensor_by_name('num_detections:0'),
            sess.graph.get_tensor_by_name('detection_scores:0'),
            sess.graph.get_tensor_by_name('detection_boxes:0'),
            sess.graph.get_tensor_by_name('detection_classes:0')],
           feed_dict={'encoded_image_string_tensor:0': inp})
import cv2
import tensorflow as tf
import numpy as np
with tf.Session(graph=tf.Graph()) as sess:
    tf.saved_model.loader.load(sess, ['serve'], 'directory_of_saved_model')
    graph = tf.get_default_graph()
    # Read and preprocess an image.
    img = cv2.imread(filepath)
    # Run the model
    out = sess.run([sess.graph.get_tensor_by_name('num_detections:0'),
                    sess.graph.get_tensor_by_name('detection_scores:0'),
                    sess.graph.get_tensor_by_name('detection_boxes:0'),
                    sess.graph.get_tensor_by_name('detection_classes:0')],
                   feed_dict={'map/TensorArrayStack/TensorArrayGatherV3:0': img[np.newaxis, :, :, :]})                                                         

我使用netron查找我的输入。

import cv2
import tensorflow as tf
img = cv2.imread('path_to_image_file')
flag, bts = cv2.imencode('.jpg', img)
inp = [bts[:,0].tobytes()]
loaded = tf.saved_model.load(export_dir='directory_of_saved_model')
infer = loaded.signatures["serving_default"]
out = infer(key=tf.constant('something_unique'), image_bytes=tf.constant(inp))

 类似资料:
  • 我应该有一个正常的贴图如下: 但当我加载场景时,或者从inspector中的另一个场景切换(例如,单击“场景/菜单”,然后单击此场景),或者在游戏中转移到此场景(),精灵会随机不可见。 每次都有一些精灵隐形,下一次隐形的可能就不一样了。我怀疑这是Unity编辑器的问题,因为即使我不在播放模式下也会发生这种情况。 在中,我肯定会找到这些sprite(不是null)。他们就是不出现。我必须重新加载精灵

  • 我试图使用一个带有selenium的无头chrome浏览器,它也绕过了机器人检测测试,目前使用以下项目https://github.com/ultrafunkamsterdam/undetected-chromedriver每次我试图实现代码时,它都不能识别驱动程序。以下是您了解的链接 这是代码 好吧,当我运行程序时,我在终端中得到以下内容

  • 我已经为我的mod.info提供了mcmod.info,但是在IntelliJ中运行Minecraft客户端后,mod确实加载了,但是它不能正确加载mcmod.info。在Minecraft客户端的启动过程中,有一条警告显示: [Client Thread/Warn][FML]:Mod testforge缺少所需的元素“version”,并且找不到后退。替换为“1.0”。 当我进入mod按钮并查找

  • 我有一个问题与我的代码和加载一个嵌入式谷歌地图API与样式。请参阅下面的代码和我加载网页时发生的事情的屏幕截图。 https://i.stack.imgur.com/TqthU.png

  • 我与运行mac os的项目成员在加载FXML时遇到问题。我对java代码中的整个JavaFX加载过程相当陌生,但目前我的代码就是这样编写的。这个类叫做ControlPanel.java,fxml是ControlPanel.fxml,它包含onAction方法,我使用ControlPanel.java作为这些方法的控制器。它在windows操作系统上运行完全正常,但当我们尝试在eclipse中运行它

  • 我的拓扑的配置是: 我的第一个TransformBolt螺栓是: