如何在Android应用中应用机器学习?
如今,越来越多的智能推荐系统、智能手机上嵌入的AI摄像头(用于自动对焦和自动人脸检测)、高级聊天机器人以及Siri、Alexa和Google Assistant等AI语音助手涌现出来。人们开始创建像ChatGPT这样的应用程序,可以处理面试等高级问题。然而,尽管这看起来令人着迷,但要部署具有此类功能的应用程序,需要深入了解机器学习和深度学习算法,并能够访问各种各样的资源和数据集,而这对于个人来说有时是难以实现的。因此,需要一个合适的团队来访问和管理如此大量的资源,并将机器学习部署到具有巨大实用性的应用程序中。尽管如此,将一些基本的、预训练的或预实现的机器学习算法集成到我们的应用程序中仍然是完全可能的。
ML Kit − 此工具包适用于Android和iOS平台。这些API已针对移动设备进行了优化,不需要太多的机器学习专业知识。ML Kit的主要优势在于,开发人员可以在设备本身上运行机器学习模型,而不是将数据发送到远程服务器进行处理。这有助于提高用户数据的隐私性,因为数据无需离开设备,此外,这也帮助开发人员提供更快的数据处理并产生实时结果。一些API包括:
视觉API:
条形码扫描 − 条形码已成为通过设备传递信息的便捷方式。使用此API,可以轻松扫描并获取嵌入在条形码中的信息,并且应用程序可以根据接收到的数据类型来响应数据。条形码必须采用线性格式(Codebar、Code 39、EAN-8、EAN-13、ITF、Code 93、Code 128等)或2D格式(QR码、PDF417、Data Matrix、Aztec)。
人脸检测 − 现在,你肯定已经使用过Snapchat的人脸美化功能、Instagram的“你是哪只宝可梦?”等功能。可以使用人脸检测来实现此类功能。注意:这只会检测人脸,而无法识别是谁的脸(不进行人脸识别)。它也可以用于对任何录制视频中特定人物的图像进行处理。
面部网格检测 − 为此,你需要一张自拍照片,ML模型在检测到人脸后会在其上绘制一个边界框。它会在流式视频中为人脸生成AR效果。这可以用于获取468个3D点和三角形信息。
文字识别 − 希望大家都使用过并对文字识别有所了解,因此当你点击某篇文章的图片并将其粘贴到Google中,并要求其将其转换成你的母语时,就会用到它。但它也有局限性,它只适用于基于拉丁语系的语言,因为ML Kit只支持拉丁文字。此外,它还可以检测单词、段落、行以及上下文的每一个元素。此外,它还可以识别你正在输入或提供的语言。
图像标注 − 我们可以检测并提取图像中各种对象或实体在广泛类别中的信息。我们还可以使用TensorFlow Hub或我们自己使用TensorFlow、AutoML Vision Edge或TensorFlow Lite Model Maker训练的模型来自定义这些功能。ML Kit从TensorFlow Lite模型中提取标签,并将其作为文本描述提供。
数字墨水识别 − 通过此API,我们可以通过设备屏幕识别手写文字。它还可以用于对手机屏幕等数字表面上的手势进行分类,支持数百种语言,还可以对草图进行分类。借助此功能,我们可以轻松地在手机屏幕上书写我们的语言,而不是通过虚拟键盘进行繁琐的打字。
姿势检测 − 此API允许开发人员向应用程序添加可与人体姿势一起工作的功能。这可用于从视频或图像中实时识别任何人的位置。此API在健康和健身应用程序中非常有用,可以检测你的动作。
自拍分割 − 你是否曾经使用过背景移除功能,将自己放置在从未拍摄过的图像中,或者将自己显示在你从未去过的地方?此API允许你做到这一点。借助此API,开发人员可以轻松地将图像中的人或选定对象与背景分离。它还可以在任何视频中实时运行。
自然语言API:
语言识别 − 此API帮助开发人员识别输入文本或字符串的语言,因为用户在进行Google搜索或输入任何文本时通常不会提供其语言信息。
翻译 − 此API可将任何给定语言动态翻译成用户所需的不同的输出语言。这里的动态意味着应用程序可以动态下载和管理语言包,从而保持设备存储需求较低。智能回复:此API允许应用程序建议对设备上接收到的任何文本消息进行自动回复。它会根据对话的完整上下文生成回复建议。
实体提取 − 现代智能手机会在虚拟屏幕键盘上方的小条上建议文本,你是否想过这是如何发生的?这就是此API的功能。在输入任何文本时,此API会识别最常用的单词或实体,提取它们,并根据你正在输入的上下文将它们作为快捷方式建议。一些实体包括地址、日期时间、电子邮件地址、航班号、货币、电话号码、URL等。
然而,尽管这听起来很酷,但这些预训练的机器学习模型仍然存在一定的局限性,它们可能不够准确,并且在某些应用程序用例中性能不足。
Android的自定义ML堆栈 − 如果你想要更强的控制能力并部署你自己的机器学习模型,那么你可以使用这个。这个自定义ML堆栈构建在TensorFlow Lite和Google Play服务之上,因此它可以提供部署高性能ML功能所需的最重要要素。从上图可以清楚地看出,TensorFlow Lite如何用于在不同级别控制应用程序的性能。
用于ML运行时 − 你可以通过Google Play服务使用TensorFlow Lite在你的应用程序中运行高性能ML推理。
TensorFlow Lite委托 − 如果你正在努力提高应用程序的性能,那么你可以使用TensorFlow Lite委托(通过Google Play服务分发)来加速你的ML模型。加速你的ML模型意味着提供更快速、更准确的解决方案。这种加速发生在GPU、NPU或DSP等专用硬件上。通过访问用户设备的高级计算能力,这减少了延迟并为你的用户提供了流畅的用户体验。
结论
但这里需要注意的是,你需要将你的初始模型转换为TensorFlow Lite模型(.tflite)。你的新模型应该与预实现的TensorFlow模型大相径庭。此类应用程序的更新由Google Play服务管理,并在进行任何更改后立即提供给所有用户。如果你想避免这种情况并为特定用户提供特定更新,可以使用Firebase远程配置和Firebase A/B测试。