使用 LiteRT 在 MediaTek Dimensity 上部署 Ultralytics YOLO
Ultralytics YOLO 可通过现有的 LiteRT 导出在 MediaTek Dimensity Android 手机上运行。无需 MediaTek 专用导出格式:导出标准的 .tflite 模型,然后使用官方 Ultralytics YOLO Flutter 插件在 Android 上运行;该插件使用 LiteRT 进行 CPU 和 GPU 推理。
导出#
LiteRT 导出支持 Linux x86_64 和 macOS,不支持 NVIDIA Jetson 等 Linux aarch64 主机。在 imgsz=224 导出分类模型,在 imgsz=640 导出其他所有任务的模型。
pip install ultralyticsfrom ultralytics import YOLO
model = YOLO("yolo26n.pt")
model.export(format="litert", imgsz=640) # 创建 'yolo26n.tflite' (FP32)
model.export(format="litert", quantize="w8a32", imgsz=640) # 会生成 'yolo26n_w8a32.tflite'你可以在主机上使用 YOLO("yolo26n.tflite")("https://ultralytics.com/images/bus.jpg") 检查导出的模型。这会在本地运行 LiteRT,不会选择或测试 MediaTek NPU。有关预测、验证和所有导出参数,请参阅 LiteRT 指南。
在 Android 上部署#
Ultralytics YOLO Flutter 插件可在 Android 上运行 LiteRT .tflite 导出模型,为全部七种 YOLO26 任务提供摄像头和单图推理。官方 w8a32 资源已发布在 yolo-flutter-app v0.7.0 版本中。
在 Google Play 上试用 Ultralytics YOLO Android 应用。下方预览展示的是该应用在 iOS 上的运行效果。
要运行导出的模型,请将 yolo26n_w8a32.tflite 复制到 Flutter 应用中的 assets/models/,并将插件和资源添加到 pubspec.yaml:
dependencies:
flutter:
sdk: flutter
ultralytics_yolo: ^0.7.1
flutter:
assets:
- assets/models/yolo26n_w8a32.tflite运行 flutter pub get,然后在 lib/main.dart 中使用模型进行摄像头推理:
import 'package:flutter/material.dart';
import 'package:ultralytics_yolo/ultralytics_yolo.dart';
void main() => runApp(
MaterialApp(
home: Scaffold(
body: YOLOView(modelPath: 'assets/models/yolo26n_w8a32.tflite'),
),
),
);将 Android 的最低 SDK 版本设为 24,添加摄像头权限,然后在手机上运行 flutter run。有关 Android 设置,请参阅插件安装指南;有关单图推理,请参阅快速入门。如果设备或模型无法使用 GPU,插件会尝试进行 GPU 推理,并回退到 CPU。
在 MediaTek 设备上,已发布的 Flutter 插件支持 LiteRT CPU 和 GPU 推理,但不支持 MediaTek NPU。下方的 NPU 结果是使用尚未发布的插件 NPU 原型版本和 LiteRT mediatek 2.3.0 NPU 运行时测得的,使用的是 FP32 导出模型(没有 quantize)。w8a32 资源无法在 NPU 上完全编译。
实测性能#
LiteRT 指南中的 Xiaomi 17T Pro 结果涵盖搭载 MediaTek NPU 990 的 MediaTek Dimensity 9500 (MT6993) 和 Android 16 / API 36 上的全部七种 YOLO26n 任务。每个数值都是预热 3 次后调用 15 次所得的平均值。CPU 和 GPU 测量使用了 ultralytics_yolo 0.7.1 和官方 v0.7.0 w8a32 资源;原型 NPU 测量使用了 FP32 导出模型。YOLO26n 检测在 CPU 上耗时 31.4 ms,在 GPU 上耗时 25.6 ms,在原型 NPU 路径上耗时 11.0 ms。Depth 和 OBB 没有 NPU 结果,因此改用 GPU 运行。
在 Ultralytics 移动端基准测试页面上比较更多设备和模型。
MediaTek Genio#
这些结果针对使用 LiteRT 的 Dimensity Android 手机。MediaTek Genio IoT 平台使用独立的 Yocto 和 NeuroPilot 软件栈。Ultralytics 不会验证或记录 Genio 部署流程,上述 Dimensity 结果也不适用于 Genio 开发板。
常见问题#
使用
model.export(format="litert", imgsz=640)或yolo export model=yolo26n.pt format=litert imgsz=640。分类任务请使用imgsz=224。生成的.tflite文件可通过 Flutter 插件运行;没有单独的 MediaTek 导出格式。已发布的插件支持 LiteRT CPU 和 GPU 推理。上述 NPU 结果使用的是尚未发布的原型版本和 FP32 模型;官方
w8a32资源无法在 NPU 上完全编译。不适用。这些测量结果来自 Android 手机,而 Genio 使用不同的软件栈。Ultralytics 尚未验证 Genio 部署。
评论
提出问题、分享结果,或帮助其他人。