Visibilidad IA

¿Qué es la Segmentación de Instancias? Mask R-CNN, RoIAlign, máscaras de objetos y ejemplos con Python

La Segmentación de Instancias (Instance Segmentation) es una tarea de inteligencia artificial y visión por computadora que consiste en localizar cada objeto individual de una imagen y producir una máscara que delimite los píxeles visibles correspondientes a ese objeto.

Combina dos capacidades fundamentales: la detección de objetos, que identifica categorías y localizaciones, y la segmentación, que permite describir las regiones ocupadas por los objetos con mayor detalle que una caja delimitadora.

Supongamos que una imagen contiene cinco botellas sobre una mesa.

Un sistema de clasificación de imágenes puede responder:

«La imagen contiene botellas».

Un detector de objetos puede localizar cinco botellas mediante cinco cajas delimitadoras.

Un sistema de segmentación semántica puede identificar todos los píxeles pertenecientes a la categoría botella.

Un modelo de segmentación de instancias puede generar cinco máscaras independientes, una por botella.

Esta diferencia es especialmente importante cuando necesitamos contar objetos, medir su superficie visible, separarlos de otros elementos o procesar cada instancia por separado.

La segmentación de instancias tiene numerosas aplicaciones:

  • Reconocimiento y conteo de productos.
  • Inspección industrial.
  • Robótica.
  • Análisis de fotografías comerciales.
  • Visión artificial para vehículos.
  • Análisis de imágenes biomédicas.
  • Agricultura de precisión.
  • Procesamiento de imágenes satelitales.
  • Separación de objetos y fondos.
  • Automatización de inventarios visuales.

Una de las arquitecturas más conocidas es Mask R-CNN, presentada por Kaiming He, Georgia Gkioxari, Piotr Dollár y Ross Girshick en 2017.

Mask R-CNN amplía Faster R-CNN con una rama dedicada a predecir una máscara por instancia.

También utiliza RoIAlign, una operación que extrae características de regiones de interés preservando mejor su alineación espacial que determinadas alternativas basadas en coordenadas cuantizadas.

Posteriormente surgieron otros enfoques, como YOLACT, SOLO y modelos de segmentación basados en consultas y Transformers.

Estos enfoques muestran que la segmentación de instancias no está limitada a una única arquitectura.

En esta entrada estudiaremos la diferencia entre segmentación semántica, de instancias y panóptica; la representación de máscaras individuales; los componentes de Mask R-CNN; las métricas Mask IoU y Mask Average Precision; y ejemplos con NumPy, PyTorch y Torchvision.

También abordaremos sus aplicaciones empresariales, errores frecuentes y relación con la Visibilidad en Inteligencia Artificial.


1. ¿Qué es la Segmentación de Instancias?

Definición breve: La segmentación de instancias es una tarea de visión por computadora que identifica objetos individuales y produce una máscara espacial independiente para cada instancia detectada.

Normalmente, un sistema produce cuatro tipos de información:

  1. Una categoría para cada objeto.
  2. Una caja delimitadora.
  3. Una puntuación de confianza.
  4. Una máscara de segmentación individual.

Por ejemplo:

ObjetoClaseConfianzaMáscara
Instancia 1Botella0,97Máscara 1
Instancia 2Botella0,94Máscara 2
Instancia 3Taza0,91Máscara 3

Aunque las dos botellas comparten una categoría, mantienen identificadores de instancia diferentes.

¿Qué significa instancia?

Una instancia es una ocurrencia individual de un objeto.

¿La instancia debe tener una categoría conocida?

En segmentación de instancias supervisada convencional, normalmente se predice una clase dentro de las categorías entrenadas.

Existen también métodos de segmentación de objetos sin clasificación semántica específica.


2. Segmentación Semántica frente a Segmentación de Instancias

La diferencia principal es la identidad de cada objeto.

Segmentación semántica

Asigna categorías a píxeles.

Por ejemplo, todos los píxeles pertenecientes a perros pueden recibir el valor:

Perro = 1

Segmentación de instancias

Distingue individualmente los perros:

  • Perro 1.
  • Perro 2.
  • Perro 3.

Cada perro tiene una máscara propia.

¿Por qué importa?

Porque numerosas aplicaciones necesitan contar, medir o manipular objetos individuales.

Ejemplo comercial

Una empresa quiere analizar fotografías de estanterías.

La segmentación semántica puede identificar regiones donde aparecen productos.

La segmentación de instancias puede separar individualmente los artículos visibles, siempre que el modelo haya sido entrenado para esa tarea.


3. Segmentación de Instancias frente a Segmentación Panóptica

La Segmentación Panóptica proporciona una descripción más completa de la escena.

Distingue generalmente dos tipos de categorías.

Things

Objetos individuales y contables.

Ejemplos:

  • Personas.
  • Vehículos.
  • Animales.
  • Botellas.

Stuff

Regiones no necesariamente contables como objetos individuales.

Ejemplos:

  • Cielo.
  • Carretera.
  • Hierba.
  • Agua.

La segmentación panóptica combina información semántica sobre la escena con identificadores individuales para las categorías correspondientes.

¿La segmentación de instancias tiene que etiquetar todo el fondo?

No.

Un modelo de instancias puede concentrarse en los objetos detectables y dejar otras regiones sin una categoría detallada.


4. ¿Qué produce un modelo de Segmentación de Instancias?

Consideremos una imagen RGB con dimensiones:

H = 480, W = 640

El modelo detecta tres objetos.

Una salida habitual puede contener:

Cajas:

[3, 4]

Categorías:

[3]

Puntuaciones:

[3]

Máscaras:

[3, 1, 480, 640]

La primera dimensión de las máscaras corresponde al número de instancias detectadas.

¿Puede cambiar el número de instancias entre imágenes?

Sí.

Una imagen puede contener cero, una o decenas de detecciones.

¿Qué implica para el procesamiento?

Las predicciones suelen manejarse como colecciones de objetos, no como un tensor con un número fijo de instancias para todas las imágenes.


5. ¿Qué es una máscara de instancia?

Una Instance Mask es una matriz que identifica los píxeles correspondientes a un objeto individual.

Una máscara binaria utiliza normalmente:

  • 0: píxel fuera del objeto.
  • 1: píxel perteneciente al objeto.

Para dos objetos de la misma clase necesitamos dos máscaras.

Ejemplo

Máscara de instancia A:

0 0 0 0 0 0
0 1 1 0 0 0
0 1 1 0 0 0
0 0 0 0 0 0

Máscara de instancia B:

0 0 0 0 0 0
0 0 0 0 1 1
0 0 0 0 1 1
0 0 0 0 0 0

¿Podemos guardar ambas en una sola imagen?

Sí, por ejemplo utilizando identificadores enteros diferentes.

Sin embargo, una representación compacta de IDs no debe confundirse con una máscara semántica donde el valor representa únicamente la clase.


6. Ejemplo 1 — Crear máscaras individuales con NumPy

import numpy as np
height, width = 64, 96
instance_map = np.zeros(
(height, width),
dtype=np.uint8
)
# Objeto A
instance_map[10:35, 8:30] = 1
# Objeto B
instance_map[15:48, 44:78] = 2
instance_ids = np.unique(
instance_map
)
instance_ids = instance_ids[
instance_ids != 0
]
masks = np.stack(
[
instance_map == object_id
for object_id in instance_ids
],
axis=0
)
print(
"Identificadores:",
instance_ids
)
print(
"Máscaras:",
masks.shape
)

Resultado esperado

Identificadores: [1 2]
Máscaras: (2, 64, 96)

¿Qué demuestra?

Podemos transformar un mapa de identificadores en una colección de máscaras binarias.

¿Qué debemos evitar?

Suponer que el identificador 2 significa necesariamente una categoría semántica.

En este ejemplo identifica el segundo objeto, no la clase «objeto 2».


7. Clase e identidad son conceptos diferentes

Cada instancia puede necesitar dos identificadores.

Identificador de clase

Indica qué tipo de objeto representa.

Ejemplo:

Clase 4 = Botella

Identificador de instancia

Distingue una botella específica de otras botellas de la misma imagen.

Ejemplo:

Instancia 7

Representación conceptual

Instancia: 7
Clase: 4
Categoría: Botella

¿Los identificadores de instancia son globales entre imágenes?

No necesariamente.

En muchos datasets, una instancia se identifica dentro de una imagen.

Si el sistema también sigue objetos en un vídeo, puede necesitar identificadores persistentes de seguimiento.


8. ¿Qué es una Bounding Box?

Una Bounding Box es una caja delimitadora que aproxima la región de un objeto.

Un formato habitual es:

[x1, y1, x2, y2]

