Image Labeling: o que é, métodos e como funciona

Autor: IT Sectr Publicado: 2026-07-19 Tempo de leitura: 9 min

Image Labeling é uma tarefa de visão computacional onde uma rede neural atribui rótulos a uma imagem a partir de um conjunto predefinido de classes: desde simples (gato, cachorro, carro) até específicas (espécie de planta, modelo de smartphone, exame médico). No desenvolvimento mobile, o Image Labeling é usado para marcação automática de fotos em galerias, moderação de conteúdo gerado pelo usuário, busca visual de produtos por foto e aplicativos de RA. De acordo com Google ML Kit, 2025, o classificador embutido reconhece mais de 400 categorias em 10–20 ms por quadro com 91% de precisão (top-1).

Pontos principais

  • Image Labeling — atribuição de rótulos a uma imagem a partir de um conjunto predefinido de classes
  • ML Kit — mais de 400 rótulos integrados, 10–20 ms, 91% de precisão top-1
  • Core ML — classificação nativa no iOS via Vision + modelos personalizados
  • Modelos personalizados — treinamento via TensorFlow, PyTorch, conversão para TFLite
  • On-device — todos os cálculos localmente, sem enviar dados ao servidor

O que é Image Labeling: fundamentos da classificação

Image Labeling é um subtipo de classificação de imagens onde o modelo recebe uma imagem como entrada e retorna probabilidades para cada classe do conjunto de treinamento. Ao contrário da detecção de objetos, o Image Labeling não determina a posição dos objetos na imagem — apenas sua presença ou ausência. Ao contrário da segmentação de imagem, não delineia o contorno do objeto. O Image Labeling responde à pergunta “o que está na foto?”, não “onde e o que está na foto?”

Arquitetura do classificador: uma backbone CNN (MobileNet, ResNet, EfficientNet) extrai um mapa de características da imagem, o Global Average Pooling colapsa as dimensões espaciais, e uma camada totalmente conectada (Dense) com ativação Softmax gera as probabilidades das classes. MobileNetV2 é a backbone mais popular para dispositivos móveis: 3,5M parâmetros, inferência de 0,5–2 ms no Pixel 6 via GPU. EfficientNet-Lite é uma alternativa com melhor relação precisão/parâmetros.

Precisão Top-1 vs Top-5: top-1 — o modelo prevê corretamente a classe principal (91% no ML Kit); top-5 — a classe correta está entre as cinco mais prováveis (98% no ML Kit). Para aplicações em produção, use top-5 e mostre ao usuário várias opções de rótulos. Para moderação de conteúdo, use top-1 com um limite de confiança >= 0,8 (reduz a taxa de falsos positivos em 40%).

ArquiteturaParâmetrosLatênciaTop-1Tamanho
MobileNetV23,5M0,5–2 ms90,2%14 MB
MobileNetV32,5M0,3–1,5 ms91,5%10 MB
EfficientNet-Lite04,7M1–3 ms92,3%18 MB
ResNet-5025,6M10–30 ms95,2%98 MB

On-device vs Nuvem: a classificação no dispositivo (ML Kit, Core ML) oferece latência de 1–20 ms com privacidade total dos dados. A API na nuvem (Google Cloud Vision, AWS Rekognition) tem latência de 500–2000 ms mais custo por solicitação, mas é mais precisa (97–99%) graças a modelos maiores (ViT, CLIP). Para aplicações em tempo real (câmera, RA), escolha a opção no dispositivo. Para cenários complexos (medicina, análise especializada), use a nuvem com fallback no dispositivo.

ML Kit Image Labeling no Android e iOS

ML Kit Image Labeling é uma biblioteca pronta do Google para classificação de imagens no dispositivo. Disponível em dois modos: no dispositivo (gratuito, mais de 400 rótulos, 10–20 ms) e na nuvem (pago, mais de 10.000 rótulos, mais de 500 ms). A versão no dispositivo usa MobileNetV3 com quantização INT8, ocupando 4 MB de espaço em disco. O ML Kit detecta automaticamente a orientação da imagem e otimiza o tamanho antes da classificação.

API do ML Kit: InputImage (de Bitmap, media.Image, filePath) → ImageLabeler → OnSuccessListener com uma lista de ImageLabel (rótulo, confiança, índice). O limite de confiança (padrão 0,5) é a confiança mínima para retornar um rótulo. Aumentar o limite para 0,7 reduz o número de rótulos por quadro, mas aumenta a precisão de cada um. Para moderação de conteúdo, defina o limite como 0,8.

