单位 4 / 11

设备端 AI:Core ML、TensorFlow Lite 和 ML Kit

收益:

  • 能够根据隐私、离线需求、模型大小和电池标准决定在设备上还是在云端选择正确的工具(ML Kit、Core ML、TensorFlow Lite)
  • 能够通过在模型集成中验证来自模型文档的输入预处理(大小和标准化)来防止无提示错误
  • 能够评估置信度分数并在用户批准的情况下在真实设备上测量结果,而无需将低置信度预测呈现为绝对事实。

到目前为止,我们已经使用人工智能作为辅助来加快开发过程。现在我们转向人工智能的第二个角色:嵌入应用程序的人才。现代手机能够直接在设备上运行人工智能模型,例如图像识别、文本翻译、语音转录等(在设备上 - 在手机自己的处理器中,无需访问服务器)。设备上的人工智能;它在速度、隐私和离线操作方面比云解决方案具有巨大的优势。在本单元中,我们将学习如何使用 iOS 的 Core ML、跨平台 TensorFlow Lite(现称为 LiteRT)和 Google 的现成解决方案 ML Kit 将 AI 嵌入到应用程序中,以及如何在这种集成中使用 AI 作为助手。

设备上还是云端?

这是第一个也是最重要的架构决策。设备上的人工智能不会从手机中删除数据——这是隐私方面的巨大胜利。它也是即时的,并且可以离线工作,因为没有网络延迟。然而,它受到设备处理能力和内存的限制;非常大的型号(例如巨型舌头型号)无法装入手机或会耗尽电池。另一方面,云人工智能提供无限的能力,但将数据发送到服务器,需要网络并产生延迟。

标准

设备上

云(云API)

隐私

Data stays on device, strong

Data goes to server, attention needed

速度

即时、无网络

Depends on network latency

离线

它有效

不起作用

型号尺寸

有限(电话资源)

无限

电池/热量

大量使用的效果

Server under load, device relaxed

成本

免费(设备源)

每次使用费用

决策规则:如果正在处理个人/敏感数据、需要离线工作或必须立即响应,请选择设备上。如果您需要非常大的模型,请转向云。 This unit is on-device focused; We will cover cloud AI in the next unit.

提示:始终将设备上的处理敏感数据(健康、生物识别、位置)的功能设置为默认功能。 “数据不会离开设备”这句话对于隐私合规性和用户信任来说都是无价的,并且对商店隐私标签产生了很大的影响。

Three ways: ML Kit, Core ML, TensorFlow Lite

ML Kit(Google)是最简单的开始方式:它提供了现成的功能,例如文本识别(OCR - 读取图像中的文本)、人脸检测、条形码读取、几行翻译。 You don't need to train your own model. Core ML (Apple) 是在 iOS 上运行您自己的模型或现成模型的最有效方式;它使用Apple的Neural Engine(人工神经网络处理器)硬件。 TensorFlow Lite/LiteRT 是一种跨平台解决方案,可让您在 Android 和 iOS 上运行自己训练的模型。

与 AI 的一般集成流程如下:

  1. 人才定义。一个明确的目标,例如“我想阅读照片中的文字”。
  2. 路径选择。如果有现成的人才,ML Kit; Core ML/TF Lite(如果有特殊型号)。
  3. 模型格式。 .mlmodel(Core ML)、.tflite(TF Lite)。解释AI转型步骤。
  4. 集成代码。加载模型,预处理输入,解释输出。
  5. 性能测试。真实设备上的速度、内存、电池测量。
注意:设备上模型集成中最常见的 AI 错误是输入预处理 - 将图像转换为模型期望的尺寸和颜色格式。如果模型需要 224x224 像素,而您给它 300x300,则结果将毫无意义,但您不会收到错误消息。验证模型文档中的预处理值。

了解模型的局限性

An on-device model makes decisions based on the data it was trained on. An object recognition model trained only on photos taken during the day will be wrong on night images.模型有一个置信度得分(置信度 — 模型对其答案的置信度,通常在 0 到 1 之间); It is dangerous to present low-confidence results to the user as accurate.例如,皮肤斑点扫描应用程序不应该说“肯定是良性的”,而应该说“模型的预测是这样的,请咨询医生”。模型结果是建议,而不是诊断。

三个迷你箱子

