【TensorFlow 精简版】TensorFlow Lite

news2024/11/15 13:49:50

目录

一 TensorFlow Lite简介

二 开发

三 开始使用


一 TensorFlow Lite简介

TensorFlow Lite 是一组工具,可帮助开发者在移动设备、嵌入式设备和 loT 设备上运行模型,以便实现设备端机器学习。

  • 针对设备端的机器学习进行的优化:

延时(数据无需往返服务器);

隐私(没有任何个人数据离开设备);

连接性(无需连接互联网);

大小(缩减了模型和二进制文件的大小);

功耗(高效推断,且无需网络连接)。

  • 支持多种平台,涵盖Android 和 IOS设备、嵌入式Linux 和微控制器。
  • 支持多种语言,包括 Java、Swift、Objective-C、C++ 和 Python。
  • 高性能,支持硬件的加速和优化模型。
  • 提供多种平台上的常见机器学习任务的端到端范例(图像分类、目标检测、姿势估计、问题回答、文本分类等)

二 开发

TensorFlow Lite 可在计算和内存资源有限的设备上高效地运行,原因是可缩减大小(代码占用的空间较小)以及提高推断的速度(可直接访问数据,无需执行额外的解析/解压缩步骤)等。

1 创建TensorFlow Lite模型

可以通过以下的方式生成 TensorFlow Lite 模型:

 使用现有的 TensorFlow Lite 模型

模型可能包含元数据,也可能不含元数据。

TensorFlow Lite 元数据为模型描述提供了标准元数据是与模型功能及其输入/输出信息有关的重要信息来源。具有元数据格式的模型如下图所示:

 创建 TensorFlow Lite 模型

使用 TensorFlow Lite Model Maker,利用自定义数据集创建模型。

默认情况下,所有模型都包含元数据

 将 TensorFlow 模型转换为 TensorFlow Lite 模型

可以使用 TensorFlow Lite Converter 将 TensorFlow 模型转换为 TensorFlow Lite 模型。

在转换的过程中,还可以应用量化等优化措施,以缩减模型的大小和缩短延时,并最大限度降低或避免准确率的损失。默认情况下,所有模型都不含元数据

2 推理(推断)

TensorFlow Lite 模型在设备上的执行,即预测的过程。

可以通过以下方式运行推断,具体取决于模型类型:

 不含元数据的模型

使用 TensorFlow Lite Interpreter API即可。

在多种平台和语言中均受支持。

 包含元数据的模型

使用 TensorFlow Lite Task 库以利用开箱即用的 API,也可以使用 TensorFlow Lite Support 库构建自定义的推断流水线。

开始使用

根据目标设备的不同,可以参考不同的指南。

① 使用 Python 快速入门:基于 Linux 的设备

如果需要使用Python执行TensorFlow Lite模型,可以仅安装TensorFlow Lite解释器(将这种简化的Python软件包称为tflite_runtime),无需安装所有TensorFlow软件包。如果只想执行.tflite模型并且避免因使用大型TensorFlow库而浪费磁盘空间的时候,小型软件包(tflite_runtime 软件包)是首选。

如果是需要访问其他 Python API(例如 TensorFlow Lite Converter)的时候,则必须安装完整的 TensorFlow 软件包

tflite_runtime 软件包是整个tensorflow软件包的小部分,并且包括使用 TensorFlow Lite运行推断所需的最少代码(主要是 Interpreter Python类)。

② 安装tflite-runtime

python3 -m pip install tflite-runtime

③ 使用tflite-runtime进行推理

import tensorflow as tf

interpreter = tf.lite.Interpreter(model_path=args.model_file)

或者

import tflite_runtime.interpreter as tflite

interpreter = tflite.Interpreter(model_path=args.model_file)

模型转换成tflie可参考:模型转换

  •  完整的推理代码
