使用图形处理单元 (GPU) 运行机器学习 (ML) 模型可以极大地提高机器学习支持的应用程序的性能和用户体验。在 Android 设备上,您可以使用 委托 和以下 API 之一,启用模型的 GPU 加速执行
本页面介绍了如何使用 Task 库在 Android 应用程序中为 TensorFlow Lite 模型启用 GPU 加速。有关 TensorFlow Lite GPU 委托的更多信息,包括最佳实践和高级技术,请参阅 GPU 委托 页面。
使用 Google Play 服务在 TensorFlow Lite 中使用 GPU
TensorFlow Lite Task 库 提供了一组特定于任务的 API,用于构建机器学习应用程序。本部分介绍了如何使用 Google Play 服务中的 TensorFlow Lite,使用这些 API 与 GPU 加速委托一起使用。
使用 Google Play 服务的 TensorFlow Lite 是在 Android 上使用 TensorFlow Lite 的推荐方法。如果您的应用程序面向未运行 Google Play 的设备,请参阅 使用 Task 库和独立 TensorFlow Lite 的 GPU 部分。
添加项目依赖项
要使用 Google Play 服务启用使用 TensorFlow Lite Task 库访问 GPU 委托,请将 com.google.android.gms:play-services-tflite-gpu
添加到应用程序 build.gradle
文件的依赖项中
dependencies {
...
implementation 'com.google.android.gms:play-services-tflite-gpu:16.0.0'
}
启用 GPU 加速
然后,使用 TfLiteGpu
类异步验证设备是否可以使用 GPU 委托,并使用 BaseOptions
类为 Task API 模型类启用 GPU 委托选项。例如,您可以在 ObjectDetector
中设置 GPU,如以下代码示例所示
Kotlin
val useGpuTask = TfLiteGpu.isGpuDelegateAvailable(context) lateinit val optionsTask = useGpuTask.continueWith { task -> val baseOptionsBuilder = BaseOptions.builder() if (task.result) { baseOptionsBuilder.useGpu() } ObjectDetectorOptions.builder() .setBaseOptions(baseOptionsBuilder.build()) .setMaxResults(1) .build() }
Java
TaskuseGpuTask = TfLiteGpu.isGpuDelegateAvailable(context); Task optionsTask = useGpuTask.continueWith({ task -> BaseOptions baseOptionsBuilder = BaseOptions.builder(); if (task.getResult()) { baseOptionsBuilder.useGpu(); } return ObjectDetectorOptions.builder() .setBaseOptions(baseOptionsBuilder.build()) .setMaxResults(1) .build() });
使用独立 TensorFlow Lite 的 GPU
如果您的应用程序面向未运行 Google Play 的设备,则可以将 GPU 委托捆绑到您的应用程序中,并将其与独立版本的 TensorFlow Lite 一起使用。
添加项目依赖项
要使用独立版本的 TensorFlow Lite 启用使用 TensorFlow Lite Task 库访问 GPU 委托,请将 org.tensorflow:tensorflow-lite-gpu-delegate-plugin
添加到应用程序 build.gradle
文件的依赖项中
dependencies {
...
implementation 'org.tensorflow:tensorflow-lite'
implementation 'org.tensorflow:tensorflow-lite-gpu-delegate-plugin'
}
启用 GPU 加速
然后使用 BaseOptions
类为您的 Task API 模型类启用 GPU 代理选项。例如,您可以在 ObjectDetector
中设置 GPU,如以下代码示例所示
Kotlin
import org.tensorflow.lite.task.core.BaseOptions import org.tensorflow.lite.task.gms.vision.detector.ObjectDetector val baseOptions = BaseOptions.builder().useGpu().build() val options = ObjectDetector.ObjectDetectorOptions.builder() .setBaseOptions(baseOptions) .setMaxResults(1) .build() val objectDetector = ObjectDetector.createFromFileAndOptions( context, model, options)
Java
import org.tensorflow.lite.task.core.BaseOptions import org.tensorflow.lite.task.gms.vision.detector.ObjectDetector BaseOptions baseOptions = BaseOptions.builder().useGpu().build(); ObjectDetectorOptions options = ObjectDetectorOptions.builder() .setBaseOptions(baseOptions) .setMaxResults(1) .build(); val objectDetector = ObjectDetector.createFromFileAndOptions( context, model, options);