摘要
本篇文章将从工程侧的角度出发,介绍Tensorflow Lite自定义OP Pipeline。本文将分为四个部分做具体介绍:概述、服务端自定义OP、客户端自定义OP和延展。首先,概述部分介绍什么是自定义OP。其次,服务端部分会介绍自定义OP如何注册、编译和加密。再次,客户端部分会介绍自定义OP如何下载验证、注册和运行。最后是延展部分,介绍现有自定义OP可以改进的方向。
图1 自定义OP的特点
其中,本文的自定义OP具有如下四个特点:速度、能力、安全和创新。
I) 速度:紧跟tensorflow Lite最新的版本,并修复了若干个问题,例如java nio bug,解决了文件落盘问题。
II) 能力:能够动态下发模型和库,并且能够解决复杂问题。例如车牌识别,语音识别,获取封面帧,视频指纹等功能。
III) 安全:自定义OP和模型都进行了加密处理,且解密的文件不会写入磁盘,从而保证了文件的安全性。
IV) 创新:当前官方没有找到可以实现自定义OP客户端上使用的案例,本文创新性地采用了服务端编译三端的库文件,动态下发库文件供Android和IOS加载并使用的方式。具体的特点将在后续章节详细介绍。
关键词:
TensorflowLite, 自定义OP, 创新, 工程实践
1. 概述
1.1 Tensorflow Lite简介
本文基于tensorflow Lite是谷歌研发的人工智能学习系统,其命名来源于本身的运行原理。Tensor(张量)意味着N维数组,Flow(流)意味着基于数据流图的计算,TensorFlow为张量从流图的一端流动到另一端计算过程。TensorFlow是将复杂的数据结构传输至人工智能神经网中进行分析和处理过程的系统。
下图展示了tensorflow Lite的架构设计[1]:
图1.1 tensorflow lite架构图
1.2 OP简介
OP的输入/输出以Tensor的形式存在,可以由一个或者多个tensor构成[3]。使用内置的OP可以实现矩阵加法、乘法、池化、RELU