tensorflowlite深度解析|中文教学视频

谷歌开发者 谷歌开发者     2022-12-16     688

关键词:

作者:TensorFlow 中国团队,Google 工程师 Renmin Gu.

最新的中文技术分享视频来了!本期来自 Google 的工程师 Renmin 为大家带来 TensorFlow Lite 的深度解析视频,主要讲述 TensorFlow Lite 模型文件格式,并可视化以帮助大家记忆理解,也包含 TensorFlow Lite 的具体加载运行过程,并给出关键的数据结构描述,同样以可视化的形式呈现给大家。

首先,我们需要在台式机上设计、训练出目标模型,并将其转化成 TensorFlow Lite 的格式。接着,此格式文件在 TensorFlow Lite 中会被内置了 Neon 指令集的解析器加载到内存,并执行相应的计算。由于 TensorFlow Lite 对硬件加速接口良好的支持,开发者可以设计出性能更优的 App 供用户使用。

模型文件格式

Model 结构体:模型的主结构

table Model 
   version: uint;
   operator_codes: [OperatorCode];
   subgraphs: [SubGraph];

   description: string;
   buffers: [Buffer]

在上面的 Model 结构体定义中,operator_codes 定义了整个模型的所有算子,subgraphs 定义了所有的子图。子图当中,第一个元素是主图。buffers 属性则是数据存储区域,主要存储的是模型的权重信息。

SubGraph 结构体:Model 中最重要的部分

table SubGraph 
   tensors: [Tensor];
   inputs: [int];
   outputs: [int];
   operators: [Operator];

   name: string;

类似的,tensors 属性定义了子图的各个 Tensor,而 inputs 和 outputs 用索引的维护着子图中 Tensor 与输入输出之间的对应关系。剩下的operators 定义了子图当中的算子。

Tensor 结构体:包含维度、数据类型、Buffer 位置等信息

table Tensor 
   shape: [int];
   type: TensorType;
   buffer: uint;

   name: string;

buffer 以索引量的形式,给出了这个 Tensor 需要用到子图的哪一个 buffer。

Operator 结构体:SubGraph 中最重要的结构体

Operator 结构体定义了子图的结构:

table Operator 
   opcode_index: uint;
   inputs: [int];
   outputs: [int];

   ...

opcode_index 用索引方式指明该 Operator 对应了哪个算子。 inputs 和 outputs 则是 Tensor 的索引值,指明该 Operator 的输入输出信息。

解析器概况

那么 TensorFlow Lite 的解析器又是如何工作的呢?

一开始,终端设备会通过 mmap 以内存映射的形式将模型文件载入客户端内存中,其中包含了所有的 Tensor,Operator 和 Buffer 等信息。出于数据使用的需要,TensorFlow Lite 会同时创建 Buffer 的只读区域和分配可写 Buffer 区域。

由于解析器中包含了集体执行计算的代码,这一部分被称为 Kernel。模型中的各个 Tensor 会被加载为 TfLiteTensor 的格式并集中存放在 TfLiteContext 中。

每个 Tensor 的指针都指向了内存中的只读 Buffer 区域或是一开始新分配的可写入 Buffer 区域。

模型中的 Operator 被重新加载为 TfLiteNode,它包含输入输出的 Tensor 索引值。这些 Node 对应的操作符存储于 TfLiteRegistration 中,它包含了指向 Kernel 的函数指针。OpResolver 负责维护函数指针的对应关系。

TensorFlow Lite 加载模型的过程中会确定执行 Node 的顺序,然后依次执行。

大家如果想要更好掌握 TensorFlow Lite 的技术细节,一定要阅读以下文件:

  • lite/context.h

  • lite/model.h

  • lite/interpreter.h

  • lite/kernels/register.h

希望我们的分享能让广大开发者们对 TensorFlow Lite 的代码有一个初步认识,期待看到大家精彩的作品!

另外,视频中提到的 TensorFlow Lite 的代码位置

https://github.com/tensorflow/tensorflow/tree/master/tensorflow/contrib/lite

模型的模式文件位于:

https://github.com/tensorflow/tensorflow/blob/master/tensorflow/contrib/lite/schema/schema.fbs

更多

腾讯视频链接:

https://v.qq.com/x/page/h0672e1j6gd.html


在 Google 官方 Bilibili 频道查看本视频 ( ゜- ゜)つロ:

https://www.bilibili.com/video/av24219725/


YouTube 播放列表: "DevBytes 开发者小技巧"

https://www.youtube.com/playlist?list=PLwv-rHS37fS_f-hjlS7-maXNPcfrPNS8J


Youku 视频播单: "DevBytes 开发者小技巧" 

http://list.youku.com/albumlist/show/id_51314721


查看更多 TensorFlow 和人工智能相关的内容,请关注谷歌官方“TensorFlow”微信公众号:

tinyml与tensorflowlite的关系

目录发展历史简介TensorFlowLiteforMicrocontrollers主要模块发展历史TensorFlowLite是针对移动设备以及可穿戴设备领域的深度学习框架,是基于TensorFlow的,但是TensorFlowLite并非能够在一些微型的MCU出色的运行,以及由于它算法... 查看详情

tinyml与tensorflowlite的关系

目录发展历史简介TensorFlowLiteforMicrocontrollers主要模块发展历史TensorFlowLite是针对移动设备以及可穿戴设备领域的深度学习框架,是基于TensorFlow的,但是TensorFlowLite并非能够在一些微型的MCU出色的运行,以及由于它算法... 查看详情

吐血整理深度学习入门路线及导航教学视频+大神博客+书籍整理+资源页(2019年已经最后一个月了,你还不学深度学习吗???)

