新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > TFLite模型的开盲盒体验

TFLite模型的开盲盒体验

作者: 时间:2024-05-10 来源:恩智浦MCU加油站 收藏

的开盲盒体验之flatbuffer格式介绍

本文引用地址://www.cazqn.com/article/202405/458552.htm

相信在嵌入式平台上部署过神经网络的伙伴,都不会对格式陌生。是谷歌推出的一个轻量级,它的主要目标是在移动端和嵌入式设备上部署。为了在这些设备上运行,需要将训练好的TensorFlow模型转换成一种特殊的格式,这就是TensorFlow Lite模型。转换过程包括模型转化、部署和优化三个步骤,旨在提升运算速度并减少内存、显存占用。

具体来说,这其中最终要的就是以.TFLite为格式的模型文件,其主结构为一个Model。在这个模型中,包含了操作符(Operator code)、子图(SubGraph)以及缓冲区(Buffer)。子图中定义了模型中的子图,包括各个tensor,输入输出的Tensor,以及子图中的各个算子。

还真是麻雀虽小,五脏俱全啊。那么是什么技术支撑TFLite这个小小的身体内部能够储存这么大的能量呢?答案就是FlatBuffer。

FlatBuffers是一种高效的二进制序列化格式,使用C++编写,是一个开源的、跨平台的序列化工具库,由Google提供并维护。它实现了一种类似于Protocol Buffers的序列化格式。这个库的主要特点包括:对序列化的数据不需要打包和拆包,内存和效率速度高,扩展灵活,代码依赖较少,强类型设计,编译期即可完成类型检查,使用简单,可跨平台使用。

一个FlatBuffers文件主要由三部分组成:verison、string table和buffer。其中,version表示FlatBuffers的版本号;string table存储了序列化数据中所有的字符串;buffer则包含了实际的数据内容。

在实际应用中,例如在Android应用程序中,JSON数据可以在应用程序之外的某个地方被转换成FlatBuffer格式的文件。这些二进制数据可以以文件的形式提交,也可以从API直接返回FlatBuffer二进制文件。

值得一提的是,FlatBuffers是一种无需解码的二进制格式,因此其解码性能极高,要比Protobuf快几百倍,比JSON更快得多。所以,对于需要重度依赖反序列化的场景,可以考虑使用FlatBuffers。

相较于其他序列化格式,如JSON、XML和Protocol Buffers等,FlatBuffers具有以下特点:

1. 高效性:FlatBuffers的序列化和反序列化速度非常快,因为它不需要进行解析和编码操作,而是直接将数据写入或读取内存。

2. 紧凑性:FlatBuffers生成的二进制文件大小比JSON、XML等文本格式更小,因为它只存储实际的数据内容,而不包括任何元数据或格式化信息。

3. 灵活性:FlatBuffers支持定义复杂的数据结构,并可以在运行时动态修改这些结构。此外,它还提供了一些高级功能,如嵌套表、枚举类型和引用等。

4. 易于使用:FlatBuffers提供了一个简单的API,可以方便地将数据序列化为二进制格式,或将二进制数据反序列化为对象。此外,它还提供了一个可视化工具,可以帮助用户快速创建和管理数据模型。

5. 跨平台性:FlatBuffers可以在多种编程语言中使用,包括C++、Java、Python等。此外,它还支持多种操作系统和硬件平台。

当然,讲了这么多,小编也只是想告诉大家,正所谓知己知彼。既然我们想要打开TFLite这个盲盒,当然要知道他是谁,以及他的一切。那么现在,我们知道了,TFLite表面上是一种模型表达格式,包含了模型的基本信息。而其内在,是一个叫做FlatBuffer的技术在支撑着它。

具体来说,TFLite模型实际上是以FlatBuffer格式存储的。在进行模型转换时,例如将TensorFlow训练好的模型转化为适合在移动设备上运行的轻量级模型时,我们主要使用的是TensorFlow Lite Converter。这个转换器可以将训练好的TensorFlow模型转换成.TFLite文件,也就是FlatBuffer格式的文件。所以说,TFLite与FlatBuffers的关系就在于,TFLite利用FlatBuffer这种高效二进制序列化格式来存储和表示其模型数据。

想要打开盲盒,钥匙就在这个叫做FlatBuffer的技术。我们可以使用flatc工具来解析FlatBuffer,其依赖对应的schema,这个schema类似于protobuf的proto文件,用来定义数据封装格式。

如此一来,我们就找到了切入点,利用一个叫做flatc的工具来解析FlatBuffer格式的TFLite模型,以查看其中的内容。当然,查看内容是为了后面根据需要进行修改。

小编将在下期带大家从源码开始构建属于我们自己的flatc工具,并对TFLite模型进行解析及简单修改。预知如何编辑,请见下期分解啦!

开盲盒后续:TFLite模型的开盲盒体验之编辑模型 //www.cazqn.com/article/202405/458554.htm

开盲盒终极:TFLite模型终极开盲盒来啦! //www.cazqn.com/article/202405/458557.htm



评论


相关推荐

技术专区

关闭