Image Labeling: qué es, métodos y cómo funciona

Autor: IT Sectr Publicado: 2026-07-19 Tiempo de lectura: 9 min

Image Labeling es una tarea de visión artificial en la que una red neuronal asigna etiquetas a una imagen a partir de un conjunto predefinido de clases: desde simples (gato, perro, coche) hasta específicas (especie de planta, modelo de teléfono inteligente, exploración médica). En el desarrollo móvil, Image Labeling se utiliza para el etiquetado automático de fotos en galerías, la moderación de contenido generado por usuarios, la búsqueda visual de productos por foto y las aplicaciones de RA. Según Google ML Kit, 2025, el clasificador integrado reconoce más de 400 categorías en 10–20 ms por fotograma con una precisión del 91% (top-1).

Puntos clave

  • Image Labeling — asignación de etiquetas a una imagen a partir de un conjunto predefinido de clases
  • ML Kit — más de 400 etiquetas integradas, 10–20 ms, 91% de precisión top-1
  • Core ML — clasificación nativa en iOS mediante Vision + modelos personalizados
  • Modelos personalizados — entrenamiento con TensorFlow, PyTorch, conversión a TFLite
  • On-device — todos los cálculos localmente, sin enviar datos al servidor

Qué es Image Labeling: conceptos básicos de clasificación

Image Labeling es un subtipo de clasificación de imágenes donde el modelo toma una imagen como entrada y devuelve probabilidades para cada clase del conjunto de entrenamiento. A diferencia de la detección de objetos, Image Labeling no determina la posición de los objetos en la imagen, solo su presencia o ausencia. A diferencia de la segmentación de imágenes, no delimita el contorno del objeto. Image Labeling responde a la pregunta “¿qué hay en la foto?”, no “¿dónde y qué hay en la foto?”.

Arquitectura del clasificador: un backbone CNN (MobileNet, ResNet, EfficientNet) extrae un mapa de características de la imagen, Global Average Pooling colapsa las dimensiones espaciales y una capa completamente conectada (Dense) con activación Softmax genera las probabilidades de clase. MobileNetV2 es el backbone más popular para dispositivos móviles: 3.5M de parámetros, inferencia de 0.5–2 ms en Pixel 6 mediante GPU. EfficientNet-Lite es una alternativa con mejor relación precisión/parámetros.

Precisión Top-1 vs Top-5: top-1 — el modelo predice correctamente la clase principal (91% en ML Kit); top-5 — la clase correcta está entre las cinco más probables (98% en ML Kit). Para aplicaciones en producción, use top-5 y muestre al usuario varias opciones de etiquetas. Para moderación de contenido, use top-1 con un umbral de confianza >= 0.8 (reduce la tasa de falsos positivos en un 40%).

ArquitecturaParámetrosLatenciaTop-1Tamaño
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 Nube: la clasificación en el dispositivo (ML Kit, Core ML) ofrece una latencia de 1–20 ms con total privacidad de datos. La API en la nube (Google Cloud Vision, AWS Rekognition) tiene una latencia de 500–2000 ms más costo por solicitud, pero es más precisa (97–99%) gracias a modelos más grandes (ViT, CLIP). Para aplicaciones en tiempo real (cámara, RA), elija la opción en el dispositivo. Para escenarios complejos (medicina, análisis de expertos), use la nube con respaldo en el dispositivo.

ML Kit Image Labeling en Android e iOS

ML Kit Image Labeling es una biblioteca lista para usar de Google para la clasificación de imágenes en el dispositivo. Está disponible en dos modos: en el dispositivo (gratuito, más de 400 etiquetas, 10–20 ms) y en la nube (de pago, más de 10 000 etiquetas, más de 500 ms). La versión en el dispositivo utiliza MobileNetV3 con cuantificación INT8 y ocupa 4 MB de espacio en disco. ML Kit detecta automáticamente la orientación de la imagen y optimiza el tamaño antes de la clasificación.