声明:1)该文章整理自网上的大牛和机器学习专家无私奉献的资料,具体引用的资料请看参考文献。2)本文仅供学术交流,非商用。所以每一部分具体的参考资料并没有详细对应。如果某部分不小心侵犯了大... 查看详情

《解析深度学习语音识别实践》高清中文版pdf下载

《解析深度学习语音识别实践》高清中文版PDF下载高清中文版PDF,全书321页带目录下载链接:https://pan.baidu.com/s/1Ly4sdpNpcU_AwnwEVdBKLA备用链接:https://u1593575.ctfile.com/fs/1593575-330744495本书首次专门讲述了如何将深度学习方法,特别是... 查看详情

深度解析抖音手绘动画短视频项目,流程步骤拆解,经验分享

一、什么是抖音手绘动画?先来回顾一下什么是抖音手绘动画?(更多精彩干货请关注共众号:萤火宠,免费领取108个抖音小项目)以上几类视频都是同一类视频,一只手拿着笔把元素绘画出来,配上配音就成了一个手绘视频。... 查看详情

kafka视频,深度解析,值得收藏

Kubernetes(k8s)理论与实战双飞①理解控制器:②网络详解:③伸缩原理:④认证与调度:⑤服务原理:⑥镜像自动拉取:⑦节点就绪问题之一:⑧节点就绪问题之二:⑨命名空间删除问题&#x... 查看详情

网络课堂完整视频教程资料

...tp://edu.51cto.com/course/14476.html【中文编程完整软件实例编程解析之工程设计流水管理系统】资料来源:http://edu.51cto.com/course/14647.html【软件安装人员、计算机运维人员必备工具视频教程】资料来源:http://edu.51cto.com/course/14784.html【... 查看详情

“衡水中学模式”深度解析

2018年衡水中学高考再传喜报,清华北大录取人数超过200人,比2017年的176人至少超出24人。如此傲人的成绩让原本盛名在外的衡水中学再一次刷爆了人们的眼球!衡水中学2018年部分学生录取情况有很多人说衡水中学抓... 查看详情

深度解析,抖音起名类短视频内容制作流程,步骤技巧分享

今天给大家分享一个可能很多人听到后觉得被玩烂了的项目,就是起名项目,是啊,起名这个项目,从线下就开始有,到后来的贴吧,论坛,再到知乎,微博这些平台,确实不是一个新鲜项目,但是并不是代表不能做了。(更多... 查看详情

万字长文解析删除topic流程领导再也不用担心我排查生产环境问题了(附教学视频,建议收藏!!!)(代码片段)

...Kafka监控与管控平台文章目录删除Topic命令相关配置源码解析1.客户端发起删除Topic的请求2.Controller处理deleteTopics的请求3.Controller监听zk变更执行删除Topic流程3.1resumeDeletions执行删除方法3.2TopicDel 查看详情

头歌里的课程视频怎样观看

参考技术A深度学习是科技发展的必然趋势,是一种实现人工智能的强大技术,它在图像视频处理、语音处理、自然语言处理等领域取得了大量成功应用案例,并对学术界和工业界产生了非常广泛的影响。作为推动AI应用大规模落... 查看详情

深度解析,抖音知识付费短视频内容制作流程,步骤技巧分享

知识付费这个词,大家必然不陌生,它已经是当下知识和经验变现的代名词。(更多精彩干货请关注共众号:萤火宠,免费领取108个抖音小项目)早在2016年,逻辑思维的创始人罗某,每天坚持在微信公众号分享一分钟的语言干... 查看详情

深度解析,抖音玩具评测短视频内容制作流程,步骤技巧大汇总

做项目想赚钱,就要抓住最好花钱的那群人。谁的钱比较好赚?首当其冲的就是女人,然后就是小孩了。女人掌控了70%的家庭支出,而大部分家庭都十分宠爱孩子,为了孩子很舍得花钱,但凡你能抓住其中一点,赚钱都不是难事... 查看详情

深度学习与爬虫实例教学--深度学习模型构建和训练

深度学习与爬虫实例教学声明:该教程不会直接贴代码,以免凌乱,你需要先下载项目代码(第一章)并结合来看,教程中会告诉你具体代码放在什么位置,以及作用,用法深度学习实现验证码自动识别,爬虫自动认证防ban我们... 查看详情

重磅!李沐「动手学深度学习」中文课程笔记来了!

...记值得收藏。亚马逊资深首席科学家李沐博士的「动手学深度学习」中文系列课程,这门课从3月持续到8月,超过28000人参与了直播,课程回放在B站的播放量达到了上百万次。李沐B站视频地址:https://space.bil 查看详情

微服务效率工具goctl深度解析(上)

前言本文根据安前松的视频分享整理而来,视频回放地址如下:​​www.bilibili.com/video/BV1Hr…​​goctl的由来1.goctl的诞生goctl的最早功能是为了解决GRPC内网调试问题,大约是在2019年,在我们的生产环境中,rpc是内网隔离的,不可... 查看详情

深度解析!短视频如何成为现象级产品

欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~本文由BestSDK团队发布在腾讯云+社区2016年中国移动短视频用户数为1.5亿,今年预计会达到2.4亿,增长率高达58.2%,可见短视频的热度在一直提升;近几年,短视频的... 查看详情

吐血整理深度学习入门路线及导航教学视频+大神博客+书籍整理+资源页(2019年已经最后一个月了,你还不学深度学习吗???)

...人生苦短,我用python四、三两个三方库五、深。。。深度。。。深度学习理论六、一大波DL论文来袭七、有哪些知名会议呢八、你知道知识图谱吧?!?九、DL框架哪家强9.1、TensorFlow9.2、PyTorch十、欢迎来到神经网... 查看详情