Implementa o Ultralytics YOLO em MediaTek Dimensity com LiteRT
O Ultralytics YOLO é executado em telemóveis Android MediaTek Dimensity através da exportação LiteRT existente. Não existe um formato de exportação específico para MediaTek: exporta um modelo padrão .tflite e executa-o no Android com o plugin oficial Ultralytics YOLO para Flutter, que usa LiteRT para inferência em CPU e GPU.
Exportar#
A exportação LiteRT é suportada em Linux x86_64 e macOS, mas não em anfitriões Linux aarch64, como o NVIDIA Jetson. Exporta modelos de classificação em imgsz=224 e todos os outros tipos de tarefa em imgsz=640.
pip install ultralyticsfrom ultralytics import YOLO
model = YOLO("yolo26n.pt")
model.export(format="litert", imgsz=640) # cria 'yolo26n.tflite' (FP32)
model.export(format="litert", quantize="w8a32", imgsz=640) # cria 'yolo26n_w8a32.tflite'Podes verificar um modelo exportado no anfitrião com YOLO("yolo26n.tflite")("https://ultralytics.com/images/bus.jpg"). Isto executa LiteRT localmente e não seleciona nem testa uma NPU MediaTek. Consulta o guia LiteRT para obteres informações sobre previsão, validação e todos os argumentos de exportação.
Implementar no Android#
O plugin Ultralytics YOLO para Flutter executa exportações LiteRT .tflite no Android, com inferência de câmara e de imagem única para todas as sete tarefas do YOLO26. Os recursos oficiais w8a32 são publicados na versão v0.7.0 de yolo-flutter-app.
Experimenta a aplicação Ultralytics YOLO para Android no Google Play. As pré-visualizações abaixo mostram a aplicação no iOS.
Para executar o modelo exportado, copia yolo26n_w8a32.tflite para assets/models/ numa aplicação Flutter e adiciona o plugin e o recurso a pubspec.yaml:
dependencies:
flutter:
sdk: flutter
ultralytics_yolo: ^0.7.1
flutter:
assets:
- assets/models/yolo26n_w8a32.tfliteExecuta flutter pub get e, em seguida, usa o modelo para inferência de câmara em 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'),
),
),
);Define o SDK mínimo do Android como 24, adiciona a permissão de câmara e executa flutter run no telemóvel. Consulta o guia de instalação do plugin para saberes como configurar o Android e o guia de início rápido para inferência de imagem única. O plugin tenta executar a inferência na GPU e recorre à CPU se o dispositivo ou o modelo não puderem usar a GPU.
Em dispositivos MediaTek, o plugin Flutter disponibilizado suporta inferência LiteRT em CPU e GPU, mas não na NPU MediaTek. Os resultados da NPU abaixo foram medidos com uma versão de protótipo não disponibilizada do plugin, com suporte para NPU, e o runtime LiteRT mediatek 2.3.0 para NPU, usando exportações FP32 (sem quantize). Os recursos w8a32 não são totalmente compilados na NPU.
Desempenho medido#
Os resultados do Xiaomi 17T Pro no guia LiteRT abrangem as sete tarefas do YOLO26n num MediaTek Dimensity 9500 (MT6993) com MediaTek NPU 990 e Android 16 / API 36. Cada valor corresponde à média de 15 chamadas após 3 aquecimentos. As medições de CPU e GPU usaram ultralytics_yolo 0.7.1 e os recursos oficiais v0.7.0 w8a32; as medições da NPU de protótipo usaram exportações FP32. A deteção YOLO26n demora 31.4 ms na CPU, 25.6 ms na GPU e 11.0 ms no percurso da NPU de protótipo. Depth e OBB não têm resultados de NPU e são executados na GPU.
Compara mais dispositivos e modelos na página de benchmarks móveis da Ultralytics.
MediaTek Genio#
Estes resultados são relativos a telemóveis Android Dimensity que usam LiteRT. As plataformas IoT Genio da MediaTek usam uma pilha de software Yocto e NeuroPilot separada. A Ultralytics não valida nem documenta a implementação em Genio, e os resultados Dimensity acima não se aplicam às placas Genio.
Perguntas frequentes#
Usa
model.export(format="litert", imgsz=640)ouyolo export model=yolo26n.pt format=litert imgsz=640. Para classificação, usaimgsz=224. O ficheiro.tfliteresultante pode ser executado com o plugin Flutter; não existe um formato de exportação MediaTek separado.O plugin disponibilizado suporta inferência LiteRT em CPU e GPU. Os resultados de NPU acima foram obtidos com um protótipo não disponibilizado e modelos FP32; os recursos oficiais
w8a32não são totalmente compilados na NPU.Não. As medições foram feitas num telemóvel Android, enquanto o Genio usa uma pilha de software diferente. A Ultralytics não validou a implementação em Genio.
Comentários
Faz uma pergunta, partilha os teus resultados ou ajuda alguém.