如何把Tensorflow模型转换成TFLite模型

TensorFlow Lite源码解析之一 每一个成功的人工智能背后,都有一个摸摸推理的引擎。想知道TFLite是怎么工作的么,戳我了解更多! 阅读详情

深度学习迅猛发展,目前已经可以移植到移动端使用了,TensorFlow推出的TensorFlow Lite就是一款把深度学习应用到移动端的框架技术。

使用TensorFlowLite 需要tflite文件模型,这个模型可以由TensorFlow训练的模型转换而成。所以首先需要知道如何保存训练好的TensorFlow模型。

一般有这几种保存形式:

  1. Checkpoints
  2. HDF5
  3. SavedModel等

保存与读取CheckPoint

当模型训练结束,可以用以下代码把权重保存成checkpoint格式

model.save_weights('./MyModel',True)

checkpoints文件仅是保存训练好的权重,不带网络结构,所以做predict时需要结合model使用
如:

model = keras_segmentation.models.segnet.mobilenet_segnet(n_classes=2, input_height=224, input_width=224)
model.load_weights('./MyModel')

保存成H5

把训练好的网络保存成h5文件很简单

model.save('MyModel.h5')

H5转换成TFLite

这里是文章主要内容

我习惯使用H5文件转换成tflite文件

官网代码是这样的

converter = tf.lite.TFLiteConverter.from_keras_model_file('newModel.h5')
tflite_model = converter.convert()
open("converted_model.tflite", "wb").write(tflite_model)

但我用的keras 2.2.4版本会报下面错误,好像说是新版的keras把relu6改掉了,找不到方法
ValueError: Unknown activation function:relu6

于是需要自己定义一个relu6

import tensorflow as tf
from tensorflow.python.keras import backend as K
from tensorflow.python.keras.utils import CustomObjectScope

def relu6(x):
  return K.relu(x, max_value=6)

with CustomObjectScope({'relu6': relu6}):
    converter = tf.lite.TFLiteConverter.from_keras_model_file('newModel.h5')
    tflite_model = converter.convert()
    open("newModel.tflite", "wb").write(tflite_model)

看到生成的tflite文件表示保存成功了

也可以这么查看tflite网络的输入输出

import numpy as np
import tensorflow as tf

# Load TFLite model and allocate tensors.
interpreter = tf.lite.Interpreter(model_path="newModel.tflite")
interpreter.allocate_tensors()

# Get input and output tensors.
input_details = interpreter.get_input_details()
output_details = interpreter.get_output_details()

print(input_details)
print(output_details)

输出了以下信息

[{'name': 'input_1', 'index': 115, 'shape': array([  1, 224, 224,   3]), 'dtype': <class 'numpy.float32'>, 'quantization': (0.0, 0)}]

[{'name': 'activation_1/truediv', 'index': 6, 'shape': array([    1, 12544,     2]), 'dtype': <class 'numpy.float32'>, 'quantization': (0.0, 0)}]

两个shape分别表示输入输出的numpy数组结构,dtype是数据类型

下一篇会分享如何在PC端测试TFLite模型

tensorflow模型转为tflite tensorflow模型转换主要分为:步骤1、步骤2。步骤1最为关键。 1、ckpt转为pb模型 主要步骤参考MobileFaceNet模型转换问题,其它模型转换也是按此步骤,注意输入、输出节点的选择。 转换过程中出现以下错误,应该是batch_norm_params参数设置的问题。应将is_training设置为False,将trainable设置为False Some of the opera... 阅读详情

相关推荐

TFlite模型转换和使用

TFlite 的简单使用

Harry的博客 6144

基于 tensorflow的时间序列温度预测并将模型转换为TFLite格式 (一)

文章目录1 准备数据导入需要的库导入数据划分训练特征和标签参数设置2 单变量单步从数据集中提取温度观察数据随时间变化的情况标准化设置绘图函数将特征和标签切片建模训练模型3 多变量单步从数据集中划分特征和标签压强、温度、密度随时间变化绘图将数据集转换为数组类型并标准化写函数来划分特征和标签将特征和标签切片建模训练模型绘制预测图4 多变量多步从数据集中划分特征和标签将特征和标签切片编写绘图函数建模训练模型绘制温度信息 文章转自:https://www.heywhale.com/mw/project/5fe2f3

@bangbang的博客 3453

31、TensorFlow训练模型转成tfilte,进行python、Android端进行车辆检测、跟踪、部署

基本思想:想写一个Android的车辆检测和跟踪,于是tflite的使用和探索~ ubuntu@ubuntu:~$git clone https://github.com/ultralytics/yolov5.git ubuntu@ubuntu:~$ cd yolo5 ubuntu@ubuntu:~/yolo5$ bash weights/download_weights.sh ubuntu@ubuntu:~/yolo5$ python models/export.py --weights yolov5

sxj731533730 2915

