MediaPipe Solutions 现已发布预览版
在本周的 2023 年 Google I/O 大会上,我们推出了 MediaPipe Solutions。这是一款全新的设备端机器学习工具集,旨在简化开发者的工作流程。该工具集由 MediaPipe Studio、MediaPipe Tasks 和 MediaPipe Model Maker 组成。这些工具为移动设备、Web、桌面设备和 IoT 开发者处理常见的设备端机器学习任务(如音频分类、分割和文本嵌入)提供无代码到低代码的解决方案。
2022 年 12 月,我们推出了 MediaPipe 预览版,其中包含五个任务:手势识别、手部特征点、图像分类、目标检测和文本分类。今天,在 Google I/O 大会上,我们很高兴地宣布推出另外九款工具,并且即将推出更多工具。新推出的工具包括:
通过使用我们的首个 MediaPipe 工具,您可以在网络上查看和测试与 MediaPipe 兼容的型号,而无需自行创建自定义测试应用。您甚至可以立即使用预览版 MediaPipe Studio,尝试本文所提到的新工具以及所有附加功能。详情请访问 MediaPipe Studio 页面。
此外,我们还计划扩展 MediaPipe Studio,以提供无代码模型训练解决方案,从而降低模型训练的门槛,以便您能够轻松创建全新的模型。
MediaPipe Tasks 通过低代码库简化了 Web、移动设备、IoT 和桌面设备开发者的设备端机器学习部署。只需几行代码,您便可轻松地将设备端机器学习解决方案(如上面的示例)集成到应用中,而无需了解这些解决方案背后的所有实施细节。这些解决方案目前包括三个类别的工具:视觉、音频和文本。
为了让您更好地了解如何使用 MediaPipe Tasks,让我们来看一个执行手势识别的 Android 应用的示例。
以下代码将使用内置的机器学习模型创建 GestureRecognizer 对象,然后,重复使用这个对象,以基于输入图像返回一系列识别结果:
// 步骤 1:创建手势识别器
val baseOptions = BaseOptions.builder().setModelAssetPath("gesture_recognizer.task") .build()
val gestureRecognizerOptions = GestureRecognizerOptions.builder() .setBaseOptions(baseOptions).build()
val gestureRecognizer = GestureRecognizer.createFromOptions( context, gestureRecognizerOptions)
// 步骤 2:准备图像
val mpImage = BitmapImageBuilder(bitmap).build()
// 步骤 3:运行推理
val result = gestureRecognizer.recognize(mpImage)
如您所见,只需几行代码,您就可以在应用中实现看似复杂的功能。结合 Android 的其他功能(如 CameraX),您可以为用户提供愉快的体验。
除了简单性之外,使用 MediaPipe Tasks 的另一个主要优势是,无论您使用何种功能,您的代码在多个平台上看起来都很相似。这将加快应用开发速度,因为您可以为每个应用重用相同的逻辑。
虽然能够在应用中识别和使用手势很棒,但如果您需要识别除了内置模型提供的手势之外的自定义手势,该怎么办呢?这时 MediaPipe Model Maker 便派上用场了。借助 Model Maker,您可以在仅有几百个新手势示例的数据集上对内置模型进行重新训练,并快速创建一个全新的、符合您需求的模型。例如,只需几行代码,您就可以使用 Model Maker 自定义一个模型来进行“剪刀、石头、布”的游戏。
from mediapipe_model_maker import gesture_recognizer
# 步骤 1:加载数据集。
data = gesture_recognizer.Dataset.from_folder(dirname='images') train_data, validation_data = data.split(0.8)
# 步骤 2:训练自定义模型。
model = gesture_recognizer.GestureRecognizer.create( train_data=train_data, validation_data=validation_data, hparams=gesture_recognizer.HParams(export_dir=export_dir) )
# 步骤 3:使用未见过的数据进行评估。
metric = model.evaluate(test_data)
# 步骤 4:导出为模型资产包。model.export_model(model_name='rock_paper_scissor.task')
重新训练模型后,您可以在应用中将其与 MediaPipe Tasks 结合使用,以实现更加多样化的应用体验。
如需了解更多信息,请观看我们的 2023 年 I/O 大会课程:使用 MediaPipe 轻松实现设备端机器学习、使用机器学习和 MediaPipe 增强 Web 应用,以及机器学习的新功能,并查看 developers.google.com/mediapipe 上的官方文档。
我们将继续改进 MediaPipe Solutions 并为其增加新功能,包括新的 MediaPipe Tasks 和通过 MediaPipe Studio 进行的无代码培训。您还可以加入 MediaPipe Solutions 公告组以随时了解最新信息,我们会在新功能推出时发布公告通知。
我们期待您使用 MediaPipe Solutions 创造出精彩作品,请务必与 @googledevs 和您的开发者社区分享成果!