编写一个移动图像分类 Android 应用程序
此应用程序使用图像分类功能,实时连续分类设备摄像头所看到的物体,并在屏幕上显示最可能的推理结果。
此示例大致基于 Google CodeLabs - CameraX 入门
此示例应用程序使用了预训练的 TorchVision MOBILENET V2。
目录
先决条件
- Android Studio 4.1+ (安装在 Mac/Windows/Linux 上)
- Android SDK 29+
- Android NDK r21+
- 处于开发者模式并启用 USB 调试的带摄像头的 Android 设备
- 克隆 onnxruntime-inference-examples 源代码仓库
准备应用程序中使用的模型和数据
-
将模型转换为 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 模型。
-
下载模型类别标签
wget https://raw.githubusercontent.com/pytorch/hub/master/imagenet_classes.txt
-
将标签文件和模型复制到示例应用程序资源目录
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 应用程序
-
在 Android Studio 中打开示例应用程序
打开 Android Studio 并选择
Open an existing project
,浏览文件夹并打开mobile/examples/image_classification/android/
文件夹。此项目使用已发布的 ONNX Runtime Android 包。您也可以通过仅包含模型中的运算符来自定义 ONNX Runtime,从而减小应用程序的大小。有关如何执行此操作以及如何将生成的包包含到 Android 应用程序中的更多信息,请参阅Android 自定义构建说明
-
构建应用程序
在 Android Studio 顶部工具栏中选择
Build -> Make Project
,并检查项目是否已成功构建。 -
连接您的 Android 设备并运行应用程序
将您的 Android 设备连接到电脑,并在顶部下拉设备栏中选择您的设备。
然后选择
Run -> Run app
,这将提示应用程序安装到您的设备上。现在,您可以通过在设备上打开应用程序
ort_image_classifier
进行测试和尝试。该应用程序可能会请求使用摄像头的权限。以下是应用程序的示例截图。