编写一个移动图像分类 Android 应用程序

此应用程序使用图像分类功能,实时连续分类设备摄像头所看到的物体,并在屏幕上显示最可能的推理结果。

此示例大致基于 Google CodeLabs - CameraX 入门

此示例应用程序使用了预训练的 TorchVision MOBILENET V2

目录

先决条件

准备应用程序中使用的模型和数据

  1. 将模型转换为 ORT 格式

    打开 使用 ONNX Runtime 进行 Mobilenet v2 量化的 Jupyter Notebook,此 Notebook 将演示如何

    • 将预训练的 MobileNet V2 FP32 模型从 PyTorch 导出为 FP32 ONNX 模型
    • 将 FP32 ONNX 模型量化为 uint8 ONNX 模型
    • 将 FP32 和 uint8 ONNX 模型都转换为 ORT 模型

    注意:此步骤是可选的,您可以在此处下载 FP32 和 uint8 ORT 模型。

  2. 下载模型类别标签

    wget https://raw.githubusercontent.com/pytorch/hub/master/imagenet_classes.txt
    
  3. 将标签文件和模型复制到示例应用程序资源目录

    cd onnxrutime-inference-examples
    cp *.ort mobile/examples/image_classification/android/app/src/main/res/raw/
    cp imagenet_classes.txt mobile/examples/image_classification/android/app/src/main/res/raw/
    

作为步骤 1-3 的替代方案,您可以使用此预构建脚本将模型和数据下载到正确的目录

cd onnxruntime-inference-examples
mobile/examples/image_classification/android/download_model_files.sh

创建 Android 应用程序

  1. 在 Android Studio 中打开示例应用程序

    打开 Android Studio 并选择 Open an existing project,浏览文件夹并打开 mobile/examples/image_classification/android/ 文件夹。

    Screenshot showing Android Studio Open an Existing Project

    此项目使用已发布的 ONNX Runtime Android 包。您也可以通过仅包含模型中的运算符来自定义 ONNX Runtime,从而减小应用程序的大小。有关如何执行此操作以及如何将生成的包包含到 Android 应用程序中的更多信息,请参阅Android 自定义构建说明

  2. 构建应用程序

    在 Android Studio 顶部工具栏中选择 Build -> Make Project,并检查项目是否已成功构建。

    Screenshot showing Android Studio build command

    Screenshot showing successful build in Android Studio

  3. 连接您的 Android 设备并运行应用程序

    将您的 Android 设备连接到电脑,并在顶部下拉设备栏中选择您的设备。

    Screenshot showing connection to device in Android Studio

    然后选择 Run -> Run app,这将提示应用程序安装到您的设备上。

    现在,您可以通过在设备上打开应用程序 ort_image_classifier 进行测试和尝试。该应用程序可能会请求使用摄像头的权限。

    以下是应用程序的示例截图。

    Screenshot showing an example classification of a toy terrier dog