TFLite Vision
Biblioteca Flutter/Dart para orquestrar modelos TFLite de segmentação e classificação, com utilitários para pré-processamento, carregamento de modelos, execução de inferência e helpers para uso em apps Flutter.
Importante: Este pacote espera que o usuário (app consumidor) forneça os arquivos de modelo (.tflite) e labels (.txt) nos assets do próprio app. O pacote não inclui modelos/labels por padrão.
Principais recursos:
- Carregamento e execução de modelos TFLite (segmentação e/ou classificação)
- Pré-processamento de imagens (redimensionamento, normalização, conversão para tensores)
- Helpers para manipulação de resultados e assets
- Pipeline completo via
AppState(segmentação + classificação em sequência)
Dica: Os arquivos de modelo e labels devem estar declarados na seção
assets:dopubspec.yamldo app consumidor.
Como fornecer os modelos e labels
Você deve adicionar os arquivos .tflite e .txt (labels) nos assets do seu app Flutter. Exemplo de estrutura:
assets/
segment_float16.tflite
classify_float16.tflite
segment_labels.txt
classify_labels.txt
No seu pubspec.yaml:
flutter:
assets:
- assets/segment_float16.tflite
- assets/classify_float16.tflite
- assets/segment_labels.txt
- assets/classify_labels.txt
Para carregar um asset no seu app:
import 'dart:typed_data';
import 'package:flutter/services.dart' show rootBundle;
final data = await rootBundle.load('assets/segment_float16.tflite');
final bytes = data.buffer.asUint8List();
// use 'bytes' para carregar o modelo em tflite_flutter
1. Classificação isolada
import 'package:tflite_vision/tflite_vision.dart';
import 'package:flutter/services.dart' show rootBundle;
// Carregar modelo e labels do assets do app
final classifyModel = await TFLiteClassifyModel.loadModel(
modelPath: 'assets/classify_float16.tflite',
labelsPath: 'assets/classify_labels.txt',
);
// Carregar imagem (exemplo: asset)
final imageBytes = (await rootBundle.load('assets/test_image.jpg')).buffer.asUint8List();
// Pré-processar imagem
final inputTensor = await PreProcessing.imageToTensor(
imageBytes,
classifyModel.inputShape[2],
classifyModel.inputShape[1],
);
// Executar inferência
final result = await classifyModel.predict(inputTensor, imageBytes);
print('Classe: \\${result.label}, confiança: \\${result.confidence}');
2. Segmentação isolada
import 'package:tflite_vision/tflite_vision.dart';
import 'package:flutter/services.dart' show rootBundle;
final segmentModel = await TFLiteSegmentModel.loadModel(
modelPath: 'assets/segment_float16.tflite',
labelsPath: 'assets/segment_labels.txt',
);
final imageBytes = (await rootBundle.load('assets/test_image.jpg')).buffer.asUint8List();
final inputTensor = await PreProcessing.imageToTensor(
imageBytes,
segmentModel.inputShape[2],
segmentModel.inputShape[1],
);
final result = await segmentModel.predict(inputTensor, imageBytes);
print('Segmentação: \\${result.label}, máscara: \\${result.mask?.length} bytes');
3. Pipeline completo com AppState (segmentação + classificação)
import 'package:tflite_vision/tflite_vision.dart';
import 'package:flutter/services.dart' show rootBundle;
final appState = AppState(
segmentModelPath: 'assets/segment_float16.tflite',
segmentLabelsPath: 'assets/segment_labels.txt',
classifyModelPath: 'assets/classify_float16.tflite',
classifyLabelsPath: 'assets/classify_labels.txt',
);
final imageBytes = (await rootBundle.load('assets/test_image.jpg')).buffer.asUint8List();
await appState.selectImage(imageBytes);
await appState.runInference();
final segmentation = appState.segmentationResult;
final classification = appState.classificationResult;
final processed = appState.processedImage;
print('Segmentação: \\${segmentation?.label}');
print('Classificação: \\${classification?.label} (confiança: \\${classification?.confidence})');
Nota: Os exemplos assumem que os assets de modelo/labels estão corretamente declarados no
pubspec.yamldo app consumidor. Ajuste os paths conforme necessário.
Libraries
- core/app_state
- Gerencia o estado da aplicação, incluindo o carregamento dos modelos, a seleção de imagens e a execução da inferência.
- core/base
- Biblioteca de Base para o pacote
tflite_vision. Contém A classe TFLiteModel usada para modelos de segmentação e classificação TFLite. Classes: - core/models
- Biblioteca de modelos para o pacote
tflite_vision. Contém classes para modelos de segmentação e classificação TFLite. Classes: - core/pre_processing
- Biblioteca de pré-processamento de imagens para o pacote
tflite_vision. Contém utilitários para conversão entre bytes/ui.Image e tensores, redimensionamento, normalização e codificação de imagens. - core/results
- Biblioteca para definir classes de resultados de inferência de modelos. Contém classes para representar resultados de classificação e segmentação.
- core/utils
- Biblioteca de utilitários para operações relacionadas à segmentação de imagens. Contém funções para processar detecções, construir máscaras binárias e aplicar máscaras a imagens.
- tflite_vision
- lib/tflite_vision.dart
Biblioteca principal para o pacote
tflite_vision. Reexporta módulos centrais para fácil acesso.