移动开发中的设备端ML:是什么、有哪些框架及如何工作

作者: IT Sectr 发布日期: 2026-07-29 阅读时间: 11 分钟

设备端ML(on-device ML)——直接在移动设备上执行机器学习模型,无需将数据发送到服务器。根据Google AI, 2025的报告,超过70%的用户因隐私和无网络延迟而更喜欢使用on-device ML的应用。Apple的Core ML、Google的TensorFlow Lite和ML Kit可以完全在设备上解决Vision、NLP、人脸和物体识别任务——无需互联网且能耗最低。

要点

  • 设备端ML — 直接在移动设备上运行机器学习模型,无需服务器端数据处理。
  • Core ML — Apple的框架,在Neural Engine上为iOS和macOS提供硬件加速。
  • TensorFlow Lite — Google的跨平台解决方案,支持量化和GPU、NNAPI、XNNPACK委托。
  • ML Kit — 带有现成API的SDK,无需构建模型即可识别文本、人脸、条码和物体。
  • Vision和NaturalLanguage — iOS上用于图像和文本分析的内置ML工具。

什么是设备端ML以及为什么移动应用需要它

设备端ML(on-device ML)是一种机器学习模型直接在移动设备上执行而无需将数据发送到远程服务器的方法。隐私是主要优势:用户数据不会离开设备。根据Google研究(2024),63%的用户拒绝需要将数据发送到服务器的ML功能。On-device ML消除了网络延迟,支持离线运行,并通过硬件加速降低能耗。

On-device ML相对于云端方案的优势

On-device ML在毫秒级而非秒级处理数据——这对实时人脸和物体识别至关重要。无需互联网连接是另一个优势:ML功能在飞行模式和不稳定连接的地区也可用。Core ML使用Apple A12+芯片中的Neural Engine,在不到1W的功耗下每秒执行11万亿次操作。对于移动应用,on-device ML已成为Vision、NLP和物体识别任务的事实标准。

移动应用中on-device ML的主要场景

移动应用中的ML用于人脸认证(Face ID)、Snapchat和Instagram中的AR滤镜、带Pose Detection的健身追踪器、Adobe Scan中的OCR扫描以及键盘中的预测输入。特定任务的定制模型通过Core ML(iOS)或TensorFlow Lite(Android)创建。ML Kit适用于典型场景——无需训练模型即可识别文本、人脸和条码。

Core ML:Apple用于iOS的设备端ML框架

Core ML是Apple用于在iPhone、iPad、Mac和Apple Watch上运行ML模型的框架。它自动选择最优硬件加速:Neural Engine用于A12+设备上的神经网络(11 TOPS),GPU用于图像处理任务,CPU用于顺序计算。Core ML支持.mlmodel(原始)和.mlmodelc(编译)格式。从PyTorch和TensorFlow转换模型通过coremltools完成——这是一个保留拓扑和权重的Python库。

Create ML和coremltools

Create ML是Apple用于无需编写代码即可训练简单模型的应用。生产环境使用coremltools——从PyTorch、TensorFlow和scikit-learn转换的工具。Coremltools支持float32到float16和int8的量化、色彩空间调色板化以及删除冗余操作以减小模型大小。

python
import coremltools as ct

model = ct.convert(
    "resnet50.mlmodel",
    source="pytorch",
    convert_to="mlprogram"
)
model.save("Resnet50.mlpackage")

Neural Engine和Core ML硬件加速

Neural Engine是Apple A12及更新芯片中的专用神经处理器。16个核心在不到1W的功耗下每秒执行高达11万亿次操作。Core ML自动将神经网络计算路由到Neural Engine,将GPU兼容的计算路由到Metal GPU。开发人员无需选择设备——Core ML通过Performance Report分析模型和可用硬件来完成这一工作。

TensorFlow Lite:Google的跨平台设备端ML

TensorFlow Lite(TFLite)是Google用于在Android、iOS和Linux上运行ML模型的跨平台解决方案。模型使用.tflite格式,通过TensorFlow生态系统的TFLiteConverter创建。TFLite支持float32到int8的量化,在分类任务上将模型大小缩小4倍,同时保持97–99%的准确率。Google Play Services for TFLite自动更新运行时,无需重新发布应用。

TFLiteConverter和模型量化

TFLiteConverter是将TensorFlow模型转换为.tflite格式的主要工具。训练后int8量化将模型从300 MB压缩到75 MB,无需访问完整数据集。量化感知训练(QAT)在ImageNet上的准确率损失不到1%。TFLiteConverter还支持图剪枝和删除TFLite运行时不支持的操作。

python
import tensorflow as tf

converter = tf.lite.TFLiteConverter.from_saved_model(
    "saved_model_dir"
)
converter.optimizations = [tf.lite.Optimize.DEFAULT]
tflite_model = converter.convert()

TFLite委托:GPU、NNAPI和XNNPACK

没有委托时,TFLite在CPU上运行模型的速度比使用硬件加速慢3–5倍。GPU委托在Android上使用OpenCL和OpenGL ES 3.1,Core ML委托在iOS上使用Neural Engine。NNAPI委托在Android 8.1+上利用NPU和DSP。XNNPACK委托在ARM CPU上提供跨平台加速,并针对移动处理器进行了优化。选择委托时,使用TfLiteGpuDelegate.create()并对结果进行null检查。