Donde:

  • x1: coordenada izquierda.
  • y1: coordenada superior.
  • x2: coordenada derecha.
  • y2: coordenada inferior.

¿Qué relación tiene con una máscara?

La caja delimita un rectángulo.

La máscara describe más precisamente qué píxeles pertenecen al objeto.

¿Una máscara debe llenar toda la caja?

No.

Un objeto puede tener una forma irregular y ocupar solamente parte del rectángulo.


9. Ejemplo 2 — Calcular Bounding Boxes desde máscaras

import numpy as np
def mask_to_box(mask):
ys, xs = np.where(
np.asarray(mask, dtype=bool)
)
if len(xs) == 0:
return None
x1 = int(xs.min())
y1 = int(ys.min())
# Extremos superiores exclusivos
x2 = int(xs.max()) + 1
y2 = int(ys.max()) + 1
return [x1, y1, x2, y2]
for object_id, mask in zip(
instance_ids,
masks
):
print(
"Instancia:",
int(object_id),
"Caja:",
mask_to_box(mask)
)

Resultado esperado

Instancia: 1 Caja: [8, 10, 30, 35]
Instancia: 2 Caja: [44, 15, 78, 48]

¿Por qué sumamos uno a los límites máximos?

Porque en este ejemplo utilizamos una convención de coordenadas con extremos superiores exclusivos.

¿Todos los datasets utilizan esta convención?

No.

Debemos documentar si utilizamos XYXY, XYWH, coordenadas inclusivas, exclusivas o normalizadas.


10. ¿Cómo se representan objetos superpuestos?

Los objetos pueden ocultarse parcialmente.

Por ejemplo, una botella puede estar situada delante de otra.

¿Qué píxeles se anotan habitualmente?

En una segmentación visible, la máscara contiene los píxeles visibles del objeto.

¿Podemos predecir también las partes ocultas?

Existen tareas especializadas de Amodal Segmentation que intentan estimar la extensión completa de objetos parcialmente ocultos.

¿Es lo mismo que Instance Segmentation convencional?

No exactamente.

El protocolo de anotación determina si se segmenta únicamente la región visible o una representación amodal.


11. ¿Qué es Mask R-CNN?

Mask R-CNN es una arquitectura de segmentación de instancias basada en detección de objetos.

Fue propuesta en 2017 por Kaiming He y colaboradores.

Extiende Faster R-CNN mediante una rama que predice una máscara para cada región de interés.

¿Qué produce?

  • Cajas delimitadoras.
  • Categorías.
  • Puntuaciones de detección.
  • Máscaras individuales.

¿Por qué fue importante?

Porque integró detección y segmentación de instancias dentro de una arquitectura entrenable de extremo a extremo y estableció una referencia influyente para la investigación posterior.


12. Arquitectura general de Mask R-CNN

Un flujo conceptual es:

Imagen → Backbone → Feature Maps → Region Proposal Network → RoIAlign → Cabezas de clasificación, cajas y máscaras

Componentes

  1. Backbone convolucional.
  2. Feature Pyramid Network, cuando se utiliza.
  3. Region Proposal Network.
  4. RoIAlign.
  5. Cabeza de clasificación.
  6. Cabeza de regresión de cajas.
  7. Cabeza de máscaras.

¿Todas las implementaciones son idénticas?

No.

Pueden cambiar el backbone, la FPN, el número de propuestas y las cabezas.


13. ¿Qué es el Backbone?

El Backbone extrae características visuales de la imagen.

Una configuración conocida utiliza:

ResNet-50

¿Para qué sirve?

Para transformar los píxeles en representaciones que faciliten localizar y reconocer objetos.

¿El backbone produce máscaras individuales directamente?

No normalmente.

Produce características que utilizan etapas posteriores.

¿Podemos sustituirlo?

Sí, con las adaptaciones correspondientes.

La compatibilidad de canales y de escalas es fundamental.


14. ¿Qué es Feature Pyramid Network (FPN)?

Una Feature Pyramid Network construye representaciones visuales de distintas escalas.

¿Por qué es importante?

Porque una imagen puede contener objetos grandes y pequeños.

Ejemplo

En una fotografía de un supermercado pueden aparecer:

  • Una caja grande.
  • Una botella mediana.
  • Una etiqueta pequeña.

¿Qué aporta FPN?

Permite combinar información semántica profunda con representaciones de distintas resoluciones.

¿FPN es lo mismo que un módulo Inception?

No.

Ambos tienen relación con procesamiento multiescala, pero su estructura y finalidad son diferentes.


15. ¿Qué es Region Proposal Network (RPN)?

La Region Proposal Network propone regiones que podrían contener objetos.

¿Cómo funciona conceptualmente?

Utiliza características visuales para estimar:

  • Si una región contiene un objeto.
  • Qué caja delimitadora puede corresponder a ese objeto.

¿Qué produce?

Un conjunto de propuestas candidatas.

¿Son las detecciones finales?

No necesariamente.

Las propuestas se refinan y clasifican posteriormente.


16. ¿Qué es una Region of Interest (RoI)?

Una Region of Interest es una región espacial candidata a contener un objeto.

En Mask R-CNN, las propuestas de la RPN se utilizan para extraer características de regiones individuales.

¿Qué problema aparece?

Las regiones tienen diferentes tamaños.

Sin embargo, las cabezas de predicción trabajan normalmente con dimensiones de características controladas.

¿Qué solución se utiliza?

Operaciones como RoIAlign.


17. ¿Qué es RoIAlign?

RoIAlign (Region of Interest Align) es una operación para extraer representaciones de tamaño fijo a partir de regiones de interés.

Su objetivo es reducir errores de alineación espacial provocados por determinadas cuantizaciones de coordenadas.

¿Por qué importa en segmentación?

Porque las máscaras necesitan localizar los límites de los objetos.

Un pequeño desplazamiento en las características puede afectar especialmente a objetos pequeños o bordes finos.

¿Qué utiliza RoIAlign?

Muestreo e interpolación, habitualmente bilineal.

¿Es una segmentación en sí misma?

No.

Es un componente de extracción de características.


18. RoIPool frente a RoIAlign

En determinadas operaciones tradicionales RoIPool, las coordenadas se redondeaban o cuantizaban al dividir las regiones en celdas.

Esto podía producir desalineaciones.

RoIAlign preserva mejor las coordenadas continuas durante el muestreo.

Comparación

OperaciónCaracterística
RoIPoolPuede cuantizar límites y posiciones
RoIAlignUtiliza muestreo sin la misma cuantización de coordenadas
ResultadoRepresentación espacial de tamaño fijo

¿RoIAlign conserva perfectamente toda la información?

No.

Sigue siendo una operación de remuestreo sobre mapas de características.


19. Ejemplo 3 — RoIAlign con Torchvision

import torch
from torchvision.ops import roi_align
# Un mapa de características
features = torch.arange(
0, 64,
dtype=torch.float32
).reshape(1, 1, 8, 8)
# Una región dentro del mapa
boxes = [
torch.tensor(
[[1.5, 1.5, 6.5, 6.5]],
dtype=torch.float32
)
]
result = roi_align(
features,
boxes,
output_size=(4, 4),
spatial_scale=1.0,
sampling_ratio=2,
aligned=True
)
print(
"Entrada:",
features.shape
)
print(
"Salida:",
result.shape
)
print(result[0, 0])

Resultado esperado

Forma de salida:

[1, 1, 4, 4]

¿Qué demuestra?

RoIAlign transforma una región de tamaño variable en una representación espacial fija.

Precaución

El parámetro aligned y las convenciones de coordenadas deben ser consistentes con la implementación y los pesos utilizados.


20. ¿Qué hace la cabeza de clasificación?

La cabeza de clasificación estima la categoría de cada región propuesta.

Ejemplo

Para una región puede producir:

  • Botella: 0,90.
  • Taza: 0,06.
  • Libro: 0,04.

¿Qué significa la puntuación?

Representa una salida de confianza del modelo.

¿Está perfectamente calibrada?

No necesariamente.

Las puntuaciones pueden necesitar calibración para ciertos usos.


21. ¿Qué hace la cabeza de cajas?

La cabeza de regresión de cajas ajusta las coordenadas de las propuestas para estimar mejor los límites de los objetos.

¿Por qué es necesaria?

Porque las cajas propuestas inicialmente pueden ser demasiado grandes, pequeñas o desplazadas.

¿La caja refinada define exactamente la máscara?

No.

La máscara se estima mediante una rama distinta.


22. ¿Qué hace la Mask Head?

La Mask Head es la rama que predice máscaras de segmentación para las regiones de interés.