案例 1 — 使用 OCR 加速。费用跟踪应用程序消除了通过 ML Kit 文本识别手动输入收据的负担。用户拍摄收据照片,金额和日期会自动填写。 Manual entry time decreased from 40 seconds to 8 seconds per receipt.团队总是让用户确认人工智能读取的数量;因为褶皱收据的误差幅度为 6%。自动化+人工批准是正确的平衡。

情况 2 — 预处理错误。一个团队将植物识别模型与 TensorFlow Lite 集成;在测试仪上,结果是随机的。问题在于 AI 生成的代码没有将图像标准化为模型预期的 [0,1] 范围(像素值保留在 0-255)。添加归一化后,准确度从 30% 提高到 89%。教训:预处理是无声无息但却致命的。

案例 3 — 隐私增益。健康应用程序使用设备上的 Core ML 模型检测到心率数据异常。数据从未到达服务器。这一选择使该应用程序能够在 App Store 隐私标签中收到“不收集数据”的字样,并与竞争对手相比提高了其下载率。设备上的选择既符合道德,又具有商业利润。

弱提示/强提示

弱提示:“将图像识别添加到我的应用程序中。”

强大的提示:“将金额和日期读取功能添加到我的 Android/Kotlin 应用程序中。 - 使用 Google ML Kit 文本识别(设备上、离线) - 从相机或图库中拍摄图像 - 使用正则表达式从识别的文本中提取金额和日期 - 将结果呈现给用户以在可编辑字段中批准,自动保存 - 处理相机权限流和拒绝。写下预处理和错误情况,解释步骤。”

可复制模板

路径选择模板:“我想要制作以下功能:[功能]。应该在设备上还是云端?根据以下条件进行比较:隐私、离线需求、模型大小、电池、成本。推荐适当的工具(ML Kit / Core ML / TF Lite)并证明合理性。”

集成模板:“为[平台]编写[模型/功能]集成:1)模型加载2)输入预处理(预期大小和标准化)3)推理调用4)输出解释和置信度得分检查5)对低置信度结果向用户发出警告提醒我验证模型文档中的预处理值。”

置信度评分模板:“考虑此推理代码中的置信度评分:- 当前结果“精确”低于阈值(例如 0.6)- 向用户显示“这是估计”注释- 如果关键领域(健康、安全)[代码],请咨询专家”

性能验证模板:“列出我需要在实际设备上测量的设备上模型集成的指标:推理时间、内存增加、电池影响、发热。告诉每个指标的测量方法。”

常见错误

  • 跳过预处理或做得不正确。 Wrong size/normalization silently produces wrong result.
  • 忽略置信度分数。 Presenting a low-confidence estimate as accurate will mislead the user.
  • 在模拟器中测试模型。 Actual device speed and battery are very different;始终在真实硬件上进行测量。
  • Sending sensitive data to the cloud unnecessarily. Choosing cloud when on-device is possible is a privacy risk.
  • 忽略模型尺寸。 Large model apps inflate download size and crash on low hardware.
  • 忘记模型的训练限制。 The model is mistaken in the condition where it does not see (night, different language);让用户清楚这一点。

总之

设备端人工智能通过将数据保留在手机上来提供隐私、速度和离线操作;限制是设备功率和型号尺寸。 ML Kit 用于开箱即用的功能,Core ML (iOS) 和 TensorFlow Lite(跨平台)用于自定义模型。集成的无声杀手是预处理不当;输入大小和标准化是通过模型文档进行验证的。每个结果都带有一个置信度分数,低置信度预测并不表示为绝对事实。决策是在真实设备上而不是模拟器上衡量的。

应用任务

对于“从照片中读取文本”或“条形码读取”功能,请使用“路径选择模板”询问 AI 是否应该在设备上或云端,然后使用“集成模板”询问基于 ML Kit 的蓝图。验证代码中是否存在预处理步骤和用户批准/编辑流程。设置信任分数阈值并写下如果结果信任度较低您将采取的措施。

清单

  • [ ] 我根据标准做出了设备端/云端决策
  • [ ] 我选择了正确的工具(ML Kit / Core ML / TF Lite)
  • [ ] 我从模型的文档中验证了预处理维度和标准化
  • [ ] 我检查了信任评分并警告信任结果较低
  • [ ] 我将结果呈现给用户并经过批准/编辑,我没有盲目保存它
  • [ ] 我在真实设备上测量了性能,而不是模拟器