kotlin
val labeler = ImageLabeling.getClient(
    ImageLabelerOptions.DEFAULT_OPTIONS
)

labeler.process(inputImage)
    .addOnSuccessListener { labels ->
        labels
            .filter { it.confidence >= 0.7f }
            .forEach { label ->
                log("Label: ${label.label}")
                log("Confidence: ${label.confidence}")
            }
    }
    .addOnFailureListener { error -> handleError(error) }

ML Kit no iOS: a API é semelhante ao Android, usando UIImage ou CMSampleBuffer. O ML Kit usa automaticamente Core ML + ANE em dispositivos A12+. Para iOS 16+, o ML Kit Image Labeling oferece latência de 8–15 ms no iPhone 15 Pro. Para minimizar a latência, passe a menor resolução de imagem possível (224x224 para MobileNet) — o ML Kit a redimensiona automaticamente, mas converter imagens grandes adiciona 2–5 ms de overhead.

Core ML e Vision Framework no iOS

Core ML é o framework da Apple para executar modelos de ML no dispositivo. Combinado com o Vision Framework (VNCoreMLRequest), o Core ML permite a classificação de imagens com o mínimo de código. A Apple fornece modelos integrados: SqueezeNet (5 MB, 80,5% top-1), ResNet50 (98 MB, 95,2%), MobileNetV2 (14 MB, 90,2%). Modelos no formato .mlmodel ou .mlpackage são convertidos via coremltools a partir do TensorFlow ou PyTorch.

VNCoreMLRequest é uma API do Vision que cuida do pré-processamento da imagem (redimensionamento, crop-to-fill, conversão de espaço de cor) e passa o resultado para o modelo. O Vision retorna VNClassificationObservation com identifier (nome da classe) e confidence (0..1). MaxCandidates é o número máximo de rótulos retornados (padrão 1). Para classificação com seleção automática, use VNCoreMLRequest com imageCropAndScaleOption = .centerCrop.

swift
guard let model = try? VNCoreMLModel(for: MobileNetV2().model) else { return }
let request = VNCoreMLRequest(model: model) { request, _ in
    guard let results = request.results as? [VNClassificationObservation] else { return }
    results.prefix(5).forEach { obs in
        print("Rótulo: \(obs.identifier), Confiança: \(obs.confidence)")
    }
}
request.imageCropAndScaleOption = .centerCrop

let handler = VNImageRequestHandler(cgImage: cgImage, options: [:])
try handler.perform([request])

Core ML vs ML Kit no iOS: Core ML é nativo, não requer SDKs adicionais e é melhor otimizado para ANE (Neural Engine da Apple). ML Kit é mais preciso em cenas complexas graças aos modelos do Google. Core ML suporta qualquer modelo (convertido via coremltools), enquanto ML Kit suporta apenas os seus. Para implementação rápida, use ML Kit. Para máximo controle sobre o modelo, use Core ML. Uma abordagem prática: use ambos os frameworks em um único aplicativo — ML Kit para rótulos padrão, Core ML para personalizados.

Treinamento e integração de modelos personalizados

Modelos personalizados de Image Labeling — treinar seu próprio classificador para uma tarefa específica: reconhecer qualidade de frutas, detectar defeitos em uma linha de produção, classificar raças de cães. O processo inclui coleta de dataset (mais de 1000 imagens por classe), anotação, treinamento via transfer learning em uma MobileNetV2 ou EfficientNet pré-treinada, e conversão para TFLite / Core ML.

Transfer Learning — o método principal para treinar classificadores móveis. Pega-se um modelo pré-treinado no ImageNet, congelam-se as camadas inferiores (backbone CNN) e retreinam-se as camadas superiores (fine-tuning). Isso requer apenas 100–500 imagens por classe e leva de 1 a 2 horas no Google Colab (GPU). Bibliotecas: TensorFlow Keras (Android), PyTorch + coremltools (iOS). Resultado: 95–98% de precisão nas classes alvo.

kotlin
// Inferência de modelo personalizado TFLite
val interpreter = Interpreter(loadModelFile(context))
val inputImage = TensorImage.fromBitmap(bitmap)
    .apply { load(Bitmap.createScaledBitmap(bitmap, 224, 224, true)) }

val output = Array(1) { FloatArray(NUM_CLASSES) }
interpreter.run(inputImage.tensorBuffer, output)

val probabilities = TensorLabel.mapIndexToLabels(output[0])
val topClass = probabilities.maxByOrNull { it.value }