En la formulación característica de Mask R-CNN, cada región produce máscaras de resolución fija dentro de su espacio local.

Ejemplo conceptual

Una región puede producir una máscara de:

28 × 28

Posteriormente, la máscara se proyecta o remuestrea hacia la región correspondiente en la imagen.

¿La máscara final tiene que medir 28 × 28?

No.

Ese tamaño puede ser la resolución interna de predicción.

La salida posprocesada puede expresarse en la resolución de la imagen original.


23. ¿Qué es una máscara probabilística?

La salida de una Mask Head puede contener probabilidades por píxel.

Ejemplo

Una posición de la máscara contiene:

0,87

El modelo estima una alta probabilidad de pertenencia a la instancia.

¿Cómo convertirla en una máscara binaria?

Aplicando un umbral.

Por ejemplo:

p ≥ 0,5

¿Es obligatorio utilizar 0,5?

No.

Puede ajustarse mediante validación.

¿Cómo distinguir el umbral de máscara del umbral de detección?

Son controles diferentes.

El umbral de detección filtra objetos según su puntuación.

El umbral de máscara determina qué píxeles pertenecen a cada instancia conservada.


24. ¿Cómo se combinan las pérdidas de Mask R-CNN?

Mask R-CNN utiliza una función objetivo compuesta.

Una representación conceptual es:

Ltotal = Lclasificación + Lcajas + Lmáscaras + LRPN

Donde:

  • Lclasificación evalúa las categorías.
  • Lcajas evalúa el ajuste de cajas.
  • Lmáscaras evalúa las máscaras.
  • LRPN incluye objetivos relacionados con propuestas.

¿La pérdida de máscaras se calcula para todas las clases a la vez?

En la formulación original, se selecciona la máscara correspondiente a la clase verdadera para calcular la pérdida de esa región.

¿Es igual que Softmax semántico por píxel?

No.

La rama de máscaras se formula de manera diferente.


25. ¿Qué es Intersection over Union en máscaras?

Mask Intersection over Union (Mask IoU) mide el solapamiento entre dos máscaras binarias.

Fórmula

IoU = |P ∩ G| / |P ∪ G|

Donde:

  • P es la máscara predicha.
  • G es la máscara real.

Ejemplo

Una máscara predicha ocupa 100 píxeles.

La máscara real ocupa 80.

Coinciden en 60.

La unión contiene:

100 + 80 − 60 = 120 píxeles

Por tanto:

IoU = 60/120 = 0,5


26. Box IoU frente a Mask IoU

La distinción es fundamental.

Box IoU

Compara cajas rectangulares.

Mask IoU

Compara regiones de píxeles.

Un detector puede obtener una caja razonablemente correcta y producir una máscara imprecisa.

¿Qué significa?

La calidad de localización rectangular no garantiza buena segmentación.

¿Qué conviene informar?

Tanto métricas de detección como métricas de máscaras cuando ambas son importantes.


27. Ejemplo 4 — Calcular Mask IoU y Dice

import numpy as np
def mask_metrics(predicted, target):
predicted = np.asarray(
predicted,
dtype=bool
)
target = np.asarray(
target,
dtype=bool
)
intersection = np.logical_and(
predicted,
target
).sum()
union = np.logical_or(
predicted,
target
).sum()
total = (
predicted.sum()
+ target.sum()
)
if union == 0:
return {
"iou": 1.0,
"dice": 1.0
}
return {
"iou": float(
intersection / union
),
"dice": float(
2 * intersection / total
)
}
target = np.array([
[0, 1, 1, 0],
[0, 1, 1, 0],
[0, 0, 0, 0]
])
predicted = np.array([
[0, 1, 1, 0],
[0, 1, 0, 0],
[0, 0, 0, 0]
])
print(
mask_metrics(predicted, target)
)

Resultado esperado

IoU = 0,75

Dice ≈ 0,857

¿Por qué se devuelve 1 si ambas máscaras están vacías?

Es la convención elegida en esta función educativa.

En benchmarks de instancias, las máscaras vacías y las detecciones inexistentes requieren tratamiento de evaluación diferente.


28. ¿Qué es Average Precision (AP)?

Average Precision (AP) resume la relación entre Precision y Recall a medida que varía el umbral de puntuación de las detecciones.

En segmentación de instancias, las coincidencias entre predicciones y objetos reales se determinan utilizando máscaras.

¿Por qué no basta con calcular IoU de una máscara?

Porque el sistema puede:

  • Detectar objetos correctos.
  • Omitir objetos.
  • Producir detecciones falsas.
  • Duplicar detecciones.
  • Asignar categorías incorrectas.

AP integra varios de estos aspectos mediante un protocolo de evaluación.


29. ¿Qué es Mask AP?

Mask AP es Average Precision calculada utilizando el solapamiento de las máscaras para determinar coincidencias con las anotaciones reales.

Es diferente de Box AP, donde el emparejamiento utiliza las cajas delimitadoras.

¿Qué mide?

La capacidad de detectar y segmentar correctamente objetos individuales.

¿Depende de las puntuaciones de confianza?

Sí.

Las predicciones se ordenan según sus puntuaciones, de acuerdo con el protocolo.

¿Es igual que Mean IoU?

No.

Mean IoU compara solapamientos de categorías o regiones según una definición.

Mask AP evalúa detecciones de instancias y su relación Precision-Recall.


30. ¿Cómo evalúa COCO las máscaras?

Una métrica ampliamente utilizada es:

AP@[0.50:0.95]

Se calcula sobre umbrales IoU desde:

0,50 hasta 0,95, con incrementos de 0,05.

Esto produce diez umbrales:

0,50; 0,55; 0,60; 0,65; 0,70; 0,75; 0,80; 0,85; 0,90 y 0,95.

El protocolo COCO agrega resultados según clases, umbrales y su procedimiento de evaluación.

Otras métricas

  • AP50.
  • AP75.
  • AP para objetos pequeños.
  • AP para objetos medianos.
  • AP para objetos grandes.
  • Average Recall.

¿Por qué importa evaluar diferentes umbrales?

Porque un objeto puede estar razonablemente localizado sin tener una máscara suficientemente precisa para un umbral estricto.


31. ¿Qué son AP50 y AP75?

AP50 utiliza un umbral de Mask IoU de 0,50.

AP75 utiliza un umbral de 0,75.

¿Cuál es más exigente?

AP75 exige mayor solapamiento para considerar una coincidencia.

¿AP50 mide el porcentaje de máscaras con IoU superior a 0,50?

No exactamente.

Average Precision considera también el ranking de puntuaciones, los falsos positivos y los falsos negativos.

¿Cómo obtener resultados COCO comparables?

Utilizando su evaluador o una implementación equivalente con el mismo protocolo.


32. ¿Qué es Non-Maximum Suppression (NMS)?

Non-Maximum Suppression es un procedimiento para reducir detecciones duplicadas.

Ejemplo

El detector produce tres cajas muy parecidas sobre una misma botella.

NMS puede conservar una detección con mejor puntuación y eliminar otras cuando sus solapamientos superan un umbral.

¿Se utiliza Box IoU?

La NMS convencional suele utilizar solapamiento entre cajas.

¿Existe Mask NMS?

Sí, existen variantes que pueden considerar máscaras u otros criterios.

¿NMS garantiza una única detección por objeto?

No.

La calidad depende de las puntuaciones, umbrales y configuración.


33. ¿Cómo funcionan los umbrales?

Un pipeline puede tener diferentes umbrales.

UmbralFinalidad
Score ThresholdFiltrar detecciones de baja confianza
NMS ThresholdReducir detecciones duplicadas
Mask ThresholdConvertir probabilidades de píxeles en máscaras binarias
IoU Evaluation ThresholdDeterminar coincidencias para una métrica

¿Por qué no debemos confundirlos?

Porque cada uno modifica un aspecto diferente del resultado.

¿Podemos elegirlos utilizando el Test Set?

No es recomendable.

Lo adecuado es seleccionar los parámetros mediante validación y evaluar después en un conjunto independiente.


34. ¿Qué es un dataset de instancias?

Un dataset de segmentación de instancias necesita identificar objetos individualmente.

Para cada objeto puede almacenar:

  • Identificador de imagen.
  • Identificador de instancia.
  • Clase.
  • Máscara.
  • Bounding Box.
  • Área.
  • Información de agrupación o Crowd, según el dataset.

¿Una máscara semántica es suficiente?

No necesariamente.

Si dos objetos de la misma clase se tocan, una máscara semántica convencional puede no distinguir dónde termina uno y empieza el otro.


35. ¿Qué es el formato COCO?

COCO (Common Objects in Context) es un dataset y un conjunto de formatos y protocolos utilizados en visión por computadora.

