Tensorflow Lite模型部署之模型转换

TensorFlow Lite的设计旨在在各种设备上高效执行模型。这种高效部分源于在存储模型时,采用了一种特殊的格式。TensorFlow模型在能被TensorFlow Lite 使用前,必须转换成这种格式。
转换模型减小了模型文件大小,并引入了不影响准确性(accuracy)的优化措施(optimizations)。开发人员可以在进行一些取舍的情况下,选择进一步减小模型文件大小,并提高执行速度。您可以使用 TensorFlow Lite 转换器(converter)选择要执行的优化措施。
因为 TensorFlow Lite 支持部分 TensorFlow 运算符(operations),所以并非所有模型都能转换。
TensorFlow Lite 转换器(converter)是一个将训练好的 TensorFlow 模型转换成 TensorFlow Lite 格式的工具,而且它还能引入优化措施(optimizations)。
转换器以 Python API 的形式提供,虽然可以从命令行使用转换器,但是推荐用 Python API 进行转换。
Tensorflow Lite转化器提供的API可以通过帮助函数获取。

import tensorflow as tf
print("Tensorflow Lite Converter:")
print(help(tf.lite.TFLiteConverter))

如下提供TensorFlow Lite四种模型转换的方式。
1、SavedModel格式转为.tflite模型

import tensorflow as tf
converter = tf.lite.tfliteConverter.from_saved_model(saved_model_dir) 
TensorFlow Lite_model = converter.convert().
 
with open('model.tflite', 'wb') as f:
  f.write(TensorFlow Lite_model)

其中,saved_model_dir传入的是SavedModel所在的路径。
2.Session导入converter的方式

import tensorflow as tf
 
input1 = tf.placeholder(name="input1", dtype=tf.float32, shape=(1, 32, 32, 3))  //输入1
input2 = tf.get_variable("input2", dtype=tf.float32, shape=(1, 32, 32, 3))    	//输入2
output = input1 + input2    			//加法操作
out = tf.identity(output, name="out")    	//创建输出
 
with tf.Session() as sess:      			//创建会话
  sess.run(tf.global_variables_initializer())     //初始化
  converter = tf.lite.tfliteConverter.from_session(sess, [input1], [out])   //创建转化器
  TensorFlow Lite_model = converter.convert()                   //模型导出
  open("saveToTensorFlow Lite.tflite", "wb").write(TensorFlow Lite_model)     //模型保存

3.pb模型转为.tflite方式

import tensorflow as tf
 
graph_def_file = "/model/mobilenet_v1_1.0_224/frozen_graph.pb"  //pb模型路径
input_arrays = ["input"]    //模型输入
output_arrays = ["MobilenetV1/Predictions/Softmax"]    //模型输出
 
converter = tf.lite.tfliteConverter.from_frozen_graph(   //转化器
  graph_def_file, input_arrays, output_arrays)
TensorFlow Lite_model = converter.convert()
open("converted_model.tflite", "wb").write(TensorFlow Lite_model)   //模型保存

4.h5模型转为.tflite模型

import tensorflow as tf
 
converter = tf.lite.tfliteConverter.from_keras_model_file("mobilenet_slim.h5")
TensorFlow Lite_model = converter.convert()
open("mobilenet_slim.tflite", "wb").write(TensorFlow Lite_model)

模型转换之后就可以用于推理部署了,代码的详细说明可以参考如下的图书。

**

本文分享的内容来源于《深度学习计算机视觉实战》一书,该书由刘东研究员和肖铃合作完成,由电子工业出版社出版。
该书从算法导读到模型训练,到模型部署一站式搞定,书中案例注释详细,均已通过运行验证。该书包括4个部分:
第一部分(1~2章)深度学习和计算机视觉的基础和算法讲解; 第二部分(3~6章)传统图像处理算法的案例讲解;
第三部分(7-11章)计算机视觉方向的案例讲解; 第四部分(12~13章)Tensorflow
Lite讲解(源码分析、模型优化、模型转换等)以及使用Tensorflow Lite在PC端和移动端的部署案例讲解。

**
本书可以为计算机视觉入门的读者和想要对模型进行工程部署的读者提供参考与帮助。京东链接:https://u.jd.com/rwk3HPT
在这里插入图片描述

本节分享的内容为Windows端的模型部署,如果读者朋友想要使用移动端和Linux端的模型部署,建议参考书中案例。

猜你喜欢

转载自blog.csdn.net/lxiao428/article/details/120715867