将介绍一个基于Cycle-Consistent Adversarial Networks (CycleGAN) 的移动图像到图像翻译系统。将构建一个CycleGAN,它可以执行非成对的图像到图像翻译,并展示一些既有趣又具有学术深度的例子。还将讨论如何将使用TensorFlow和Keras构建的经过训练的网络转换为TensorFlow Lite,并在移动设备上作为应用程序使用。
TensorFlow Lite是TensorFlow的轻量级版本。这个轻量级版本允许在移动和嵌入式设备上以低延迟运行模型,同时执行分类、回归等任务。目前,TensorFlow Lite通过C++ API支持Android和iOS。此外,TensorFlow Lite有一个解释器,可以在支持它的Android设备上使用Android Neural Networks API进行硬件加速。在不支持的设备上,TensorFlow Lite默认使用CPU执行。在本文中,将重点介绍在Android应用程序中部署TensorFlow Lite。
TensorFlow Lite不是用来训练模型的。因此,通常的做法是在高性能机器上通过TensorFlow训练模型,然后将训练好的模型转换为TensorFlow Lite(.tflite格式)。然后,如下面的图所示,将.tflite模型加载到解释器中。
TensorFlow Lite转换器将TensorFlow模型(model.h5)转换为可以在移动设备上部署为应用程序的TensorFlow Lite(.tflite)模型。这个转换器的工作原理取决于模型是如何保存的。CycleGAN模型被保存为Keras模型。因此,将使用以下脚本来将其转换为TensorFlow Lite:
# 加载训练好的Keras CycleGAN模型
from tensorflow import keras
model = keras.models.load_model('path/to/location')
# 转换模型
converter = tf.lite.TFLiteConverter.from_keras_model(model)
tflite_model = converter.convert()
# 保存模型
with open('model.tflite', 'wb') as f:
f.write(tflite_model)
上述脚本生成了一个.tflite模型,它几乎已经准备好在Android上运行了。
在设备上执行的TensorFlow Lite模型执行推理,旨在对输入数据进行预测。要使用TensorFlow Lite模型进行推理,必须通过解释器运行它。TensorFlow Lite推理包括的最重要的步骤有:
加载模型:首先,必须加载转换的.tflite模型。
转换数据:如果某些输入数据不符合预期的输入大小和格式,可能需要执行处理,如调整大小和更改图像格式。
运行推理:使用TensorFlow API执行转换后的模型。这涉及到构建一个解释器和分配张量,将在下一篇文章中详细讨论。
解释输出:最后,分析模型推理获得的结果。
TensorFlow推理API为大多数常见的移动/嵌入式平台(如Android、iOS和Linux)提供了多种编程语言的支持。