API de ML Kit: InputImage (desde Bitmap, media.Image, filePath) → ImageLabeler → OnSuccessListener con una lista de ImageLabel (etiqueta, confianza, índice). El umbral de confianza (predeterminado 0.5) es la confianza mínima para devolver una etiqueta. Elevar el umbral a 0.7 reduce la cantidad de etiquetas por fotograma, pero aumenta la precisión de cada una. Para la moderación de contenido, establezca el umbral en 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 en iOS: la API es similar a la de Android y utiliza UIImage o CMSampleBuffer. ML Kit utiliza automáticamente Core ML + ANE en dispositivos A12+. Para iOS 16+, ML Kit Image Labeling ofrece una latencia de 8–15 ms en iPhone 15 Pro. Para minimizar la latencia, pase la resolución de imagen más pequeña posible (224x224 para MobileNet); ML Kit la escala automáticamente, pero convertir imágenes grandes añade una sobrecarga de 2–5 ms.

Core ML y Vision Framework en iOS

Core ML es el framework de Apple para ejecutar modelos de ML en el dispositivo. Combinado con Vision Framework (VNCoreMLRequest), Core ML permite la clasificación de imágenes con un código mínimo. Apple proporciona modelos integrados: SqueezeNet (5 MB, 80.5% top-1), ResNet50 (98 MB, 95.2%), MobileNetV2 (14 MB, 90.2%). Los modelos en formato .mlmodel o .mlpackage se convierten mediante coremltools desde TensorFlow o PyTorch.

VNCoreMLRequest es una API de Vision que se encarga del preprocesamiento de imágenes (escalado, crop-to-fill, conversión de espacio de color) y pasa el resultado al modelo. Vision devuelve VNClassificationObservation con identifier (nombre de la clase) y confidence (0..1). MaxCandidates es el número máximo de etiquetas devueltas (predeterminado 1). Para clasificación con selección automática, use VNCoreMLRequest con 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("Etiqueta: \(obs.identifier), Confianza: \(obs.confidence)")
    }
}
request.imageCropAndScaleOption = .centerCrop

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

Core ML vs ML Kit en iOS: Core ML es nativo, no requiere SDK adicionales y está mejor optimizado para ANE (Neural Engine de Apple). ML Kit es más preciso en escenas complejas gracias a los modelos de Google. Core ML admite cualquier modelo (convertido mediante coremltools), mientras que ML Kit solo admite los suyos. Para una implementación rápida, use ML Kit. Para un control máximo del modelo, use Core ML. Un enfoque práctico: use ambos frameworks en una misma aplicación — ML Kit para etiquetas estándar, Core ML para las personalizadas.

Entrenamiento e integración de modelos personalizados

Modelos personalizados de Image Labeling: entrenar su propio clasificador para una tarea específica: reconocer la calidad de la fruta, detectar defectos en una línea de producción, clasificar razas de perros. El proceso incluye la recopilación de un conjunto de datos (más de 1000 imágenes por clase), anotación, entrenamiento mediante transfer learning en una MobileNetV2 o EfficientNet preentrenada, y conversión a TFLite / Core ML.

Transfer Learning es el método principal para entrenar clasificadores móviles. Se toma un modelo preentrenado en ImageNet, se congelan las capas inferiores (backbone CNN) y se reentrenan las capas superiores (fine-tuning). Esto requiere solo 100–500 imágenes por clase y toma de 1 a 2 horas en Google Colab (GPU). Bibliotecas: TensorFlow Keras (Android), PyTorch + coremltools (iOS). Resultado: 95–98% de precisión en las clases objetivo.

kotlin
// Inferencia 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 es una alternativa: no es necesario escribir código para TFLite Interpreter — ML Kit carga el modelo y maneja el preprocesamiento automáticamente. El Image Labeler personalizado acepta un modelo TFLite con tamaño de entrada 224x224x3 y salida score float[NUM_CLASSES]. Simplemente proporcione el archivo del modelo y obtenga etiquetas estándar. Se recomienda ML Kit Custom Model API si el modelo coincide con el formato TFLite. Si necesita un control más preciso sobre la inferencia (umbrales por clase), use el TFLite Interpreter directamente.

TFLite y Core ML: comparación de formatos

