首页 > 其他分享 >Tensorflow模型转换onnx模型

Tensorflow模型转换onnx模型

时间:2024-07-03 14:30:14浏览次数:3  
标签:name output graph 模型 onnx Tensorflow import image def

1.查看pb文件的输入输出

一般cv相关的输入只有一个输入,即图片,但输出却可能有多个,可以查看训练模型等确定输出。

import tensorflow.compat.v1 as tf

PATH_TO_CKPT = "/xxx/yyyy/resnet.pb"
def create_graph():
    with tf.gfile.FastGFile(PATH_TO_CKPT, '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')

2.使用tf2onnx转换

import tf2onnx

PATH_TO_CKPT = "/xxx/yyyy/resnet.pb"
output_path = "/xxx/yyyy/resnet.onnx"

#以下两个函数的输入输出要和pb文件的输入输出一致,需要在名字后面加“:0”
graph_def, _, _ = tf2onnx.tf_loader.from_graphdef(
    PATH_TO_CKPT, ["input_1:0"], ["predictions/Softmax:0"])

# 可以rename简化名称,tensors_to_rename = {"pred:0": "pred", "X:0": "X"}
model_proto, _ = tf2onnx.convert.from_graph_def(graph_def, input_names=["input_1:0"], 
                                                output_names=["predictions/Softmax:0"],
                                                opset=13, output_path=output_path,)
output_names = [n.name for n in model_proto.graph.output]
print(output_names)

3.使用onnx预测

#加载图片,输入与tensorflow的输入一致
import imutils
import cv2
import onnxruntime
import numpy as np

image = imutils.url_to_image(img_url)
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
image = cv2.resize(image,(224,224))
image_np_expanded = np.expand_dims(image, axis=0)
#加载onnx模型
#使用gpu可以providers=["CUDAExecutionProvider"]
model = onnxruntime.InferenceSession(output_path,providers=["CPUExecutionProvider"])
#输入输出的名字要和模型转换时的设置一致
result = model.run(["predictions/Softmax:0"],{"input_1:0":image_np_expanded.astype(np.float32)})
print(result)
#和tensorflow的结果preds进行比较
#np.testing.assert_allclose(preds, result[0], rtol=1e-5)

标签:name,output,graph,模型,onnx,Tensorflow,import,image,def
From: https://blog.csdn.net/zhilaizhiwang/article/details/140151174

相关文章

  • keras模型转换onnx模型
    1.keras一般先转换为tensorflow的pb格式,然后再使用tf2onnx转换。2.tensorflow转换为onnxkeras转换tensorflow:参考:https://github.com/amir-abdi/keras_to_tensorflowimporttensorflowastffromtensorflow.python.frameworkimportgraph_utilfromtensorflow.pytho......
  • 使用中转API访问OpenAI大模型的指南
    在现代AI技术的迅速发展中,大语言模型(LLM)如OpenAI的GPT-4变得越来越重要。然而,由于中国地区的网络限制,直接访问海外的API可能会遇到困难。为了方便开发者使用这些强大的工具,我们可以通过中转API地址http://api.wlai.vip来进行访问。本文将介绍如何使用中转API访问OpenAI大模......
  • 多模态大模型入门指南
    作者:林夕,阿里巴巴集团高级算法工程师,专注多模态大模型研究。声明:本文只做分享,版权归原作者,侵权私信删除!原文:https://zhuanlan.zhihu.com/p/682893729内容总结,本篇综述主要介绍和分析了以下几个方面:•概述了MM-LLMs的设计形式,将模型架构分为5个部分:模态编码器、输入......
  • AI绘画Stable Diffusion 3.0大模型解锁AIGC写实摄影:摄影构图与视角关键提示,SD3模型最
    大家好,我是设计师阿威在现实摄影领域中,创作出优秀的摄影图像会涉及很多关键技术要素,如:光影效果、摄影构图(摄影机位置:相机与主体的距离)和摄影角度(相机相对于主体的位置)等的选择。这些核心要素对于AIGC绘图(StableDiffusion1.5/XL、Playground、Midjourney)创作也极为重要......
  • AI预测福彩3D采取888=3策略+和值012路或胆码测试7月3日新模型预测第23弹
            今天咱们继续验证新模型的8码定位=3,重点是预测8码定位=3+和值012+胆码。有些朋友看到我最近几篇文章没有给大家提供缩水后的预测详情,在这里解释下:其实我每篇文章中既有8码定位,也有和值012路,也有胆码排序,这些条件如果命中的话,其实大家完全可以自行使用一些免费的......
  • AI预测体彩排3采取888=3策略+和值012路或胆码测试7月3日升级新模型预测第18弹
            根据前面的预测效果,我对模型进行了重新优化,因为前面的模型效果不是很好。熟悉我的彩友比较清楚,我之前的主要精力是对福彩3D进行各种模型的开发和预测,排三的预测也就是最近1个月才开始搞的。3D的预测,经过对模型的多次修改和完善,最新的模型命中率有了大幅提高,大......
  • 昇思25天学习打卡营第8天|模型权重与 MindIR 的保存加载
    目录导入Python库和模块创建神经网络模型保存和加载模型权重保存和加载MindIR导入Python库和模块        上一章节着重阐述了怎样对超参数予以调整,以及如何开展网络模型的训练工作。在网络模型训练的整个进程当中,事实上我们满怀期望能够留存中间阶段以及最......
  • 利用中转API部署本地大语言模型
    前言在本文中,我们将展示如何使用中转API地址(http://api.wlai.vip)来部署本地的大语言模型(LLM)。我们将使用Llama2聊天模型作为示例,但该方法适用于所有受支持的LLM模型。本文将包括以下几个步骤:安装所需库、启动本地模型、创建索引和查询引擎,并附上示例代码和可能遇到......
  • 外网爆火!真正内行人必看的大模型神书!
    ......
  • The Forest Enemy Pack(2D动画角色游戏模型)
    这个包包含14个适用于platformer和2drpg游戏的动画角色。动画总帧数:1785用于动画的所有精灵都具有透明背景,并准备有1500x1200和750x600两种尺寸。对于每个角色,你也可以找到具有单独身体部位的精灵表,这样你就可以轻松地制作自己的动画。它们有PNG和PSD格式。示例场景包含......