ML Kit Custom Model API — uma alternativa: não é necessário escrever código para TFLite Interpreter — o ML Kit carrega o modelo e lida com o pré-processamento automaticamente. O Image Labeler personalizado aceita um modelo TFLite com tamanho de entrada 224x224x3 e saída score float[NUM_CLASSES]. Basta fornecer o arquivo do modelo e obter rótulos padrão. O ML Kit Custom Model API é recomendado se o modelo corresponder ao formato TFLite. Se for necessário um controle mais preciso sobre a inferência (limiares por classe), use o TFLite Interpreter diretamente.

TFLite e Core ML: comparação de formatos

TFLite (TensorFlow Lite) é o formato de modelos do Google para dispositivos móveis e de borda. Suporta quantização (FP16, INT8), que reduz o tamanho do modelo em 4x e aumenta a velocidade em 2–3x com uma pequena perda de precisão (1–2%). O TFLite funciona no Android via GPU Delegate (OpenGL/OpenCL) e no iOS via Core ML Delegate. A TFLite Task API fornece uma interface unificada para Image Classifier, Object Detector e outras tarefas.

Core ML é o formato da Apple (.mlpackage — novo, .mlmodel — legado). Suporta quantização (FP16) e paletização de pesos (até 1/2/4/6/8 bits), alcançando até 80% de compressão do modelo. O Core ML usa ANE (Neural Engine), GPU e CPU — o sistema seleciona automaticamente o motor ideal. Conversão do PyTorch via torch.onnx.export + coremltools, do TensorFlow via tf-keras + coremltools. O iOS 18+ suporta treinamento no dispositivo via Core ML Training API.

CaracterísticaTFLiteCore ML
Tamanho (MobileNetV2)14 MB (FP32) / 3,5 MB (INT8)14 MB (FP16) / 2,8 MB (4-bit)
Motor de inferênciaGPU / NNAPI / XNNPACKANE / GPU / CPU (auto)
QuantizaçãoFP16, INT8, DynamicRangeFP16, Paletização (1-8 bit)
Desempenho no iOSCore ML Delegate (2–5 ms)ANE nativo (1–3 ms)
FerramentasTFLite Model Maker, Task APIcoremltools, Create ML

ONNX como formato intermediário: converta modelos para ONNX (PyTorch → ONNX, TensorFlow → ONNX) e depois para TFLite / Core ML via onnx2tf ou onnx2coreml. ONNX é um formato unificado suportado por mais de 70 frameworks. Isso simplifica o pipeline: um modelo treinado → ONNX → formatos nativos para ambas as plataformas. Treinamento em PyTorch + conversão para ONNX → TFLite (Android) / Core ML (iOS) é o pipeline recomendado para projetos multiplataforma.

Aplicações do Image Labeling em apps mobile

Marcação automática de fotos — aplicativos de galeria (Google Fotos, Apple Photos) atribuem automaticamente rótulos às imagens: “praia”, “pôr do sol”, “cachorro”, “comida”. O ML Kit Image Labeling processa cada foto da galeria em segundo plano — 1–2 segundos para 100 fotos (lote). O usuário obtém pesquisa por rótulos sem classificação manual. O Google Fotos usa classificação no dispositivo com verificação posterior no servidor para cenas complexas.

Moderação de conteúdo — detecção automática de imagens indesejadas em conteúdo gerado pelo usuário (redes sociais, marketplaces, plataformas UGC). O ML Kit Custom Model detecta conteúdo NSFW, violência e propaganda com 92–96% de precisão. O limite de acionamento é confiança 0,8. Para reduzir falsos positivos (imagens médicas legítimas), use um comitê de classificadores: Image Labeling + Object Detection + Blur Detection. A moderação no dispositivo é mais rápida e protege a privacidade do usuário.

Busca visual de produtos — um usuário fotografa um produto (tênis, bolsa, móvel), o aplicativo determina o rótulo e encontra produtos similares no catálogo. O Image Labeling reduz a busca a uma categoria, então descritores de características (vetores de características) encontram itens visualmente semelhantes. Pinterest Lens, Google Lens e Amazon StyleSnap usam essa abordagem. A classificação no dispositivo oferece resultados em 10–30 ms, a busca na nuvem em 200–500 ms.

swift
// Image Labeling com Core ML para busca visual
let request = VNCoreMLRequest(model: productClassifier) { req, _ in
    guard let result = req.results?.first as? VNClassificationObservation,
          result.confidence > 0.6 else { return }
    SearchService.findSimilarProducts(
        category: result.identifier,
        image: capturedPhoto,
        limit: 10
    ) { products in
        DispatchQueue.main.async {
            self.showResults(products)
        }
    }
}

