端侧 AI 介绍

本文介绍了端侧AI的发展及其在AIoT场景的优势,重点关注了TensorFlowLite、Caffe2和CoreML这三个移动端常用的AI框架,探讨了它们在性能、集成成本和模型支持方面的比较,并提供了TensorFlowLite在移动应用中的实际使用案例和优化技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 端侧 AI 介绍

AI 技术的两大分支:云侧,端侧

1.1 云侧

从终端采集和感知到的信息,包括声音、视频、图像等数据都通过网络传输到云中心侧进行后续处理。云侧的资源高度集中,存储和计算能力超群,并且具有很高的通用性

但是随着 AIoT(人工智能物联网)设备和数据的指数级爆发式增长,云侧的集中式计算模型慢慢暴露出了一些不足,像信息处理的实时性,网络条件制约,数据安全性这三大缺陷开始显现。

常用框架:Caffe,Theano,MXNet,Torch

1.2 端侧

端侧也就是我们常说的边缘计算,这种模式可以更好的支持AIoT场景

端侧AI具有如下优点:

  • AI 技术用于端侧可以第一时间对收集的数据进行处理,不需要通过网络上传到云侧的处理中心,极大加快了系统响应也减少了系统处理延迟;
  • 端侧计算可以更高效的处理有价值的关键数据,其余的数据只是临时性的,在端侧结合 AI 能力,不仅可以更及时处理数据,而且减轻网络带宽的限制和缓解对中心侧数据存储的压力;
  • 在端侧的 AI 技术可以高效地对用户的源数据进行处理,将一些敏感的数据进行清洗和保护,端侧设备只将 AI 处理后的结果上报云端。

常用框架:Caffe2、TensorFlow Lite、Core ML

1.3 业内端侧 AI 案例

手淘千人千面:

支付宝扫福:

以及京东、快手等都有端侧 AI 的业务落地。

2. 常用的 AI 框架

这边主要介绍移动端常用的 AI 框架:TensorFlow Lite、Caffe2、Core ML,然在移动端上可使用的还有 Bender、MXNet、NCNN、MNN 等。

2.1 TensorFlow Lite (Google)

http://Tensorflow.org/mobile/tflite

谷歌于美国时间 2017 年 11 月 14 日正式发布 TensorFlow Lite 预览版,这一框架主要用于移动端和嵌入式设备,顾名思义,相较于 TensorFlow,TensorFlow Lite 是一个轻量化版本。这个开发框架专门为机器学习模型的低延迟推理做了优化,专注于更少的内存占用以及更快的运行速度。

TensorFlow Lite 具备以下三个重要功能:

  • 轻量级:支持机器学习模型的推理在较小二进制数下进行,能快速初始化/启动
  • 跨平台:可以在许多不同的平台上运行,现在支持 Android 和 iOS
  • 快速:针对移动设备进行了优化,包括大大减少了模型加载时间、支持硬件加速

设计结构:

2.2 Caffe2 (Facebook)

http://Caffe2.ai/

2017 年 4 月 19 日 Facebook 发布了一款全新的开源深度学习框架—Caffe2,它最大的特点就是轻量、模块化和可扩展性,即一次编码,到处运行。说得更直白一点,就是 Caffe2 可以方便地为手机等移动终端设备带来 AI 加持,让 AI 从云端走向终端。

Caffe2 本来就是基于 caffe 开发的,Caffe 基于 C++ 开发,所以可以很自然地移植到移动端,目前 Caffe2 已经全部并入 Pytorch。两者的区别就是 PyTorch 是为研究而开发,更加灵活。Caffe2 是专为移动生产环境而开发,更加高效。

2.3 Core ML (Apple)

https://developer.apple.com/documentation/coreml

苹果在 2017WWDC 大会更新 iOS 11 时一并推出了面向开发者的全新机器学习框架——Core ML,声称能让本地数据处理愈加方便快捷。据介绍,Core ML 提供支持人脸追踪、人脸检测、地标、文本检测、条码识别、物体追踪、图像匹配等任务的 API。

Core ML 是一个基础机器学习框架,能用于众多苹果的产品,包括 Siri、相机和 QuickType。据官方介绍,Core ML 带来了极速的性能提升和机器学习模型的轻松整合,能将众多机器学习模型集成到 APP 中。它不但有 30 多种层来支持广泛的深度学习,而且还支持诸如树集成、SVM 和广义线性模型等标准模型。