TFLite (TensorFlow Lite) es el formato de modelos de Google para dispositivos móviles y perimetrales. Admite cuantificación (FP16, INT8), que reduce el tamaño del modelo 4 veces y aumenta la velocidad 2–3 veces con una ligera pérdida de precisión (1–2%). TFLite funciona en Android mediante GPU Delegate (OpenGL/OpenCL) y en iOS mediante Core ML Delegate. TFLite Task API proporciona una interfaz unificada para Image Classifier, Object Detector y otras tareas.

Core ML es el formato de Apple (.mlpackage — nuevo, .mlmodel — heredado). Admite cuantificación (FP16) y paletización de pesos (hasta 1/2/4/6/8 bits), logrando hasta un 80% de compresión del modelo. Core ML utiliza ANE (Neural Engine), GPU y CPU — el sistema selecciona automáticamente el motor óptimo. Conversión desde PyTorch mediante torch.onnx.export + coremltools, desde TensorFlow mediante tf-keras + coremltools. iOS 18+ admite entrenamiento en el dispositivo a través de Core ML Training API.

CaracterísticaTFLiteCore ML
Tamaño (MobileNetV2)14 MB (FP32) / 3.5 MB (INT8)14 MB (FP16) / 2.8 MB (4-bit)
Motor de inferenciaGPU / NNAPI / XNNPACKANE / GPU / CPU (auto)
CuantificaciónFP16, INT8, DynamicRangeFP16, Paletización (1-8 bit)
Rendimiento iOSCore ML Delegate (2–5 ms)ANE nativo (1–3 ms)
HerramientasTFLite Model Maker, Task APIcoremltools, Create ML

ONNX como formato intermedio: convierta modelos a ONNX (PyTorch → ONNX, TensorFlow → ONNX) y luego a TFLite / Core ML mediante onnx2tf o onnx2coreml. ONNX es un formato unificado compatible con más de 70 frameworks. Esto simplifica el pipeline: un modelo entrenado → ONNX → formatos nativos para ambas plataformas. El entrenamiento en PyTorch + conversión a ONNX → TFLite (Android) / Core ML (iOS) es el pipeline recomendado para proyectos multiplataforma.

Aplicaciones de Image Labeling en apps móviles

Etiquetado automático de fotos — las aplicaciones de galería (Google Fotos, Apple Photos) asignan automáticamente etiquetas a las imágenes: “playa”, “ataúd”, “perro”, “comida”. ML Kit Image Labeling procesa cada foto de la galería en segundo plano: 1–2 segundos para 100 fotos (lote). Los usuarios pueden buscar por etiquetas sin ordenación manual. Google Fotos utiliza clasificación en el dispositivo con verificación posterior en el servidor para escenas complejas.

Moderación de contenido — detección automática de imágenes inapropiadas en contenido generado por usuarios (redes sociales, marketplaces, plataformas UGC). ML Kit Custom Model detecta contenido NSFW, violencia y propaganda con una precisión del 92–96%. El umbral de activación es confianza 0.8. Para reducir falsos positivos (imágenes médicas legítimas), use un comité de clasificadores: Image Labeling + Object Detection + Blur Detection. La moderación en el dispositivo es más rápida y protege la privacidad del usuario.

Búsqueda visual de productos — un usuario fotografía un producto (zapatillas, bolso, mueble), la aplicación determina la etiqueta y encuentra productos similares en el catálogo. Image Labeling reduce la búsqueda a una categoría, luego los descriptores de características (vectores de características) encuentran elementos visualmente similares. Pinterest Lens, Google Lens y Amazon StyleSnap utilizan este enfoque. La clasificación en el dispositivo ofrece resultados en 10–30 ms, la búsqueda en la nube en 200–500 ms.

swift
// Image Labeling con Core ML para búsqueda 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)
        }
    }
}

Aplicaciones de RA y educativas — Image Labeling clasifica objetos en tiempo real a través de la cámara. Un usuario apunta su teléfono a una planta — la aplicación muestra el nombre, los cuidados y el riego. Apunta a una pieza mecánica — explica su función. Requisito: latencia inferior a 30 ms. EfficientNet-Lite en dispositivos emblemáticos ofrece 15–25 ms. Con poca luz, la precisión disminuye — use un umbral de confianza adaptativo (reduzca el umbral en condiciones de poca luz para compensar la calidad degradada de la entrada).