Aplicativos de RA e educacionais — o Image Labeling classifica objetos em tempo real através da câmera. Um usuário aponta o telefone para uma planta — o aplicativo mostra o nome, cuidados e rega. Aponta para uma peça mecânica — explica sua função. Requisito: latência inferior a 30 ms. O EfficientNet-Lite em dispositivos flagship oferece 15–25 ms. Com pouca luz, a precisão diminui — use um limite de confiança adaptativo (reduza o limite em condições de baixa iluminação para compensar a qualidade degradada da entrada).

Perguntas frequentes

Como o Image Labeling difere do Object Detection?

Image Labeling determina quais objetos estão presentes em uma imagem, mas não indica sua localização. Object Detection encontra objetos e retorna caixas delimitadoras para cada um. Image Labeling é mais rápido (1–20 ms vs 20–100 ms), requer menos dados de treinamento, mas não fornece informações posicionais. Para classificação simples (gato/cachorro), use Image Labeling. Para reconhecimento direcionado (quantos objetos, onde estão), use Object Detection.

É necessária conexão com a internet para Image Labeling no dispositivo?

Não, o ML Kit Image Labeling funciona completamente no dispositivo. O modelo é baixado na primeira inicialização (modo baixado — 4 MB) e armazenado localmente. Os modelos Core ML são incluídos com o aplicativo. O modelo personalizado TFLite faz parte do APK. Todos os cálculos são executados no dispositivo e nenhum dado é enviado ao servidor. Isso garante a privacidade do usuário e a funcionalidade offline. A classificação na nuvem (Google Cloud Vision) é uma alternativa que requer internet e oferece maior precisão.

Quantas imagens são necessárias para treinar um modelo personalizado?

Para transfer learning no MobileNetV2: mínimo 50–100 imagens por classe, idealmente 300–500. Quanto mais variedade (ângulos, iluminação, fundo), maior a precisão. Para treinamento do zero (sem modelo pré-treinado), são necessárias no mínimo 1000 imagens por classe. Recomendação: comece com 200 imagens por classe, avalie a precisão e adicione dados para classes de baixa precisão. Aumento de dados (rotações, redimensionamento, deslocamentos) aumenta o conjunto de dados efetivo em 3–5x sem coletar novos dados.

Como reduzir o tamanho de um modelo TFLite para Image Labeling?

Os principais métodos: quantização INT8 pós-treinamento — reduz o tamanho em 4x com perda de 1–2% de precisão; poda (remoção de pesos insignificantes) — até 50% de compressão; destilação (um modelo aluno menor treinado nas saídas de um modelo professor maior) — até 80% de compressão. MobileNetV2 INT8 ocupa 3,5 MB, SqueezeNet — 5 MB. O tamanho alvo não deve exceder 10 MB para carregamento instantâneo sem indicador de progresso.

Qual é a precisão do ML Kit Image Labeling v2?

O ML Kit Image Labeling v2 atinge 91% de precisão top-1 no conjunto de teste do Google (mais de 400 classes). A precisão top-5 é de 98%. Em ângulos não padrão e condições de iluminação, a precisão pode cair para 75–85%. Para produção, recomenda-se usar um limite de confiança de 0,7 para filtragem estável de previsões de baixa qualidade. Se a precisão for insuficiente, use um modelo personalizado treinado em um conjunto de dados específico: 95–98% de precisão nas classes alvo.

Resumo

  • Image Labeling — classificação de imagens atribuindo rótulos de um conjunto fixo
  • ML Kit Image Labeling — mais de 400 rótulos, 10–20 ms de latência, 91% de precisão no dispositivo
  • Core ML + Vision — abordagem nativa do iOS com aceleração ANE e modelos personalizados
  • Transfer Learning — 100–500 imagens por classe, 1–2 horas de treinamento no Google Colab
  • TFLite / Core ML — dois formatos principais com quantização para redução de tamanho
  • On-device — privacidade, latência zero, sem necessidade de internet
  • Aplicações — marcação de fotos, moderação de conteúdo, RA, busca visual de produtos

Vamos desenvolver um aplicativo móvel chave na mão

A IT Sectr cria aplicativos para iOS e Android para startups e empresas desde 2017. Nós vamos aconselhá-lo e propor a melhor solução.

Discutir o projeto

Leia também