Tensorflow pb模型转tflite,并量化

tensorflow lite 量化

DongHappyyy 3969

Halcon与C#联合编程(一):使用S7协议实现机器视觉上位机与西门子PLC联动

本项目技术栈:C#基础,多线程,Halcon DirectShow,Halcon形状检测,Halcon QR码识别,西门子S7通讯协议,西门子PLC为核心的下位机及执行元件

虎鲸不是鱼 1万+

Linux系统下SAPGUI安装包选择与避坑指南

本文详细介绍了在Linux系统下选择和安装SAPGUI安装包的策略与避坑指南。重点解析了不同版本安装包的关键区别,特别是Linux版必须包含linux-lib.jar和linux64-lib.jar文件,避免误用Mac或Windows版导致的兼容性问题。文章还提供了针对Ubuntu、RHEL等不同Linux发行版的安装实战指南,以及常见报错的解决方案,帮助用户顺利完成SAPGUI的安装与配置。

weixin_28366353的博客 673

将tensorflow训练模型转换成tflite模型在安卓端部署

一、生成.pb文件 如果后续要设计tflite转换,那么需要调用的文件是object_detection下的export_tflite_ssd_graph.py: python export_tflite_ssd_graph.py --input_type image_tensor --pipeline_co nfig_path training/ssdlite_mobilenet_v3_small_320x320_coco.config --trained_checkpoint_prefix traini

qq_45057749的博客 2495

从零开始:在Ubuntu 22.04上配置Isaac Gym Preview 3环境(含常见错误解决方案)

本文提供了在Ubuntu 22.04系统上从零开始配置Isaac Gym Preview 3环境的完整实战指南。内容涵盖NVIDIA驱动安装、Conda环境搭建、CUDA与PyTorch版本精准匹配、Isaac Gym核心安装与验证,并重点介绍了针对四足机器人等复杂系统的强化学习训练环境配置、常见错误解决方案及性能调优技巧,旨在帮助开发者高效部署这一高性能物理仿真平台。

weixin_29048775的博客 392

怎么将tflite部署在安卓上_将tensorflow训练模型转换成tflite模型在安卓端部署

一、生成.pb文件如果后续要在移动端部署,将模型转换成tflite,那么训练完的模型导出时需要调用文件object_detection下的export_tflite_ssd_graph.py:python export_tflite_ssd_graph.py --input_type image_tensor --pipeline_config_path training/ssdlite_mobi...

weixin_39555715的博客 323

直播间人气协议算法:从批量操作到数据接口的自动化实现

本文深入解析直播间人气协议算法的实现原理与技术细节,涵盖批量账号管理、IP代理方案、用户行为模拟算法及平台数据接口调用策略。通过逆向工程分析通信协议,结合算法设计实现自动化流量提升,同时探讨风控规避与系统性能优化方案,为开发者提供合规的技术实践参考。

weixin_30505225的博客 517

02-Cesium-实现天地图标记

首先天地图申请token,然后Cesium-实现天地图标记详细说明

m0_62785037的博客 1171

【亲测免费】 使用指南:将TensorFlow Lite模型转换为ONNX(tflite2onnx)

使用指南:将TensorFlow Lite模型转换为ONNX(tflite2onnx) tflite2onnx 是一个专为将 TensorFlow Lite 模型(.tflite)转换成 ONNX 格式(.onnx)而设计的工具。此工具能够妥善处理数据布局和量化语义,确保模型在不同平台上的兼容性和高效运行。以下是详细的使用和技术文档。 安装指南 通过 pip 安装 最简单的方式是通过Python包...

gitblog_01268的博客 2101

STM32L476低功耗实战:LPTIM精准定时唤醒STOP2模式与系统级功耗优化

本文深入探讨了STM32L476低功耗实战技巧,重点解析了LPTIM精准定时唤醒STOP2模式的配置与优化。通过详细的步骤指南和实战经验分享,帮助开发者实现系统级功耗优化,特别适合电池供电设备开发。文章涵盖LPTIM1定时器配置、STOP2模式进入流程及常见问题排查,助力将整机功耗降至8.2uA级别。

weixin_33686714的博客 435

如何将hdf5文件转换成tflite文件

我们用keras训练模型后,通常保存的模型格式类型为hdf5格式,也就是.h5文件。 但如果我们想要移植到移动端,特别是基于tensorflow支持的移动端,那就需要转换成tflite格式。 如何转换呢?在tensorflow1.9及以上版本,支持通过命令行方式方便进行转换: tflite_convert --output_file=/home/yourname/Documents/te...

weixin_34080571的博客 1300

23、工业物流中的多智能体路径规划与碰撞处理策略