Para segmentación de instancias, las anotaciones pueden incluir:

  • image_id
  • category_id
  • segmentation
  • bbox
  • area
  • iscrowd

¿Cómo representar las máscaras?

Entre otros formatos, pueden utilizarse polígonos o Run-Length Encoding, dependiendo de la anotación.

¿Qué es RLE?

Run-Length Encoding representa regiones mediante secuencias de longitudes codificadas.

¿Por qué utilizarlo?

Puede permitir almacenar máscaras de forma más compacta.


36. ¿Qué significa iscrowd?

El campo iscrowd aparece en anotaciones y protocolos relacionados con COCO.

Puede utilizarse para representar agrupaciones de objetos o para indicar un tratamiento especial durante evaluación.

Ejemplo

Una multitud de personas puede anotarse como una región agrupada bajo determinadas convenciones.

¿Es igual que una máscara de instancia individual?

No necesariamente.

¿Qué debemos hacer?

Respetar el significado del campo y el protocolo de evaluación.


37. ¿Qué es Penn-Fudan Pedestrian Dataset?

Es un dataset de imágenes y máscaras de peatones frecuentemente utilizado en tutoriales de Mask R-CNN.

El tutorial oficial de Torchvision lo utiliza para demostrar cómo adaptar un modelo preentrenado a una tarea especializada.

¿Por qué es útil?

Porque proporciona imágenes con instancias individuales anotadas.

¿Es suficientemente grande para cualquier proyecto comercial?

No.

Es principalmente un recurso educativo y de investigación.


38. ¿Cómo utilizar Torchvision para Segmentación de Instancias?

Torchvision proporciona implementaciones de Mask R-CNN.

Entre ellas:

  • maskrcnn_resnet50_fpn
  • maskrcnn_resnet50_fpn_v2

Las implementaciones pueden cargarse con pesos preentrenados.

¿Qué formato de entrada utilizan?

Una lista de imágenes individuales.

Cada imagen es normalmente un tensor:

[3, H, W]

con valores de píxel entre cero y uno.

¿Qué formato de salida producen?

Una lista de diccionarios, uno por imagen.

Los diccionarios incluyen cajas, categorías, puntuaciones y máscaras.


39. Ejemplo 5 — Cargar Mask R-CNN preentrenada

Instalación:

pip install torch torchvision pillow numpy matplotlib

Código:

import torch
from torchvision.models.detection import (
maskrcnn_resnet50_fpn_v2,
MaskRCNN_ResNet50_FPN_V2_Weights
)
weights = (
MaskRCNN_ResNet50_FPN_V2_Weights.DEFAULT
)
model = maskrcnn_resnet50_fpn_v2(
weights=weights
)
model.eval()
print(
"Parámetros:",
sum(
p.numel()
for p in model.parameters()
)
)
print(
"Categorías:",
len(weights.meta["categories"])
)

¿Qué demuestra?

Podemos cargar Mask R-CNN con pesos disponibles en Torchvision.

¿Requiere Internet?

La primera ejecución puede necesitar descargar el checkpoint.

¿Reconoce automáticamente cualquier producto comercial?

No.

El modelo reconoce las categorías disponibles en su entrenamiento.


40. Ejemplo 6 — Inferencia de instancias en una fotografía

import torch
from PIL import Image
from torchvision.models.detection import (
maskrcnn_resnet50_fpn_v2,
MaskRCNN_ResNet50_FPN_V2_Weights
)
weights = (
MaskRCNN_ResNet50_FPN_V2_Weights.DEFAULT
)
model = maskrcnn_resnet50_fpn_v2(
weights=weights
)
model.eval()
image = Image.open(
"imagen.jpg"
).convert("RGB")
preprocess = weights.transforms()
image_tensor = preprocess(image)
with torch.inference_mode():
predictions = model([
image_tensor
])
result = predictions[0]
print(
"Cajas:",
result["boxes"].shape
)
print(
"Clases:",
result["labels"].shape
)
print(
"Puntuaciones:",
result["scores"].shape
)
print(
"Máscaras:",
result["masks"].shape
)

¿Qué demuestra?

El resultado contiene una colección de instancias detectadas.

¿Por qué utilizamos una lista de imágenes?

Porque las implementaciones de detección de Torchvision trabajan con listas que pueden contener imágenes de tamaños diferentes.


41. Ejemplo 7 — Filtrar detecciones por puntuación

score_threshold = 0.70
scores = result["scores"]
keep = scores >= score_threshold
boxes = result["boxes"][keep]
labels = result["labels"][keep]
scores = scores[keep]
masks = result["masks"][keep]
print(
"Instancias conservadas:",
len(boxes)
)

¿Qué demuestra?

Podemos eliminar predicciones que no superan el umbral seleccionado.

¿Por qué puede ser necesario?

Porque algunos resultados tienen puntuaciones bajas.

¿Qué riesgo existe al utilizar un umbral demasiado alto?

Podemos eliminar objetos reales con menor confianza.


42. Ejemplo 8 — Convertir probabilidades en máscaras binarias

mask_threshold = 0.5
binary_masks = (
masks[:, 0] >= mask_threshold
)
print(
binary_masks.shape
)
print(
binary_masks.dtype
)

¿Qué demuestra?

Cada instancia conservada tiene una máscara booleana.

¿Qué ocurre si no hay instancias?

El tensor tendrá cero máscaras y debe procesarse correctamente sin asumir que existe un objeto.


43. Ejemplo 9 — Visualizar las máscaras de instancias

import numpy as np
import matplotlib.pyplot as plt
from PIL import Image
image = Image.open(
"imagen.jpg"
).convert("RGB")
canvas = np.asarray(
image
).astype(np.float32) / 255.0
overlay = canvas.copy()
rng = np.random.default_rng(42)
for mask in binary_masks.cpu().numpy():
color = rng.random(3)
overlay[mask] = (
0.55 * overlay[mask]
+ 0.45 * color
)
plt.figure(figsize=(10, 7))
plt.imshow(overlay)
plt.title(
"Segmentación de instancias"
)
plt.axis("off")
plt.show()

¿Qué demuestra?

Podemos representar cada objeto con un color diferente.

¿Los colores representan clases?

En este ejemplo no.

Los colores se asignan aleatoriamente a las instancias para distinguir objetos individuales.


44. Ejemplo 10 — Mostrar nombres de categorías

categories = weights.meta[
"categories"
]
for label, score in zip(
labels.cpu().tolist(),
scores.cpu().tolist()
):
if 0 <= label < len(categories):
category = categories[label]
else:
category = f"Clase {label}"
print(
category,
round(score, 3)
)

¿Qué demuestra?

Podemos relacionar los identificadores de clase del checkpoint con sus nombres.

Precaución

El mapeo debe proceder del mismo checkpoint utilizado para generar las predicciones.


45. ¿Cómo entrenar Mask R-CNN con datos propios?

El entrenamiento requiere una estructura de datos más compleja que la clasificación convencional.

Para cada imagen necesitamos un diccionario de anotaciones.

Campos fundamentales

boxes

Coordenadas de cajas.

labels

Categorías por instancia.

masks

Una máscara binaria por instancia.

Campos útiles para evaluación

image_id

Identificador único de imagen.

area

Área de la caja o según el protocolo.

iscrowd

Indicador de agrupación.

¿Se necesita fondo como instancia?

No.

El fondo suele tener un identificador de clase reservado, pero no se añade como una máscara de objeto.


46. Ejemplo 11 — Crear anotaciones sintéticas válidas

import torch
height, width = 96, 128
image = torch.zeros(
(3, height, width),
dtype=torch.float32
)
masks = torch.zeros(
(2, height, width),
dtype=torch.uint8
)
# Instancia 1
masks[0, 10:45, 12:42] = 1
# Instancia 2
masks[1, 30:78, 70:110] = 1
# Dibujar objetos en la imagen
image[0][masks[0].bool()] = 0.9
image[1][masks[1].bool()] = 0.9
boxes = torch.tensor([
[12.0, 10.0, 42.0, 45.0],
[70.0, 30.0, 110.0, 78.0]
])
labels = torch.tensor(
[1, 1],
dtype=torch.int64
)
target = {
"boxes": boxes,
"labels": labels,
"masks": masks,
"image_id": torch.tensor(0),
"area": torch.tensor(
[1050.0, 1920.0]
),
"iscrowd": torch.zeros(
2,
dtype=torch.int64
)
}
print(
image.shape
)
print(
target["masks"].shape
)

¿Qué demuestra?

Dos objetos comparten una categoría, pero tienen máscaras y cajas independientes.

¿Es suficiente para entrenar un modelo fiable?

