深度学习之格式转换笔记(三):keras(.hdf5)模型转TensorFlow(.pb) 转TensorRT(.uff)格式

article/2025/8/16 6:54:39

环境
tensorflow1.15,cuda10.0,cudnn7.6.4

将keras训练好保存的.hdf5格式模型转为tensorflow的.pb模型,然后转为tensorrt支持的uff格式。

keras(.hdf5)模型转TensorFlow(.pb)

# h5_to_pb.pyfrom keras.models import load_model
import tensorflow as tf
import os
import os.path as osp
from keras import backend as K# 路径参数
input_path = 'D:/pycharm/facenet/models/'
weight_file = 'resnet50.hdf5'
weight_file_path = osp.join(input_path, weight_file)
output_graph_name = weight_file[:-3] + '.pb'# 转换函数
def h5_to_pb(h5_model, output_dir, model_name, out_prefix="output_", log_tensorboard=True):if osp.exists(output_dir) == False:os.mkdir(output_dir)out_nodes = []for i in range(len(h5_model.outputs)):out_nodes.append(out_prefix + str(i + 1))tf.identity(h5_model.output[i], out_prefix + str(i + 1))sess = K.get_session()from tensorflow.python.framework import graph_util, graph_ioinit_graph = sess.graph.as_graph_def()main_graph = graph_util.convert_variables_to_constants(sess, init_graph, out_nodes)graph_io.write_graph(main_graph, output_dir, name=model_name, as_text=False)if log_tensorboard:from tensorflow.python.tools import import_pb_to_tensorboardimport_pb_to_tensorboard.import_to_tensorboard(osp.join(output_dir, model_name), output_dir)# 输出路径
output_dir = osp.join(os.getcwd(), "trans_model")
# 加载模型
print(weight_file_path)
h5_model = load_model(weight_file_path)
# model.load_weights
h5_to_pb(h5_model, output_dir=output_dir, model_name=output_graph_name)
print('model saved')

TensorFlow(.pb) 转TensorRT(.uff)

只需要安装好TensorRT之后通过终端运行convert-to-uff resnet50.pb即可得到resnet50.uff 。

测试:如果你想实验一下可以根据tensorrt自带的例子来进行实验,过程如下:

  • 在jetson nano上测试tensorRT,tensorrt是当时安装镜像的时候就自带有得,通过import tensorrt和import
    uff都能够成功,进行测试得时候我用得是在/usr/src/tensorrt/samples/python文件夹下有很多python的例子,我们以第一个end_to_end_tensorflow_mnist的例子为例,

    mkdir models python model.py

    然后下载数据mnist.npz,并开始训练,完成后在models文件夹下生成lenet5.pb文件
    在这里插入图片描述
    然后在进行格式转换,要将tensorflow的pb文件转化为uff格式的文件,首先找到convert_to_uff文件,看自己用的是哪个版本的python,如果是python3,则在/usr/lib/python3.5/dist-packages/uff/bin文件夹下,如果是python2,则在/usr/lib/python2.7/dist-packages/uff/bin文件夹下,我们在终端中进入end_to_end_tensorflow_mnist,运行以下指令

python3 /usr/lib/python3.6/dist-packages/uff/bin/convert_to_uff.py --input_file models/lenet5.pb

则会在models文件夹中生成lenet5.uff文件,完成转换,在通过sample.py进行测试,出现报错没有安装pycuda,后发现这个库是用于GPU加速的。

如果在jetson nano上安装pycuda不会的同学可以看这篇文章:
https://blog.csdn.net/m0_51004308/article/details/115280360

再次运行python3 sample.py 报错Could not find 9.pgm。

解决:在/usr/src/tensorrt/data/mnist下找到download_pgms.py文件并通过python3运行即可。
后面就通过了,运行sample.py之后出现
Test Case:8
Prediction:8


http://chatgpt.dhexx.cn/article/xEDLe405.shtml

相关文章

Jetson 学习笔记(五):pb转uff---pb转onnx转trt----pth转onnx转pb

文章目录 pb转uff具体代码运行结果 pb转onnx转trt具体代码pb转onnx运行结果onnx转化trt方法1:trtexec方法2:onnx-tensorrt工具 推理trt模型 pth转onnxonnx转pb方法1:onnx-tensorflow工具方法2:代码执行 pb转uff具体代码 这里用的是uff自带的一个转换器,直接通过调用…

Tensorflow pb模型转uff模型方法及遇到KeyError20和expected Const问题解决

项目所需要将Tensorflow 生成的pb模型转为uff模型,方法很简单,但是遇到的问题着实很多,这里主要记录下问题及解决方法,总之,最后是成功生成uff格式的模型的,有需要的可以参考。 pb模型转为uff模型的方法及步…