对比:

#集成成本库文件大小模型支持程度速度
Caffe2一般良好优秀一般
TensorFlow Lite一般良好优秀优秀
NCNN优秀优秀良好优秀

3. 初识 TensorFlow Lite

部落推荐帖子重排需求,server 端选择的训练输出的是 TensorFlow 模型,那么 Android、iOS 就需要使用 TensorFlow Lite。选择 TensorFlow Lite 我觉得是基于以下几点:

  • 跨平台,双端都支持
  • 模型大小,目前压缩后的模型大小为 5.6M,属于适中水平,当然需要采用动态下发的方式
  • 框架大小,引入 TensorFlow Lite 会对包大小增加 3.2M,不过 58同城 App 之前已接入过 TensorFlow Lite
  • 对移动设备做了大量的优化,同时支持硬件加速
  • 流行程度

TensorFlow Lite 教程文档:
https://tensorflow.google.cn/lite/guide

3.1 创建 TensorFlow Lite 模型

你可以通过以下方式生成 TensorFlow Lite 模型:

  • 使用现有的 TensorFlow Lite 模型:若要选择现有模型,请参阅 TensorFlow Lite 示例。模型可能包含元数据,也可能不含元数据。
  • 创建 TensorFlow Lite 模型:使用 TensorFlow Lite Model Maker,利用您自己的自定义数据集创建模型。默认情况下,所有模型都包含元数据。
  • 将 TensorFlow 模型转换为 TensorFlow Lite 模型:使用 TensorFlow Lite Converter 将 TensorFlow 模型转换为 TensorFlow Lite 模型。在转换过程中,你可以应用量化等优化措施,以缩减模型大小和缩短延时,并最大限度降低或完全避免准确率损失。默认情况下,所有模型都不含元数据。

3.2 运行推断

推断是指在设备上执行 TensorFlow Lite 模型,以便根据输入数据进行预测的过程。可以通过以下方式运行推断,具体取决于模型类型:

  • 不含元数据的模型:使用 TensorFlow Lite Interpreter API。在多种平台和语言(如 Java、Swift、C++、Objective-C 和 Python)中均受支持。
  • 包含元数据的模型:您可以使用 TensorFlow Lite Task 库以利用开箱即用的 API,也可以使用 TensorFlow Lite Support 库构建自定义的推断流水线。

3.3 输入输出介绍

移动应用开发者通常会与类型化的对象(如位图)或基元(如整数)进行交互。在设备端运行机器学习模型的 TensorFlow Lite 解释器使用的是 ByteBuffer 形式的张量 (Tensor)。

基于张量 (Tensor) 的输入与输出格式是一样的:

参数说明
index张量的索引
name张量的名称
DataTypeFLOAT32, INT32, UINT8, INT64, STRING, BOOL, INT8
shape张量的维度,类似二维数组的几行几列
buffer输入或输出流
QuantizationParams量化参数

3.4 运算符与选择运算符

TensorFlow Lite 已经内置了很多运算符,并且还在不断扩展,但是仍然还有一部分 TensorFlow 运算符没有被 TensorFlow Lite 原生支持。这些不被支持的运算符会给 TensorFlow Lite 的模型转换带来一些阻力。

所以 TensorFlow Lite 新增了一个支持 TensorFlow select 运算符的 Android AAR:

dependencies {
    implementation 'org.tensorflow:tensorflow-lite-with-select-tf-ops:0.1.100'
}

性能

如果 TensorFlow Lite 模型是同时混合使用内置运算符和 TensorFlow select 运算符进行转换的,那么模型依然可以使用针对 TensorFlow Lite 的优化以及内置的优化内核。

下表列出了在 Pixel 2 上 MobileNet 的平均推断时间。表中的时间是 100 次运行的平均时间。

编译推断时间 (milliseconds)
Only built-in ops (TFLITE_BUILTIN)260.7
Using only TF ops (SELECT_TF_OPS)264.5

二进制文件大小

编译C++ 二进制文件大小Android APK 大小
Only built-in ops796 KB561 KB
Built-in ops + TF ops23.0 MB8.0 MB
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值