No.

Es un ejemplo para verificar el formato de anotación.


47. ¿Qué forma deben tener los datos de entrenamiento?

Para una imagen:

Imagen

[3, H, W]

Cajas

[N, 4]

Etiquetas

[N]

Máscaras

[N, H, W]

¿Qué ocurre si una imagen contiene cinco objetos?

N = 5.

¿Qué ocurre si otra contiene dos?

N = 2.

¿Podemos utilizar el DataLoader habitual sin modificaciones?

Generalmente necesitamos una función de agrupación que permita conservar colecciones de anotaciones con distinta longitud.


48. Ejemplo 12 — Función collate_fn

def collate_fn(batch):
images, targets = zip(*batch)
return (
list(images),
list(targets)
)

Uso:

from torch.utils.data import DataLoader
loader = DataLoader(
dataset,
batch_size=2,
shuffle=True,
collate_fn=collate_fn
)

¿Por qué es necesario?

Porque cada imagen puede contener un número distinto de instancias.

¿Qué presupone este ejemplo?

Que dataset es una instancia válida de una clase Dataset que entrega pares (image, target).


49. Ejemplo 13 — Adaptar Mask R-CNN a nuevas categorías

Supongamos una aplicación con dos clases de objetos:

  • Botella.
  • Taza.

El modelo necesita tres clases contando el fondo.

from torchvision.models.detection import (
maskrcnn_resnet50_fpn,
MaskRCNN_ResNet50_FPN_Weights
)
from torchvision.models.detection.faster_rcnn import (
FastRCNNPredictor
)
from torchvision.models.detection.mask_rcnn import (
MaskRCNNPredictor
)
num_classes = 3
model = maskrcnn_resnet50_fpn(
weights=MaskRCNN_ResNet50_FPN_Weights.DEFAULT
)
# Sustituir predictor de cajas
in_features = (
model.roi_heads.box_predictor
.cls_score.in_features
)
model.roi_heads.box_predictor = (
FastRCNNPredictor(
in_features,
num_classes
)
)
# Sustituir predictor de máscaras
mask_in_features = (
model.roi_heads.mask_predictor
.conv5_mask.in_channels
)
model.roi_heads.mask_predictor = (
MaskRCNNPredictor(
mask_in_features,
256,
num_classes
)
)

¿Qué demuestra?

Podemos conservar gran parte del modelo preentrenado y sustituir las cabezas específicas de la nueva tarea.

¿Las nuevas cabezas están entrenadas?

No.

Necesitan aprendizaje con máscaras anotadas.


50. Ejemplo 14 — Un paso de entrenamiento

Este ejemplo presupone que ya existen images y targets producidos por un DataLoader compatible.

import torch
device = torch.device(
"cuda" if torch.cuda.is_available()
else "cpu"
)
model = model.to(device)
model.train()
optimizer = torch.optim.SGD(
[
p for p in model.parameters()
if p.requires_grad
],
lr=0.001,
momentum=0.9,
weight_decay=0.0005
)
images = [
image.to(device)
for image in images
]
targets = [
{
key: value.to(device)
for key, value in target.items()
}
for target in targets
]
optimizer.zero_grad()
loss_dict = model(
images,
targets
)
loss = sum(
value
for value in loss_dict.values()
)
loss.backward()
optimizer.step()
print(
"Pérdida total:",
loss.item()
)
for name, value in loss_dict.items():
print(
name,
value.item()
)

¿Qué demuestra?

Torchvision puede devolver un diccionario de pérdidas para los componentes de detección y segmentación.

¿Es un entrenamiento completo?

No.

Debemos añadir épocas, validación, selección de checkpoint, evaluación COCO y medidas de reproducibilidad.


51. ¿Cómo crear un Dataset real?

Un Dataset personalizado debe cargar, para cada imagen:

  1. Imagen RGB.
  2. Máscaras de instancia.
  3. Categorías.
  4. Cajas delimitadoras.
  5. Metadatos necesarios.

¿Qué debemos verificar?

  • Las cajas corresponden a las máscaras.
  • Las máscaras tienen la misma geometría que la imagen.
  • Los identificadores de clase son válidos.
  • Las instancias vacías se eliminan o tratan correctamente.
  • Las anotaciones duplicadas se revisan.
  • Las transformaciones geométricas mantienen la alineación.

¿Qué ocurre con imágenes sin objetos?

El pipeline debe manejar correctamente el caso con cero instancias, de acuerdo con la implementación utilizada.


52. ¿Cómo realizar Data Augmentation?

Las transformaciones geométricas deben actualizar todos los elementos relacionados.

Si reflejamos horizontalmente una imagen, debemos reflejar:

  • Imagen.
  • Máscaras.
  • Cajas.

Ejemplo

Una caja original es:

[x1, y1, x2, y2]

Si la anchura de la imagen es W, una reflexión horizontal puede transformar sus coordenadas a:

[W − x2, y1, W − x1, y2]

bajo la convención de coordenadas utilizada.

¿Por qué importa?

Porque una caja desalineada con su máscara produce supervisión incorrecta.

¿Qué solución ofrece Torchvision?

Las transformaciones de la API v2 permiten trabajar con imágenes, máscaras y cajas mediante tipos de datos estructurados.


53. Ejemplo 15 — Reflexión horizontal sincronizada

import torch
def horizontal_flip(
image,
masks,
boxes
):
width = image.shape[-1]
flipped_image = torch.flip(
image,
dims=[-1]
)
flipped_masks = torch.flip(
masks,
dims=[-1]
)
flipped_boxes = boxes.clone()
flipped_boxes[:, 0] = (
width - boxes[:, 2]
)
flipped_boxes[:, 2] = (
width - boxes[:, 0]
)
return (
flipped_image,
flipped_masks,
flipped_boxes
)
flipped_image, flipped_masks, flipped_boxes = (
horizontal_flip(
image,
masks,
boxes
)
)

¿Qué demuestra?

Una transformación espacial debe mantener la correspondencia entre imagen, máscaras y cajas.

¿Qué debemos hacer en un pipeline real?

Utilizar transformaciones comprobadas y validar visualmente ejemplos transformados.


54. ¿Cómo evaluar un modelo propio?

Una evaluación completa debe considerar:

  • Mask AP.
  • Box AP.
  • AP50.
  • AP75.
  • AP para objetos pequeños.
  • Recall.
  • Errores por categoría.
  • Falsos positivos.
  • Falsos negativos.
  • Calidad de contornos.
  • Latencia.

¿Por qué no basta con Accuracy?

Porque el número de detecciones cambia entre imágenes y necesitamos evaluar emparejamientos entre predicciones e instancias verdaderas.

¿Por qué no basta con Mean IoU?

Porque una evaluación de instancias debe penalizar también objetos omitidos, duplicados o inexistentes.


55. ¿Qué significa emparejar predicciones con objetos reales?

Un evaluador debe determinar qué predicción corresponde a qué instancia anotada.

Factores utilizados

  • Categoría.
  • Solapamiento.
  • Puntuación.
  • Umbral IoU.
  • Reglas del protocolo.

¿Podemos asignar varias predicciones al mismo objeto real?

En una evaluación convencional de detecciones, normalmente solo una predicción puede contar como verdadero positivo para una instancia real, bajo las reglas de emparejamiento.

Las detecciones duplicadas pueden contabilizarse como falsos positivos.


56. ¿Qué es el problema de objetos pequeños?

Los objetos pequeños ocupan pocas posiciones espaciales.

Ejemplo

Una fotografía de estantería contiene etiquetas diminutas.

¿Qué puede ocurrir?

Las reducciones de resolución en el backbone pueden eliminar detalles importantes.

Posibles estrategias

  • Mayor resolución de entrada.
  • Feature Pyramid Networks.
  • Recortes de alta resolución.
  • Más ejemplos de objetos pequeños.
  • Ajustes del muestreo.
  • Arquitecturas especializadas.

¿Aumentar resolución siempre mejora?

No.

Incrementa el coste y no garantiza que el modelo disponga de anotaciones suficientes para aprender la tarea.


57. ¿Qué es Occlusion?

Occlusion (Oclusión) ocurre cuando un objeto tapa parcialmente otro.

¿Por qué dificulta la segmentación?

Porque los límites de las instancias pueden ser ambiguos y solo se observa una parte de determinados objetos.

¿Qué ayuda?

  • Datos de entrenamiento con oclusiones.
  • Representaciones contextuales.
  • Anotaciones consistentes.
  • Evaluación específica de casos difíciles.

¿Puede el modelo separar objetos que se tocan?

Puede hacerlo cuando aprende señales suficientes, pero no existe una garantía universal.