本文探讨了工业4.0背景下工业物流中的多智能体路径规划(MAPF)与碰撞处理策略。分析了自动导引车(AGV)等移动资源的应用现状,综述了主流路径规划算法如A*、D*Lite、M*等,以及集中式与分布式碰撞检测方法。重点比较了五种碰撞避免策略:路径交叉、优先级、起始时间调整、无交叉路径和速度调整,提出了基于环境条件的策略选择流程,并通过流程图展示了评估、组合、测试与优化的全过程。文章强调应根据订单不确定性、时间约束、优先级和生产组织等因素综合选择或组合策略,以提升物流效率与系统可靠性。

mac99的博客 125

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

将PyTorch模型转换成TFLite格式教程

模型转换

v15220的博客 1136

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

rv1106 tesorflow 转换测试,转换能够成功,但结果是错误的,

本文介绍了如何使用 TensorFlow 训练 MobileNetV2 模型,并将其转换为 .pb 和 .tflite 格式,最终转换为 RKNN 格式进行推理。尽管模型转换成功,但推理结果错误,目前原因尚未查明。建议使用 Docker 容器进行训练和转换,以避免环境问题。训练过程包括数据预处理、模型构建、训练和导出模型。推理部分展示了如何加载模型并进行预测,同时提供了模型转换为 .pb 文件的代码。

m0_50786932的博客 954

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

究极转换:pth转换kmodel

究极折磨王 提示:这个是自己的笔记,后悔当时为了偷懒,而先学习pytorch后学tensorflow了 文章目录究极折磨王前言一、pth文件转换onnx二、onnx转换pbpb转换tflitetflite转换kmodel 前言 提示:这篇文章引用了大家的思路进行设计,找了网上好多篇文章最后的总结。 提示:以下是本篇文章正文内容,下面案例可供参考 一、pth文件转换onnx 这步没啥可说的,直接上传代码: import torch import torch.onnx from tinynet impo

超炫皮卡的博客 4632

测试使用tensorflow官方量化目标检测模型记录(mobilenet ssd)

1、背景 安卓系统上调用nnapi加速的项目,实测板子使用uint8推理才能最大化利用板子。 2、

luozhichengaichenlei的博客 1381

**tflite2onnx使用手册**

tflite2onnx使用手册 本手册旨在提供一个详细的指南来帮助您理解和使用tflite2onnx这一开源工具,它能够将TensorFlow Lite模型转换成ONNX格式。以下是核心内容模块: 1. 项目目录结构及介绍 tflite2onnx项目遵循典型的Python项目布局,其主要结构大致如下: tflite2onnx/ │ ├── assets # 包含构建后的...

gitblog_00867的博客 992

【Bug解决】TensorFlow saved_model: export failure: can‘t convert cuda:0 device type tensor to numpy.

在使用YOLOv5(6.0版本)时,运行export.py,尝试将pytorch训练pt模型转换成Tensorflow支持tflite模型,然而遇到报错:对于此类问题,作者在issue中的统一回答是:新版本已解决了该问题,请使用新版本。然而,直接使用新版本毕竟不方便,因为在工程中很可能已经做了很多别的修改,使用新版本会直接覆盖这些修改。因此,解决思路是用新版本的修改思路去替换老版本的核心模块。

兴趣使然的创作者 789

Pytorch转tensorflow、tflite,ONNX转为tensorflow、tflite模型

Pytorch模型转tensorflow-keras或者tlite模型,或者ONNX转tensorflow-keras或者tlite模型。

u013666632的博客 6159

Tensorflow模型转换 生成Tflite格式

原文链接:https://blog.youkuaiyun.com/qq_16564093/article/details/78996563 参考google的一个官方例子:https://github.com/tensorflow/tensorflow/tree/master/tensorflow/examples/speech_commands 主要参考里面的train.py代码跟freeze.py代码,分...

INFINALGEORGE的博客 1531

Tensorflow量化步骤及生成量化的tflite(1)

第一部分:Tensorflow量化的安装及使用步骤 一:TensorFlow量化安装 2)。。。。 3)。。。。。 4)。。。。 二:TensorFlow量化使用 2)。。。。 3)。。。。 4)。。。。 可能遇到的问题: ImportError: No module named enum pip install enum34 ImportError: No module named mock ...

angela_12的博客 6509

(六)将样式转换模型从TensorFlow转换为TensorFlow Lite

​ 在本系列文章中,我们将展示一个基于循环一致对抗网络(CycleGAN)的移动图像到图像转换系统。我们将构建一个CycleGAN,它可以执行不成对的图像到图像的转换,并向您展示一些有趣但具有学术深度的例子。我们还将讨论如何将这种使用TensorFlow和Keras构建的训练有素的网络转换为TensorFlow Lite并用作移动设备上的应用程序。 ​

寒冰屋的专栏 1573
上一篇: 如何标注mask用于图像分割模型训练(VIA标注semantic segmentation数据集的mask)
下一篇: 如何在PC端测试转换后的TFLite模型
Hi David
博客等级 码龄17年 5195粉丝 84原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Hi David

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值