ML Kit:移动开发中ML的现成解决方案

ML Kit是Google的SDK,提供用于on-device ML的现成API。在移动应用中,ML Kit用于文本识别(50+种语言,包括手写)、面部检测(468个面部关键点)、条码扫描(QR、EAN-13、Code 128、PDF417、Data Matrix)和物体检测。所有API完全在设备上运行,无需互联网。ML Kit在iOS和Android上提供统一API。

ML Kit中的面部检测和文本识别

面部检测返回面部轮廓、眉毛、眼睛、鼻子和嘴唇的坐标,以及头部倾斜角度和眼睛状态。AR面具和相机滤镜是最流行的使用场景。文本识别从照片中提取文本,打印字符的准确率高达99%。API通过CameraX支持实时识别。

kotlin
val recognizer = TextRecognition.getClient()
val image = InputImage.fromBitmap(bitmap)

recognizer.process(image)
    .addOnSuccessListener { result ->
        result.textBlocks.forEach { block ->
            println(block.text)
        }
    }

ML Kit中的条码扫描和物体检测

条码扫描实时识别来自相机的视频流中的条码。物体检测通过边界框和类别标签(人、车、动物)识别图像中的物体。姿态检测为健身应用和运动分析确定33个身体关键点。图像标记返回最多10个语义图像标签——“自然”、“城市”、“食物”。

Vision和NaturalLanguage:iOS和Android上的内置ML工具

Apple通过Vision和NaturalLanguage提供内置ML解决方案,无需安装第三方SDK。Vision(VNRequest)在设备上执行人脸、文本、条码和轮廓检测。NaturalLanguage(NLTokenizer)提供分词、词形还原、语言识别和情感分析。在Android上,等效功能通过ML Kit(识别)和android.speech中的SpeechRecognizer(语音)实现。内置工具无需下载模型——它们已预装在系统中。

Vision框架:VNRequest和VNCoreMLRequest

Vision包括VNDetectFaceRectanglesRequest(人脸检测)、VNRecognizeTextRequest(文本识别)、VNDetectBarcodesRequest(条码)和VNDetectHumanBodyPoseRequest(骨架)。VNCoreMLRequest将自定义Core ML模型集成到Vision管线中——例如,对检测到的人脸进行表情分类。所有请求在Neural Engine上以最小延迟执行。

swift
let request = VNRecognizeTextRequest { request, error in
    guard let observations = request.results
        as? [VNRecognizedTextObservation] else { return }
    for observation in observations {
        let topCandidate = observation
            .topCandidates(1).first
        print(topCandidate?.string as? String ?? "")
    }
}

let handler = VNImageRequestHandler(
    cgImage: image, options: [:]
)
try? handler.perform([request])

iOS上的NaturalLanguage和SFSpeechRecognizer

NaturalLanguage提供NLTokenizer用于将文本分割为标记、NLLanguageRecognizer用于语言识别(72种语言)和NLSentimentAnalyzer用于文本情感分析。SFSpeechRecognizer是语音识别API,在设备上支持50+种语言(iOS 13+)。使用前需要SFSpeechRecognizerAuthorizationStatus权限。结果通过SFSpeechRecognitionResultHandler异步返回。

常见问题

什么是设备端ML?

设备端ML(on-device ML)是一种机器学习模型直接在移动设备上运行而无需将数据发送到服务器的方法。Core ML、TensorFlow Lite和ML Kit是用于on-device ML的主要框架。

Core ML和TensorFlow Lite有什么区别?

Core ML是Apple用于iOS和macOS的框架,在Neural Engine上加速。TensorFlow Lite是Google用于Android、iOS和Linux的跨平台解决方案。Core ML在Apple设备上提供更好的性能,TFLite提供通用性。

ML Kit解决哪些任务?

ML Kit解决典型的计算机视觉和NLP任务:文本、人脸、条码、物体和姿态识别。所有API在设备上运行无需互联网,且无需创建自己的模型。

on-device ML需要互联网吗?

不需要,on-device ML完全本地运行。模型加载到设备上并在无互联网连接的情况下执行。ML Kit也提供精度更高的云端API版本,但on-device模式可离线使用。

移动开发中应该选择哪个ML框架?

仅限iOS的项目选择Core ML——它使用Neural Engine并与Apple生态系统紧密集成。跨平台项目选择TensorFlow Lite。无需自定义模型的典型任务选择ML Kit及其现成API。

总结

  • 设备端ML — 直接在移动设备上运行模型,无需将数据发送到服务器,零网络延迟。
  • Core ML — Apple的框架,在Neural Engine上为iOS和macOS提供硬件加速。
  • TensorFlow Lite — Google的跨平台解决方案,支持int8量化和GPU、NNAPI、XNNPACK委托。
  • ML Kit — 带有现成API的SDK,无需构建模型即可识别文本、人脸和条码。
  • Vision和NaturalLanguage — iOS上的内置ML工具,无需安装第三方库。
  • 量化将模型大小缩小4倍且精度损失最小——移动应用的标准做法。
  • On-device ML是处理敏感数据和离线使用场景的应用的必备标准。

我们将开发一款交钥匙移动应用程序

IT Sectr自2017年以来为初创企业和企业打造iOS和Android应用程序。我们将为您提供咨询并提出最佳解决方案。

讨论项目