58. ¿Qué alternativas existen a Mask R-CNN?

La segmentación de instancias se ha desarrollado mediante diferentes familias.

YOLACT

Propone una arquitectura orientada a segmentación de instancias eficiente mediante combinación de prototipos y coeficientes de máscaras.

SOLO

Plantea la segmentación de instancias mediante una estrategia de asignación espacial.

Modelos basados en Transformers

Algunas arquitecturas utilizan consultas de objetos y decoders especializados para producir clases y máscaras.

Modelos de segmentación guiada por prompts

Pueden producir máscaras a partir de indicaciones espaciales o visuales, como puntos y cajas.

¿Todos estos sistemas resuelven exactamente la misma tarea?

No necesariamente.

La segmentación automática de instancias con clases conocidas y la segmentación interactiva guiada por prompts tienen protocolos y objetivos distintos.


59. ¿Qué es la segmentación guiada por prompts?

Es una familia de métodos donde una indicación ayuda a seleccionar qué objeto o región debe segmentarse.

Ejemplos de prompts

  • Un punto dentro del objeto.
  • Una caja aproximada.
  • Una máscara preliminar.

¿Es lo mismo que detección automática de todas las instancias?

No.

Un sistema guiado necesita una indicación o un mecanismo adicional para seleccionar las regiones.

¿Puede combinarse con un detector?

Sí.

Un detector puede proporcionar cajas y un segmentador guiado puede refinarlas.


60. Segmentación de Instancias en Keras

Keras puede utilizarse para construir sistemas de segmentación de instancias mediante arquitecturas especializadas o implementaciones compatibles con sus APIs.

Sin embargo, no debemos confundir una U-Net multiclase sencilla con un modelo completo de segmentación de instancias.

¿Por qué?

Porque una U-Net semántica produce categorías por píxel.

Una arquitectura de instancias necesita distinguir objetos individuales.

¿Qué componentes adicionales pueden requerirse?

  • Predicción de objetos.
  • Identificación de instancias.
  • Máscaras por instancia.
  • Emparejamiento entre predicciones y anotaciones.
  • Posprocesamiento.

¿Qué enfoque práctico recomendamos?

Para comenzar con un sistema completo de Mask R-CNN, Torchvision ofrece un flujo oficial documentado y modelos preentrenados.

Keras puede ser apropiado cuando se dispone de una implementación de instancias compatible y mantenida.


61. Ejemplo 16 — Cabeza de máscara educativa con Keras

Este ejemplo demuestra cómo generar probabilidades de máscara a partir de características de regiones ya extraídas.

No implementa por sí mismo un detector completo.

import keras
from keras import layers
inputs = keras.Input(
shape=(14, 14, 256)
)
x = inputs
for _ in range(4):
x = layers.Conv2D(
256,
kernel_size=3,
padding="same",
activation="relu"
)(x)
x = layers.Conv2DTranspose(
256,
kernel_size=2,
strides=2,
activation="relu"
)(x)
outputs = layers.Conv2D(
3,
kernel_size=1
)(x)
mask_head = keras.Model(
inputs,
outputs
)
mask_head.summary()

Resultado esperado

Para una región de entrada de:

14 × 14 × 256

la cabeza produce:

28 × 28 × 3

¿Qué representan las tres salidas?

Pueden utilizarse para producir logits de máscaras asociados a tres categorías, según el diseño de entrenamiento.

¿Es Mask R-CNN completa?

No.

Faltan el backbone, la RPN, RoIAlign, la predicción de cajas, la asignación de propuestas y el entrenamiento completo.


62. ¿Cómo visualizar correctamente las instancias?

Una presentación útil puede incluir:

  1. Imagen original.
  2. Caja delimitadora.
  3. Nombre de clase.
  4. Puntuación.
  5. Máscara coloreada.
  6. Identificador de instancia.

¿Por qué utilizar colores diferentes?

Para distinguir objetos próximos de la misma categoría.

¿Los colores tienen que coincidir con las categorías?

No.

Podemos asignar colores por instancia o por clase, pero la leyenda debe indicar qué convención utilizamos.


63. ¿Cómo guardar una predicción?

Una estructura de resultados puede contener:

image_id
instance_id
category_id
score
bbox
mask

¿Por qué guardar también la puntuación?

Porque puede utilizarse para filtrar y evaluar detecciones.

¿Cómo almacenar la máscara?

Podemos utilizar:

  • PNG.
  • RLE.
  • Polígonos.
  • Formatos específicos del sistema.

¿Qué debemos evitar?

Guardar únicamente una visualización RGB si necesitamos reconstruir identificadores o máscaras binarias originales.


64. ¿Cómo medir el área de un objeto?

Una máscara binaria permite contar los píxeles asociados a una instancia.

Fórmula

Área visible en píxeles = Σ máscara

Ejemplo

Si una máscara tiene 850 píxeles positivos:

Área visible = 850 píxeles²

¿Equivale a un área física?

No.

Para obtener unidades físicas necesitamos calibración, escala y, en determinados casos, geometría de cámara.


65. Ejemplo 17 — Medir áreas de instancias

import numpy as np
for object_id, mask in zip(
instance_ids,
masks
):
area = int(
np.asarray(mask).sum()
)
print(
f"Instancia {object_id}:",
f"{area} píxeles"
)

¿Qué demuestra?

Podemos calcular estadísticas individuales de cada objeto.

¿Qué ocurre con objetos parcialmente ocultos?

La medida corresponde a los píxeles positivos de la máscara visible, según la definición de anotación utilizada.


66. ¿Cómo contar objetos?

Cuando el sistema produce una máscara independiente por instancia, podemos contar las detecciones conservadas.

Fórmula básica

Número de objetos = Número de instancias válidas

¿Es un recuento perfecto?

No.

Puede haber objetos omitidos y detecciones duplicadas.

¿Qué debemos evaluar?

Precision, Recall y medidas específicas de conteo.

¿Qué ocurre con objetos parcialmente visibles?

Depende de la definición de objeto válido y del modelo.


67. ¿Qué relación tiene con seguimiento de objetos?

El Object Tracking intenta mantener la identidad de un objeto a lo largo del tiempo.

La segmentación de instancias identifica objetos en imágenes individuales.

¿Son equivalentes?

No.

Una instancia detectada en un fotograma no tiene automáticamente el mismo ID en el siguiente.

¿Cómo combinarlos?

Mediante sistemas de asociación temporal o métodos de seguimiento especializados.

¿Qué resultado obtenemos?

Un sistema de seguimiento con máscaras por objeto, frecuentemente denominado Video Instance Segmentation cuando sigue el protocolo correspondiente.


68. Segmentación de Instancias en comercio electrónico

Una empresa puede utilizar segmentación de instancias para analizar fotografías con varios productos.

Caso 1. Separación de productos

Generar máscaras individuales de los artículos.

Caso 2. Preparación de catálogos

Crear recortes o fondos de forma automatizada.

Caso 3. Conteo visual

Estimar cantidades de productos visibles.

Caso 4. Inspección de estanterías

Identificar posiciones y regiones de artículos.

¿Qué limitación existe?

Los productos parecidos pueden ser difíciles de distinguir.

La segmentación de objetos no proporciona automáticamente su código SKU o identidad comercial exacta.


69. Segmentación de Instancias en robótica

Un robot puede necesitar distinguir objetos manipulables individualmente.

Ejemplo

Una mesa contiene varias piezas.

El sistema debe localizar una pieza específica.

¿Qué puede aportar la segmentación?

Una máscara que delimite la región visible de cada objeto.

¿Es suficiente para sujetar el objeto?

No.

El sistema puede necesitar estimación de profundidad, geometría tridimensional, planificación de agarre y control.


70. Segmentación de Instancias en inspección industrial

Puede utilizarse para separar componentes individuales de una escena.

Ejemplo

Una fotografía contiene veinte tornillos.

Un modelo produce una máscara por tornillo.

¿Qué podemos medir?

  • Cantidad de tornillos visibles.
  • Superficie aparente.
  • Posición relativa.
  • Presencia de componentes.
  • Características visuales adicionales.

¿Podemos detectar defectos automáticamente?

Es posible si el sistema incluye modelos o reglas específicos para defectos.

La segmentación de instancias por sí sola no implica clasificación de defectos.


71. Segmentación de Instancias en imágenes biomédicas

Puede ser útil cuando necesitamos distinguir estructuras individuales.

Ejemplo

En microscopía, varias células pueden tocarse.

Una máscara semántica podría representar una región celular continua.

Un segmentador de instancias puede intentar separar cada célula.

¿Por qué importa?

Porque permite estudiar características por célula, como su área visible o forma.

