



随着人工智能的日益普及,用户希望AI也能够集成到移动应用程序中,使人们在移动设备(如手机)上能够享受到AI带来的便利和强大功能。但是,由于移动设备的计算资源限制(例如,手机上的GPU、内存和存储资源目前仍无法和计算机上的硬件相比),要让移动应用程序直接在移动设备上运行AI功能,唯一的方法是部署经过优化的机器学习模型,这样才能提供令人愉悦的用户体验。
Firebase ML Kit是在Firebase平台上为移动开发人员提供的一款机器学习(ML)软件开发工具包(software development kit,SDK)。
Firebase是Google的移动平台,它可以用于JavaScript、Android和iOS,这意味着用户只需要部署一次,就可以在全部主流移动平台上使用。因此,Firebase ML Kit可以促进移动机器学习模型的托管和服务。
Firebase ML Kit将在移动设备上运行机器学习模型的繁重任务减少到只需要执行API调用,这些调用已经涵盖常见的移动用例,如人脸检测、文本识别、条形码扫描、图像标记和地标特征识别等。它可以采用输入作为参数,然后输出一堆分析信息。
ML Kit提供的API可以在设备或云端运行,也可以同时在这两者上运行。设备上的API独立于网络连接,因此与基于云的API相比,运行速度更快。基于云的API托管在Google云平台(google cloud platform,GCP)上,并可使用机器学习技术提供更高水平的准确率。
如果可用的API未涵盖所需的用例,还可以使用Firebase控制台构建、托管和提供自定义TensorFlow Lite模型。ML Kit可充当自定义模型之间的API层,使其易于运行。
图1-6显示了Firebase ML Kit的用户界面。
图1-6
在图1-6中,可以看到Firebase ML Kit提供的API,包括Text recognition(文本识别)、Face detection(人脸检测)、Barcode scanning(条形码扫描)、Image labeling(图像标记)和Landmark recognition(地标特征识别)等。
Core ML是Apple公司在iOS 11中发布的机器学习框架,用于使运行在iOS上的应用程序(如Siri、Camera和QuickType等)更加智能。
Core ML提供高效的性能,有助于在iOS设备上轻松集成机器学习模型,使应用程序能够根据可用数据进行分析和预测。
Core ML支持标准机器学习模型,如树集成(tree ensemble)、支持向量机(support vector machine,SVM)和广义线性模型。它包含30多种神经元层的广泛深度学习模型。
使用Vision框架,可以轻松地将面部跟踪、面部检测、文本检测和对象跟踪等功能与应用程序集成在一起。
Natural Language框架有助于分析自然文本并推断其特定于语言的元数据。与Create ML一起使用时,该框架可用于部署自定义NLP模型。
对GamePlayKit的支持有助于评估学习的决策树。
Core ML非常高效,因为它建立在Metal和Accelerate等底层技术之上。这允许它利用CPU和GPU。
此外,Core ML不需要网络连接即可运行。它具有很高的设备内置(on-device)优化。这确保所有计算都在设备本身内离线完成,从而最大限度地减少内存占用和功耗。
Caffe 2建立在最初由加州大学伯克利分校开发的快速嵌入卷积架构(convolution architecture for fast embedding,Caffe)之上,是Facebook开发的轻量级、模块化和可扩展的深度学习框架。
Caffe 2可帮助开发人员和研究人员在Android、iOS和Raspberry Pi上部署机器学习模型并提供人工智能驱动的性能。此外,它还支持与Android Studio、Microsoft Visual Studio和Xcode等的集成。
Caffe 2带有可互换工作成果的原生Python和C++ API,有助于轻松进行原型设计和优化。它可以有效处理大量数据,并促进自动化、图像处理以及统计和数学运算。
Caffe 2是开源的并托管在GitHub上,可利用社区贡献来开发新模型和算法。
TensorFlow是由Google Brain开发的开源软件库,可进行高性能数值计算。其灵活的架构允许跨CPU、GPU和张量处理单元(tensor processing unit,TPU)轻松部署深度学习模型和神经网络。
Gmail使用TensorFlow模型来理解消息的上下文,并通过其广为人知的Smart Reply(智能回复)功能预测回复。
TensorFlow Lite是TensorFlow的轻量级版本,可帮助在Android和iOS设备上部署机器学习模型。它利用了Android Neural Network API的强大功能来支持硬件加速。
TensorFlow生态系统可通过TensorFlow Lite用于移动设备,如图1-7所示。
从图1-6中可以看到,我们需要将训练之后的TensorFlow模型转换为TensorFlow Lite模型,然后才能在移动设备上使用它。这很重要,因为TensorFlow模型比TensorFlow Lite模型更大,延迟也更长,TensorFlow Lite模型经过优化后才能在移动设备上运行。这种转换是通过TensorFlow Lite转换器进行的,转换器可通过以下方式使用。
图1-7
使用Python API:可以使用Python和以下任何代码行将TensorFlow模型转换为TensorFlow Lite模型。
TFLiteConverter.from_saved_model():转换SavedModel目录。
TFLiteConverter.from_keras_model():转换tf.keras模型。
TFLiteConverter.from_concrete_functions():转换具体函数。
使用命令行工具:TensorFlow Lite转换器也可用作命令行界面(command-line interface,CLI)工具,只不过其功能的多样性不如Python API版本。
tflite_convert \
--saved_model_dir=/tf_model \
--output_file=/tflite_model.tflite
后续章节会演示如何将TensorFlow模型转换为TensorFlow Lite模型。