安装TensorRT,然后导入uff库包的时候报错:ImportError: ERROR: Failed to import module(cannot import name ‘GraphDef`)

欢迎大家关注笔者,你的关注是我持续更博的最大动力 原创文章,转载告知,盗版必究 安装TensorRT,然后导入uff库包的时候报错:ImportError: ERROR: Failed to import module(cannot import name GraphDef from…

pb模型转uff模型(tensorflow2.x)

大多数的博客只是提到tensorflow1.x系列下的转换。大概步骤就是安装tensorrt,同时安装tensorrt下的几个python的wl文件。可参见博主之前的博客: 1.tensorrt的安装Ubuntu配置TensorRT及验证_竹叶青lvye的博客-CSDN博客 2.tensorrt下几个whl文件的安装TensorRT加速方…

Sony索尼HLG灰片电影调色LUT预设合集 HLG CINEMATIC LUTPACK BUNDLE

Sony索尼HLG灰片电影调色LUT预设合集 HLG CINEMATIC LUTPACK BUNDLE 原文地址:https://www.aeziyuan.com/t-20546.html 包括用于Sony索尼LOG相机的39组LUT预设。是目前为止Sony索尼相机最好的预设之一。 它适用于支持LUT预设效果的大多数软件。例如Premiere Pro&…

两种HDR格式(HLG, HDR10)的理解

1、HLG只在sps的vui中会携带信息,包括colour_primaries(9),transfer_characteristics(18),matrix_coefficients(9) 2、HDR10除了SPS的VUI中携带的信息,在key frame会携带相应的SEI(mastering display、content light l…

详解HDR的三个标准——HLG/HDR10/Dolby Vision

HDR的三大标准:HLG(Hybrid Log Gamma);HDR10;Dolby Vision HLG:HLG的全称是Hybrid Log Gamma,它是由英国BBC和日本NHK电视台联合开发的高动态范围HDR的一个标准。HLG不需要元数据,能…

HLG移动

在平面坐标系内&#xff0c;有两个坐标轴x轴和y轴。&#xff08;x,y&#xff09;表示点的坐标。 有一点处于&#xff08;x1,y1&#xff09;位置上&#xff0c;他可以向相临8个位置移动&#xff08;移动方式见下图&#xff09;。 划定范围&#xff1a;此点只可以在[0<x<3…

HLG 2025

确定大小 Time Limit: 1000 MSMemory Limit: 32768 K Total Submit: 50(15 users)Total Accepted: 12(11 users)Rating: Special Judge: NoDescription现在有N个字母&#xff0c;&#xff08;N < 26&#xff09;&#xff0c;我们称之为A、B、C、D......。这次他们之间想确定…

SDR屏幕放HDR(HLG)视频画面泛灰

假设场景线性光E&#xff08;RGB&#xff09;1. SDR&#xff1a;数据位宽为10bit。灰度值2^10 * E1023; HDR&#xff1a;HDR根据OETF&#xff08;光电转换&#xff09;将相对场景线性光映射到非线性信号值 E 0.5&#xff1b; 灰度值2^10*0.5512&#xff1b; 所以本来需要显…

HDR相关标准-HLG/HDR10/HDR10+/DOLBY VISION

目录 主要参考信息 动态元数据及使用 相关标准文件 主要参考信息 杜比视界HDR参数_qq26983255的博客-CSDN博客_pq和hlghttps://blog.csdn.net/qq26983255/article/details/119830337?spm1001.2014.3001.5502 HDR到底是什么&#xff1f;_相见不如怀念-CSDN博客一&#xf…

PQ和HLG标准及其转换

目录 PQ标准的电光转换函数PQ_EOTF PQ标准的光电转换函数PQ_OETF HLG标准的电光转换函数HLG_EOTF HLG标准的光电转换函数 HLG_OETF HLG标准转PQ标准HLG2PQ PQ标准转HLG标准PQ2HLG PQ标准的电光转换函数PQ_EOTF PQ标准的光电转换函数PQ_OETF HLG标准的电光转换函数HLG_EOTF…

OpenGLSL中处理HDR.ToneMapping(HLG)

紧跟前提文章&#xff0c;没有HDR.ToneMapping知识基础的同学请先阅读之前的文章&#xff1a; HDR in Android 专栏 这篇文章主要是介绍在GLSL中处理HLG&#xff08;hybrid-log-gamma 混合对数伽马曲线&#xff09;的HDR tonemap SDR的渲染流程。 先看看Wiki有关HLG的概述&am…

HDR中HLG与PQ曲线的互转

HDR视频中由于电光转换曲线的不同&#xff0c;技术标准也大致分为了杜比视界、HDR10、HDR10、HLG等&#xff0c;目前常用的主要是以PQ曲线的HDR10和HLG。这两者之间的区别在HDR视频编码参数中进行过详细的说明。一般的HLG适用于广电&#xff08;根据用户设备的峰值亮度动态的调…

使用DataList吧

这是个具有明显煽动性的标题&#xff0c;没错&#xff0c;在这里就是提议大家使用DataList。在MSDN中文站有一篇关于repeater&#xff0c;datalist和datagrid的性能测试的文章&#xff0c;我也把这篇文章转到了我的站的“转载嘿嘿 希望你接受我的教训 一定早做打算 精华”里&am…

html5-datalist标签-定义选项列表

datalist使用 datalist使用需与input关联起来&#xff0c;input定义list属性&#xff0c;同时datalist定义id属性&#xff0c;两者的值必须相同。 实例代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><m…

常用数据集合—List

1、List、Map、Set、Queue、Array 2、数据结构&#xff1a;数组、链表 3、实现List方法的类Ctrl T&#xff08;设置的是Eclipse快捷键&#xff09;或右键查找 4、这里就简单看下最常用的ArrayList 5、构造方法一目了然 6、添加数据&#xff0c;一条条添加或者添加集合 良好…

DataList的数据绑定

8.4.1 DataList的数据绑定 DataList控件中通过自定义模板来设置数据的显示样式&#xff0c;它支持如下模板类型&#xff1a; ItemTemplate&#xff1a;包含一些 HTML元素和控件&#xff0c;将为数据源中的每一行呈现一次这些HTML元素和控件。 AlternatingItemTemplate&#xf…

datalist标签

学习笔记&#xff0c;仅供参考&#xff0c;有错必纠 参考自&#xff1a;w3school 关于datalist标签 <datalist> 标签定义选项列表&#xff0c;应该与 <input>标签配合使用该&#xff0c;它定义 input 可能的值&#xff1b; <datalist> 及其选项不会被显示出…