Ultralytics YOLO27: Inscreve-te na lista de espera.
Começar

Implementa o Ultralytics YOLO em MediaTek Dimensity com LiteRT

MediaTek Dimensity chip on a circuit board

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 ultralytics
Exportar para LiteRT
from 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.

Ultralytics YOLO app previews on iOS showing segmentation, pose, depth, oriented boxes, and detection

Get it on Google Play

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.tflite

Executa 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.

O suporte à NPU MediaTek é um protótipo

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) ou yolo export model=yolo26n.pt format=litert imgsz=640. Para classificação, usa imgsz=224. O ficheiro .tflite resultante 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 w8a32 nã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.