import numpy as np
import tensorflow as tf
# Load the TFLite model and allocate tensors.
interpreter = tf.lite.Interpreter(model_path="ResNet50_fp32.tflite")
interpreter.allocate_tensors()
# Get input and output tensors.
input_details = interpreter.get_input_details()
output_details = interpreter.get_output_details()
# Test the model on random input data.
input_shape = input_details[0]['shape']
input_data = np.array(np.random.random_sample(input_shape), dtype=np.float32)
interpreter.set_tensor(input_details[0]['index'], input_data)
interpreter.invoke()
# The function `get_tensor()` returns a copy of the tensor data.
# Use `tensor()` in order to get a pointer to the tensor.
output_data = interpreter.get_tensor(output_details[0]['index'])
print(output_data.shape)
print(output_data[0][0])
print(output_data[0][999])
pass
  • 运行程序的输出
INFO: Created TensorFlow Lite XNNPACK delegate for CPU.
(1, 1000)
0.00015664824
0.0007171879

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1339573.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

NLP 自然语言处理实战

自然语言处理 ( Natural Language Processing, NLP) 是计算机科学领域与人工智能领域中的一个重要方向。它研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法,用于分析理解机器与人之间的交互,常用的领域有:实体识别、文本纠错…

STM32 IIC开发学习

1IIC总线时序图 ① 起始信号 当 SCL 为高电平期间,SDA 由高到低的跳变。起始信号是一种电平跳变时序信号,而不是 一个电平信号。该信号由主机发出,在起始信号产生后,总线就会处于被占用状态,准备数据 传输。 ② 停止信…

深度!把握这三点,即可选出适合能源行业的数据摆渡解决方案

在能源行业中,网络隔离通常采用物理隔离方式,即将能源行业网络与外部网络进行物理隔离,避免外部网络对能源行业网络的攻击和入侵。 同时,网络隔离也可以采用逻辑隔离方式,即在能源行业网络和外部网络之间设置防火墙、入…

【ES6】Class继承-super关键字

目录 一、前言二、ES6与ES5继承机制区别三、super作为函数1、构造函数this1)、首先要明确this指向①、普通函数②、箭头函数③、注意事项 2)、其次要明确new操作符做了哪些事情 2、super()的用法及注意点1)、用法2)、注意点 四、s…

算法的四大思想之一:动态规划

一、动态规划 什么是动态规划? 动态规划(Dynamic Programming,简称DP)是一种解决问题的算法思想,它将一个大问题拆分成多个相互重叠的子问题,并且通过解决这些子问题来求解原始问题 核心思想 拆分大问题…

vue3+luckyexcel+php在线编辑excel文件

开发过程中,需要开发一个在线编辑excel文档的功能,找到了这个合适的组件 Luckysheet ,一款纯前端类似excel的在线表格,功能强大、配置简单、完全开源。 可以导入文档,预览、编辑、保存、导出等功能,可以满…

RabbitMQ 和 Kafka 对比

本文对RabbitMQ 和 Kafka 进行下比较 文章目录 前言RabbitMQ架构队列消费队列生产 Kafka本文小结 前言 开源社区有好多优秀的队列中间件,比如RabbitMQ和Kafka,每个队列都貌似有其特性,在进行工程选择时,往往眼花缭乱,不…

【MATLAB】PSO粒子群优化BiLSTM(PSO_BiLSTM)的时间序列预测

有意向获取代码,请转文末观看代码获取方式~也可转原文链接获取~ 1 基本定义 基于PSO粒子群优化的BiLSTM的时间序列预测算法的基本原理如下: 「双向长短时记忆(BiLSTM)模型」:这是一种深度学习模型,特别适用…

从现场到远程:PLC网关设备售后服务升级换代

问题 作为自动化企业,以前在调试PLC程序时,不得不在现场调试,遇到软件维护和售后服务时,甚至给公司带来一定的经营成本和维护成本的压力,PLC网关正好解决了这一难题。 PLC工业网关是可以让工业PLC设备轻松接入互联网…

GPT分区格式

GPT分区格式 [rootlocalhost ~]# gdisk /dev/sdb -bash: gdisk: 未找到命令 [rootlocalhost ~]# yum -y install gdisk- gdisk命令用于查看磁盘使用情况和磁盘分区(GPT分区格式) - 命令格式:gdisk [选项...] [设备路径] - 常用选项&…

