简介
Tensorflow Lite是针对移动设备和嵌入式设备的轻量化解决方案,占用空间小,低延迟。Tensorflow Lite在android8.1以上的设备上可以通过ANNA启用硬件加速。
支持浮点运算和量化模型,并已针对移动平台进行优化,可以用来创建和运行自定义模型。开发者也可以在模型中添加自定义操作。
FlatBuffer格式
具有在移动设备运行更快的内核解释器
支持通过Tensorflow训练好的模型转换为Tensorflow Lite格式(pd,h5等都可以)
当支持所有优化操作时,模型小于300k,当仅支持inception v3和mobilenet模型优化时,模型小于200k
预训练模型:
inception v3:用于目标检测
MobileNets:专门针对移动端的模型,具有低延迟,高速度,低内存,可用于图像识别,目标检测,图像分割,但是精度小于inception v3
量化版本的MobileNets,通过将float-32转为int-8,在CPU上拥有更快的速度
支持java,c++API
以上谈到的预训练模型基于ImageNet数据集训练,支持1000种类别。如果此数据集不能满足你的项目需要,你需要准备自己的数据集和标签,使用迁移学习重新训练模型。
模型结构
Tensorflow Lite模型的数据格式与Tensorflow桌面端不同,需要使用Tensorflow Lite转换为.tflite格式,然后应用到移动端。
模型结构:
java-API:包装C++API,以便在android上使用java调用
C++-API:加载Tensorflow Lite模型和解释器
解释器:执行模型一系列核心操作,支持选择内核加载。全部加载300kb,不加载只有100kb
在android8.1以上设备,可通过相关api进行硬件加速(硬件支持的情况下),否则在CPU执行
转换模型格式
Tensorflow Lite转换器支持以下格式:
使用python API执行SavedModel保存的模型文件
tf.keras保存的.h5模型文件
转换后的GraphDef文件
转换GraphDef文件
Tensorflow模型一般保存为.pd或.pdtxt格式的文件,要转换为Tensorflow Lite支持的文件,首先需要进行frozen操作。此操作处理多个不同格式的文件:
tf.GraphDef(pd,pdtxt):图文件,包含操作,张量,变量的定义
checkpoint(.ckpt):包含变量,不包含解释器
tensorflow lite(.tflite):序列化的FlatBuffer文件,包含所有需要的文件
checkpoint文件包含训练权重,tf.graphdef文件包含图结构。冻结操作就是将上述文件进行合并操作</