¿Es necesario un modelo clínicamente validado?

Para aplicaciones clínicas deben establecerse las validaciones y controles apropiados al uso previsto.


72. Segmentación de Instancias en agricultura

Puede utilizarse para localizar plantas, frutos u otros elementos individuales.

Ejemplo

Un sistema identifica varias manzanas visibles en una fotografía.

¿Qué podemos hacer?

  • Contarlas.
  • Medir tamaños aparentes.
  • Analizar su distribución.
  • Relacionarlas con otras estimaciones.

¿Puede calcular automáticamente el rendimiento real de una cosecha?

No.

El recuento visible puede diferir de la cantidad real por oclusiones, cobertura de cámara y errores de detección.


73. Segmentación de Instancias en imágenes satelitales

En imágenes aéreas o satelitales podemos necesitar distinguir estructuras individuales.

Ejemplos

  • Vehículos.
  • Edificios.
  • Embarcaciones.
  • Instalaciones específicas.

¿Qué desafío aparece?

Los objetos pueden ser muy pequeños y las imágenes muy grandes.

¿Qué estrategias pueden ayudar?

Procesamiento por parches, preservación de resolución y modelos especializados.


74. Segmentación de Instancias y AI Visibility

Una plataforma de AI Visibility puede integrar sistemas de análisis visual.

Caso 1. Identificación de productos

Separar artículos individuales en imágenes comerciales.

Caso 2. Análisis de activos gráficos

Delimitar objetos o elementos visuales de una marca.

Caso 3. Procesamiento de catálogos

Contar o aislar productos visibles.

Caso 4. Análisis de capturas web

Identificar elementos visuales individuales cuando existan datos adecuados.

¿Qué aporta?

Representaciones espaciales por objeto, útiles para análisis automatizado.

¿Qué no aporta?

No mejora automáticamente la frecuencia de recomendaciones o citas generadas por asistentes externos.


75. ¿La Segmentación de Instancias mejora Recommendation Rate?

No directamente.

Recommendation Rate mide recomendaciones observadas bajo una metodología específica.

La segmentación de instancias analiza objetos dentro de imágenes.

Su utilización en una aplicación propia no cambia por sí sola las recomendaciones de un asistente externo.


76. ¿La Segmentación de Instancias mejora Citation Coverage?

No directamente.

Citation Coverage está relacionada con las referencias registradas en respuestas de asistentes.

Una máscara de objeto no es una cita a una fuente.

La segmentación puede mejorar un sistema de análisis visual, pero no produce automáticamente nuevas citas de marca.


77. ¿Qué errores son frecuentes?

Error 1. Confundir segmentación semántica y de instancias

La segmentación semántica no distingue necesariamente objetos individuales.

Error 2. Confundir detección de objetos y segmentación de instancias

Una caja no equivale a una máscara.

Error 3. Confundir clase e identificador de instancia

Son conceptos diferentes.

Error 4. Utilizar una máscara semántica como si identificara automáticamente todos los objetos

Puede fusionar objetos de la misma categoría.

Error 5. No conservar la correspondencia entre cajas y máscaras

Produce anotaciones incorrectas.

Error 6. Utilizar coordenadas XYWH como si fueran XYXY

Puede generar cajas inválidas.

Error 7. No revisar objetos con máscaras vacías

Puede provocar errores de entrenamiento o evaluación.

Error 8. Aplicar transformaciones distintas a imágenes y máscaras

Destruye la alineación.

Error 9. Redimensionar etiquetas categóricas con interpolación incorrecta

Puede generar valores inexistentes.

Error 10. Confundir umbral de puntuación y umbral de máscara

Controlan elementos diferentes.

Error 11. Utilizar NMS sin revisar sus efectos

Puede eliminar detecciones correctas o conservar duplicados.

Error 12. Calcular únicamente Mask IoU sobre objetos detectados

Ignora objetos omitidos y falsas detecciones.

Error 13. Interpretar AP50 como una simple media de IoU

No es equivalente.

Error 14. Confundir Box AP y Mask AP

Utilizan criterios de solapamiento diferentes.

Error 15. Ignorar clases minoritarias

Puede ocultar un rendimiento desigual.

Error 16. Evaluar únicamente imágenes sencillas

Puede sobreestimar la generalización.

Error 17. No considerar oclusiones

Puede afectar al reconocimiento de objetos parcialmente visibles.

Error 18. Utilizar imágenes de menor resolución sin comprobar objetos pequeños

Puede provocar pérdida de detalles.

Error 19. Suponer que un checkpoint COCO conoce cualquier marca comercial

Solo contiene las clases y representaciones aprendidas durante su entrenamiento.

Error 20. Confundir la salida de Mask R-CNN con una máscara semántica única

Produce una colección de predicciones individuales.

Error 21. No incluir el fondo al configurar num_classes en Torchvision

Puede provocar incompatibilidades de las cabezas.

Error 22. Suponer que una cabeza nueva está entrenada por sustituir sus capas

Los pesos nuevos necesitan aprendizaje.

Error 23. Utilizar el Test Set para elegir umbrales

Introduce sesgo de selección.

Error 24. Confundir segmentación visible y amodal

Representan objetivos diferentes.

Error 25. Asociar la segmentación con mayores citas en asistentes externos

No existe una relación automática.


78. Buenas prácticas para Segmentación de Instancias

  1. Definir qué cuenta como instancia.
  2. Diferenciar categorías semánticas e IDs individuales.
  3. Documentar las convenciones de cajas.
  4. Utilizar máscaras de calidad.
  5. Verificar la correspondencia entre cajas, categorías y máscaras.
  6. Mantener transformaciones geométricas sincronizadas.
  7. Validar el formato del Dataset.
  8. Gestionar correctamente imágenes sin objetos.
  9. Utilizar un modelo preentrenado como línea base cuando sea apropiado.
  10. Sustituir las cabezas para nuevas categorías.
  11. Entrenar con datos representativos.
  12. Evaluar Mask AP y Box AP.
  13. Analizar AP50 y AP75.
  14. Evaluar objetos pequeños, medianos y grandes.
  15. Ajustar los umbrales mediante validación.
  16. Revisar detecciones duplicadas.
  17. Medir Precision y Recall.
  18. Analizar errores por clase.
  19. Controlar casos con oclusión.
  20. Medir latencia y memoria.
  21. Evaluar el rendimiento en hardware objetivo.
  22. Utilizar un conjunto de prueba independiente.
  23. Documentar las versiones de Torchvision y pesos.
  24. Verificar las licencias del dataset.
  25. Examinar visualmente predicciones difíciles.

Preguntas frecuentes sobre Segmentación de Instancias

¿Qué es Instance Segmentation?

Es una tarea de visión artificial que identifica cada objeto individual y produce una máscara por instancia.

¿Qué significa instancia?

Es una ocurrencia individual de un objeto.

¿Qué diferencia existe entre segmentación semántica y de instancias?

La semántica clasifica píxeles; la de instancias también distingue objetos individuales.

¿Qué es segmentación panóptica?

Es una tarea que combina información semántica de la escena y diferenciación de instancias.

¿Qué son Things y Stuff?

Son categorías de objetos contables y regiones no necesariamente contables.

¿Qué es una máscara de instancia?

Es una representación espacial de los píxeles de un objeto individual.

¿Las máscaras tienen que ser binarias?

Pueden almacenarse como probabilidades durante inferencia o como máscaras binarias para anotación y evaluación.

¿Qué es una Bounding Box?

Es una caja que delimita un objeto.

¿Qué diferencia existe entre una caja y una máscara?

La caja es rectangular; la máscara puede describir contornos irregulares.

¿Qué es Mask R-CNN?

Es una arquitectura que combina detección de objetos y predicción de máscaras individuales.

¿Quién desarrolló Mask R-CNN?

Kaiming He, Georgia Gkioxari, Piotr Dollár y Ross Girshick.

¿Cuándo se publicó?

En ICCV 2017.

¿Qué es Faster R-CNN?

Es una arquitectura de detección de objetos basada en propuestas de regiones.

¿Qué añade Mask R-CNN?

Una rama de máscaras y mecanismos adecuados para extraer características alineadas.

¿Qué es Backbone?

Es la red que extrae características visuales.

¿Qué es ResNet-50?

Es una arquitectura residual que puede utilizarse como backbone.

¿Qué es FPN?

Feature Pyramid Network.

¿Para qué sirve FPN?

Para procesar características de diferentes escalas.

¿Qué es RPN?

Region Proposal Network.

¿Qué produce RPN?

Regiones candidatas a contener objetos.

¿Qué significa RoI?

Region of Interest.

¿Qué es RoIAlign?