linux 网络工具(二)

linux 网络工具 1. ip命令簇4.1 address4.2 link4.3 route4.4 rule 2. 其他常用命令2.1 ifup/ifdown2.2 配置主机名2.3 设置DNS服务器指向2.4 配置域名解析2.5 ss2.6 路由相关配置文件2.7 查看机器可用端口2.8 traceroute2.9 dhclient 1. ip命令簇 Linux的ip命令和ifconfig类似…

案例189:基于微信小程序的高校教务管理系统设计与实现

文末获取源码 开发语言:Java 框架:springboot JDK版本:JDK1.8 数据库:mysql 5.7 开发软件:eclipse/myeclipse/idea Maven包:Maven3.5.4 小程序框架:uniapp 小程序开发软件:HBuilder …

Three.js基础入门介绍——Three.js学习三【借助控制器操作相机】

在Three.js基础入门介绍——Three.js学习二【极简入门】中介绍了如何搭建Three.js开发环境并实现一个包含旋转立方体的场景示例,以此为前提,本篇将引进一个控制器的概念并使用”轨道控制器”(OrbitControls)来达到从不同方向展示场…

使用 SSH 方式实现 Git 远程连接GitHub

git是目前世界上最先进的分布式版本控制系统,相比于SVN,分布式版本系统的最大好处之一是在本地工作完全不需要考虑远程库的存在,也就是有没有联网都可以正常工作!当有网络的时候,再把本地提交推送一下就完成了同步&…

【信息安全原理】——入侵检测与网络欺骗(学习笔记)

📖 前言:在网络安全防护领域,防火墙是保护网络安全的一种最常用的设备。网络管理员希望通过在网络边界合理使用防火墙,屏蔽源于外网的各类网络攻击。但是,防火墙由于自身的种种限制,并不能阻止所有攻击行为…

open_vins 安装(ubuntu18.04 opencv3.2.0)

openvins官网 Getting Started Installation Guide (ROS1 and ROS2) | OpenVINS Ubuntu 18.04 ROS 1 Melodic (uses OpenCV 3.2) 这里他指的是ros1 melodic,他们用的opencv3.2测试过。 open_vins 官方给的组合Ubuntu 18.04 ROS 1 Melodic (uses OpenCV 3.2) Ub…

k8s二进制部署2

部署 Worker Node 组件 //在所有 node 节点上操作 #创建kubernetes工作目录 mkdir -p /opt/kubernetes/{bin,cfg,ssl,logs} #上传 node.zip 到 /opt 目录中,解压 node.zip 压缩包,获得kubelet.sh、proxy.sh cd /opt/ unzip node.zip chmod x kubelet.…

视觉学习笔记13——既是模型,又是模型中转站的onnx

系列文章目录 入门级深度学习环境搭建 文章目录 系列文章目录前言一、ONNX是什么?二、环境安装1、在 Anaconda 环境中安装 onnx2、在 Anaconda 环境中卸载 onnx3、anaconda 安装onnxruntime 未完待续。。。 前言 假设一个场景:现在某组织因为主要开发用…

Ubuntu中fdisk磁盘分区并挂载、扩容逻辑卷

Ubuntu中fdisk磁盘分区并挂载、扩容逻辑卷 一:fdisk磁盘分区并挂载1.查看磁盘分区信息2.分区3.强制系统重新读取分区(避免重启系统)4.格式化分区5.创建挂载目录6.设置开机自动挂载:7.验证并自动挂载(执行了该命令不需要重启系统)8.查看挂载007.异常情况处…

Feature Prediction Diffusion Model for Video Anomaly Detection 论文阅读

Feature Prediction Diffusion Model for Video Anomaly Detection论文阅读 Abstract1. Introduction2. Related work3. Method3.1. Problem Formulation3.2. Feature prediction diffusion module 3.3. Feature refinement diffusion module4. Experiments and discussions4.1…