core/models library

Biblioteca de utilitários para carregar e gerenciar modelos de visão computacional usando ExecuTorch.

Esta biblioteca fornece abstrações e contratos claros para trabalhar com três perfis de modelos comuns: detecção de objetos, segmentação de imagens e classificação de imagens. Apresenta propriedades reutilizáveis (caminho do modelo, dimensões de entrada, rótulos, parâmetros de pré/pós-processamento) e descreve o formato esperado de entrada/saída para facilitar integração e testes.

Uso (exemplo ilustrativo)

// Exemplo ilustrativo — adapte à API concreta do ExecuTorch no seu projeto.
final model = DetectionModel(modelPath: 'assets/models/detector.pt', inputSize: Size(640,640));
final results = await model.predict(image); // retornará lista de detecções

Classes fornecidas

  • DetectionModel

    • Propósito: detectar objetos em imagens e retornar bounding boxes, scores e rótulos.
    • Entrada: imagem (ex.: Uint8List, Image, ou outra representação suportada), dimensões de entrada (width × height) para redimensionamento/preproc.
    • Saída prevista: lista de detecções com {box: Rect, score: double, label: String, classId: int}.
    • Configurações típicas: threshold de confiança, NMS (non-maximum suppression), limite máximo de detecções, formato de coordenadas (normalizado ou pixels).
  • SegmentModel

    • Propósito: gerar máscaras de segmentação por objeto ou por classe para uma imagem.
    • Saída prevista: máscaras binárias ou mapas de probabilidade (por-pixel), opcionalmente associadas a rótulos e scores; formatos retornados podem incluir arrays de floats, bitmaps ou imagens RGBA conforme configuração.
    • Observações: cuidado com alinhamento entre máscara e imagem original (resize / pad).
  • ClassifyModel

    • Propósito: classificar imagens e retornar uma lista ordenada de rótulos com scores.
    • Saída prevista: lista de {label: String, score: double, classId: int}, tipicamente ordenada por probabilidade decrescente.
    • Observações: suporte a top-k, normalização de scores (softmax) e transformação de entrada.

Propriedades comuns e contratos

  • modelPath: caminho para o arquivo do modelo (assets, pacote, caminho absoluto).
  • inputSize: dimensões (width, height) esperadas pelo modelo; o loader deve aplicar redimensionamento e, se necessário, padding para manter razão de aspecto.
  • labelsPath: arquivo de rótulos (um por linha). Se ausente, as classes ficam indexadas por inteiro.
  • normalization (mean / std): parâmetros para normalizar pixels antes da inferência.
  • batchSize: quando suportado pelo backend, permita inferência em lote.
  • Formatos de modelo: dependem do backend ExecuTorch utilizado (p. ex. TorchScript, ONNX, TFLite).

Comportamento, erros e garantias

  • Validação: carregadores devem lançar exceções claras para erros como arquivo não encontrado, formato inválido ou incompatibilidade de dimensão.
  • Performance: carregamento de modelo é custoso — reutilize instâncias carregadas e evite recarregar em loop; ofereça inicialização assíncrona (async) no app.
  • Thread-safety: documente se instâncias são seguras para uso concorrente; caso contrário, exponha factories/locks para gerenciar acesso.
  • Precisão dos resultados: resultados pós-processados (NMS, threshold, mapeamento de rótulos) devem ser reproduzíveis e configuráveis via parâmetros públicos.

Boas práticas recomendadas

  • Documente explicitamente formatos de entrada (RGB vs BGR, ordem de canais, range 0..1 vs 0..255).
  • Forneça utilitários de pré/processamento reutilizáveis (resize + pad + normalize).
  • Exponha parâmetros de pós-processamento (NMS, score threshold, top-k) na API pública.
  • Inclua exemplos e testes de inferência com modelos toy para garantir compatibilidade entre versões.

Exemplo de contrato de saída (detecção)

/// Representação de uma detecção retornada por DetectionModel
class Detection {
  final Rect box;       // Caixa em coordenadas da imagem original
  final double score;   // Confiança (0.0 - 1.0)
  final String label;   // Rótulo legível
  final int classId;    // ID numérico da classe
}

Observações finais

  • Documente no README do pacote procedimentos de conversão de modelos, formatos suportados, e exemplos completos de pré/pós-processamento aplicáveis ao pipeline ExecuTorch.
  • Sempre forneça testes de integração que executem inferência end-to-end com pequenos modelos para detectar regressões de I/O, dimensionamento e mapeamento de rótulos. Biblioteca para carregar e gerenciar modelos de visão computacional usando ExecuTorch. Define classes para modelos de detecção, segmentação e classificação. Propriedades comuns incluem caminho do modelo, dimensões de entrada e rótulos. Módulos Definidos:
    • DetectionModel: Classe para modelos de detecção de objetos.
    • SegmentModel: Classe para modelos de segmentação de imagens.
    • ClassifyModel: Classe para modelos de classificação de imagens.

Classes

ClassifyModel
////////// CLASSIFY
DetectionModel
SegmentModel
////////// SEG

Functions

loadLabels(String labelsPath) Future<List<String>>
loadModel(String modelPath) Future<ExecuTorchModel>