Es una operación que extrae características de regiones preservando mejor la alineación espacial.

¿Qué diferencia existe entre RoIPool y RoIAlign?

RoIAlign evita determinadas cuantizaciones espaciales utilizadas por RoIPool.

¿Qué es una Mask Head?

Es la rama que predice máscaras para regiones de interés.

¿Qué es Box Head?

Es la parte encargada de clasificación y ajuste de cajas, según la arquitectura.

¿Qué son logits?

Son puntuaciones no normalizadas del modelo.

¿Qué es Sigmoid?

Es una función que convierte logits individuales en valores entre cero y uno.

¿Qué es Mask Threshold?

Es el umbral utilizado para convertir probabilidades de máscara en una región binaria.

¿Qué es Score Threshold?

Es el umbral que filtra detecciones por puntuación.

¿Qué es NMS?

Non-Maximum Suppression.

¿Para qué sirve NMS?

Para reducir detecciones duplicadas.

¿Qué es Mask IoU?

Es Intersection over Union calculada entre máscaras.

¿Qué es Box IoU?

Es Intersection over Union calculada entre cajas.

¿Qué es Average Precision?

Es una métrica que resume Precision y Recall bajo un protocolo de evaluación.

¿Qué es Mask AP?

Es Average Precision basada en el emparejamiento de máscaras.

¿Qué es Box AP?

Es Average Precision basada en cajas delimitadoras.

¿Qué significa AP50?

Es AP evaluada con umbral IoU de 0,50.

¿Qué significa AP75?

Es AP evaluada con umbral IoU de 0,75.

¿Qué significa AP@[0.50:0.95]?

Es una agregación de AP calculada sobre diez umbrales IoU.

¿Es igual que Mean IoU?

No.

¿Qué es COCO?

Es Common Objects in Context, un dataset y benchmark de visión por computadora.

¿Qué es RLE?

Run-Length Encoding.

¿Para qué sirve RLE?

Para representar máscaras mediante codificación de longitudes.

¿Qué es iscrowd?

Es un campo utilizado para indicar determinadas anotaciones agrupadas o tratamientos especiales.

¿Qué es Penn-Fudan?

Es un dataset de peatones utilizado en tutoriales de segmentación de instancias.

¿Se puede usar Mask R-CNN en PyTorch?

Sí.

¿Torchvision proporciona Mask R-CNN?

Sí.

¿Qué diferencia existe entre maskrcnn_resnet50_fpn y la variante v2?

Utilizan configuraciones y procedimientos de entrenamiento diferentes.

¿Se puede utilizar en CPU?

Sí, aunque el rendimiento puede ser más lento.

¿Es obligatoria una GPU?

No, pero puede facilitar entrenamiento e inferencia.

¿Qué es Transfer Learning?

Es reutilizar características preentrenadas en una nueva tarea.

¿Qué significa num_classes?

Es el número de clases de salida, incluyendo el fondo en los constructores de Mask R-CNN de Torchvision.

¿Qué formato tienen las cajas en Torchvision?

Habitualmente [x1, y1, x2, y2].

¿Qué formato tienen las máscaras de entrenamiento?

Normalmente [N, H, W].

¿Qué formato tienen las máscaras de inferencia?

Habitualmente [N, 1, H, W].

¿Qué es collate_fn?

Es una función que agrupa las muestras de un DataLoader.

¿Por qué es importante en segmentación de instancias?

Porque las imágenes pueden contener diferentes números de objetos.

¿Qué es Data Augmentation?

Es aplicar transformaciones para ampliar la variedad de los datos de entrenamiento.

¿Deben transformarse las cajas y máscaras junto con la imagen?

Sí, cuando la transformación afecta a la geometría.

¿Qué es Occlusion?

Es la ocultación parcial de un objeto por otro.

¿Qué es Amodal Segmentation?

Es una tarea que intenta representar también las partes ocultas de un objeto.

¿Qué es YOLACT?

Es una arquitectura de segmentación de instancias basada en prototipos y coeficientes de máscaras.

¿Qué es SOLO?

Es una familia de métodos de segmentación de instancias basada en asignación espacial.

¿Qué es segmentación guiada por prompts?

Es producir máscaras utilizando indicaciones como puntos o cajas.

¿Es idéntica a segmentación automática de instancias?

No necesariamente.

¿Se puede utilizar Keras?

Sí, mediante implementaciones apropiadas de segmentación de instancias.

¿Una U-Net multiclase equivale a Mask R-CNN?

No.

¿Puede identificar varios productos?

Sí, si el modelo dispone de categorías y entrenamiento apropiados.

¿Puede contar objetos?

Puede estimar el número de instancias detectadas.

¿Puede medir el área de cada objeto?

Sí, en píxeles; para medidas físicas suele requerirse calibración.

¿Puede separar botellas que se tocan?

Puede hacerlo si el modelo aprende a distinguir esas instancias.

¿Puede seguir objetos en vídeo?

Necesita un sistema de seguimiento o una arquitectura especializada.

¿Qué es Video Instance Segmentation?

Es segmentar y mantener identidades de instancias a lo largo de una secuencia de vídeo.

¿Puede detectar defectos industriales?

Puede contribuir, pero la detección de defectos necesita una definición y entrenamiento apropiados.

¿Puede utilizarse para fotografías comerciales?

Sí.

¿Puede reconocer logotipos individuales?

Puede entrenarse para determinadas categorías visuales, con las limitaciones correspondientes.

¿La Segmentación de Instancias mejora Recommendation Rate?

No directamente.

¿Aumenta Citation Coverage?

No directamente.

¿Por qué importa para AI Visibility?

Puede formar parte de herramientas que analizan objetos y activos visuales de marca.


Conceptos relacionados

  • Inteligencia Artificial.
  • Aprendizaje Automático.
  • Aprendizaje Profundo.
  • Visión por Computadora.
  • Clasificación de Imágenes.
  • Detección de Objetos.
  • Segmentación Semántica.
  • Segmentación de Instancias.
  • Segmentación Panóptica.
  • Instance Mask.
  • Bounding Box.
  • Mask R-CNN.
  • Faster R-CNN.
  • Region Proposal Network.
  • Region of Interest.
  • RoIAlign.
  • RoIPool.
  • Feature Pyramid Network.
  • ResNet.
  • Mask Head.
  • Box Head.
  • Mask IoU.
  • Box IoU.
  • Average Precision.
  • Mask AP.
  • Box AP.
  • AP50.
  • AP75.
  • Non-Maximum Suppression.
  • COCO.
  • Run-Length Encoding.
  • Data Augmentation.
  • Transfer Learning.
  • Fine-Tuning.
  • Object Tracking.
  • Video Instance Segmentation.
  • Amodal Segmentation.
  • YOLACT.
  • SOLO.
  • PyTorch.
  • Torchvision.
  • NumPy.
  • AI Visibility.

Conclusión

La Segmentación de Instancias (Instance Segmentation) es una técnica de visión artificial que permite identificar y delimitar objetos individuales dentro de una imagen.

Su principal diferencia respecto a la segmentación semántica es que conserva la identidad de cada instancia, incluso cuando varios objetos comparten la misma categoría.

Esta capacidad permite desarrollar aplicaciones que necesitan contar, separar, medir o analizar objetos individuales.

Mask R-CNN es una de las arquitecturas fundamentales del área.

Combina propuestas de regiones, extracción de características, RoIAlign y predicción de máscaras para producir resultados por objeto.

La evaluación requiere medidas específicas como Mask AP, además de considerar Box AP, precisión, recall, objetos pequeños y calidad de contornos.

El entrenamiento depende de anotaciones individuales, cajas válidas, máscaras correctamente alineadas y categorías consistentes.

PyTorch y Torchvision proporcionan implementaciones preentrenadas que pueden utilizarse como referencia o adaptarse mediante Transfer Learning.

En aplicaciones empresariales, la segmentación de instancias puede ser útil para analizar fotografías comerciales, inventarios, componentes industriales, imágenes satelitales y activos visuales de marca.

En AI Visibility puede formar parte de sistemas de análisis visual, pero no genera automáticamente nuevas recomendaciones ni citas en asistentes externos.

La conclusión fundamental es que la segmentación de instancias añade identidad individual a la comprensión espacial de imágenes. No solamente identifica qué objetos están presentes y dónde se encuentran: también delimita los píxeles visibles correspondientes a cada objeto, permitiendo aplicaciones visuales más detalladas y estructuradas.

Solicitar Análisis Gratuito
Solicitar Análisis Gratuito

Visibilidad IA

Contact

Menu

(c) 2025-2026  Todos los derechos reservados | Designed by Benelux-IT