Preguntas frecuentes

¿En qué se diferencia Image Labeling de Object Detection?

Image Labeling determina qué objetos están presentes en una imagen, pero no indica su ubicación. Object Detection encuentra objetos y devuelve cuadros delimitadores para cada uno. Image Labeling es más rápido (1–20 ms frente a 20–100 ms), requiere menos datos de entrenamiento, pero no proporciona información posicional. Para clasificación simple (gato/perro), use Image Labeling. Para reconocimiento dirigido (cuántos objetos, dónde están), use Object Detection.

¿Se necesita conexión a internet para Image Labeling en el dispositivo?

No, ML Kit Image Labeling funciona completamente en el dispositivo. El modelo se descarga en el primer inicio (modo descargado — 4 MB) y se almacena localmente. Los modelos de Core ML se incluyen con la aplicación. Los modelos personalizados TFLite son parte del APK. Todos los cálculos se ejecutan en el dispositivo y no se envían datos al servidor. Esto garantiza la privacidad del usuario y la funcionalidad sin conexión. La clasificación en la nube (Google Cloud Vision) es una alternativa que requiere internet y ofrece mayor precisión.

¿Cuántas imágenes se necesitan para entrenar un modelo personalizado?

Para transfer learning en MobileNetV2: mínimo 50–100 imágenes por clase, óptimamente 300–500. Cuanta más variedad (ángulos, iluminación, fondo), mayor precisión. Para entrenamiento desde cero (sin modelo preentrenado), se requiere un mínimo de 1000 imágenes por clase. Recomendación: comience con 200 imágenes por clase, evalúe la precisión y añada datos para clases de baja precisión. La aumentación de datos (rotaciones, escalado, desplazamientos) aumenta el conjunto de datos efectivo de 3 a 5 veces sin recopilar nuevos datos.

¿Cómo reducir el tamaño de un modelo TFLite para Image Labeling?

Los métodos principales: cuantificación INT8 posterior al entrenamiento reduce el tamaño 4 veces con una pérdida de precisión del 1–2%; poda (eliminación de pesos insignificantes) logra hasta un 50% de compresión; destilación (un modelo estudiante más pequeño entrenado con las salidas de un modelo profesor más grande) logra hasta un 80% de compresión. MobileNetV2 INT8 ocupa 3.5 MB, SqueezeNet — 5 MB. El tamaño objetivo no debe superar los 10 MB para una carga instantánea sin indicador de progreso.

¿Cuál es la precisión de ML Kit Image Labeling v2?

ML Kit Image Labeling v2 alcanza un 91% de precisión top-1 en el conjunto de pruebas de Google (más de 400 clases). La precisión top-5 es del 98%. En ángulos no estándar y condiciones de iluminación, la precisión puede caer al 75–85%. Para producción, se recomienda usar un umbral de confianza de 0.7 para un filtrado estable de predicciones de baja calidad. Si la precisión es insuficiente, use un modelo personalizado entrenado en un conjunto de datos específico: 95–98% de precisión en las clases objetivo.

Resumen

  • Image Labeling — clasificación de imágenes que asigna etiquetas de un conjunto fijo
  • ML Kit Image Labeling — más de 400 etiquetas, 10–20 ms de latencia, 91% de precisión en el dispositivo
  • Core ML + Vision — enfoque nativo de iOS con aceleración ANE y modelos personalizados
  • Transfer Learning — 100–500 imágenes por clase, 1–2 horas de entrenamiento en Google Colab
  • TFLite / Core ML — dos formatos principales con cuantificación para reducir el tamaño
  • On-device — privacidad, latencia cero, sin necesidad de internet
  • Aplicaciones — etiquetado de fotos, moderación de contenido, RA, búsqueda visual de productos

Desarrollaremos una aplicación móvil llave en mano

IT Sectr crea aplicaciones para iOS y Android para startups y empresas desde 2017. Le asesoraremos y le propondremos la mejor solución.

Discutir el proyecto

Lea también