Anomaly Detection
La detección de anomalías señala puntos de datos, eventos o regiones de imágenes que se desvían de los patrones normales. Tipos de anomalías, métodos principales, inspección visual y código.
La detección de anomalías consiste en identificar puntos de datos, eventos o regiones de imagen que se desvían de un patrón establecido de comportamiento normal. También se denomina detección de valores atípicos y, en la visión artificial aplicada a la fabricación, suele llamarse detección de defectos o inspección visual automatizada. Las anomalías son poco frecuentes, variadas y a menudo nunca se han visto antes. Por eso, la mayoría de los métodos aprenden cómo es lo normal a partir de datos mayoritariamente normales, asignan a cada nueva entrada una puntuación de anomalía según cuánto se aleja del patrón y marcan las puntuaciones que superan un umbral. Entre sus aplicaciones están detectar arañazos y abolladuras en las líneas de producción, transacciones fraudulentas con tarjetas, intrusiones en redes, maquinaria averiada y hallazgos sospechosos en el análisis de imágenes médicas.
Tipos de anomalías#
- Anomalías puntuales: Un valor o una imagen que se aleja mucho del resto, como una transacción 50 veces superior al gasto habitual de un cliente.
- Anomalías contextuales: Valores normales en un contexto y anómalos en otro. Una temperatura exterior de 30 °C es habitual en julio en Nueva York y alarmante allí en enero.
- Anomalías colectivas: Secuencias o grupos que son anómalos en conjunto aunque cada elemento parezca normal, como una oleada de intentos de inicio de sesión desde muchos países en un minuto, cada uno de ellos insignificante por separado.
Cómo funciona la detección de anomalías#
Los métodos se diferencian en cómo modelan los datos normales:
- Reglas estadísticas: Marcan los valores que se alejan de la media más de un número establecido de desviaciones estándar o quedan fuera de un intervalo definido por el rango intercuartílico.
- Distancia y densidad: Marcan los puntos alejados de sus vecinos más próximos o situados en regiones dispersas, como hace el factor local de valores atípicos.
- Aislamiento: Un Isolation Forest divide los datos con cortes aleatorios; las anomalías quedan aisladas tras menos cortes que los puntos normales.
- Modelos de una clase: Una máquina de vectores de soporte (SVM) de una clase aprende un límite alrededor de los datos de entrenamiento y marca los puntos que quedan fuera.
- Reconstrucción: Un autocodificador entrenado únicamente con datos normales reconstruye bien las entradas normales y mal las anomalías, por lo que el error de reconstrucción sirve como puntuación de anomalía.
- Métodos visuales basados en características: PatchCore almacena en un banco de memoria las características de parches de imágenes sin defectos, extraídas por una red preentrenada con ImageNet, y puntúa cada parche de prueba según su distancia al parche almacenado más cercano. En la prueba MVTec AD alcanza un AUROC a nivel de imagen de hasta el 99,6 %.
scikit-learn distingue entre la detección de valores atípicos, en la que los datos de entrenamiento ya contienen algunas anomalías, y la detección de novedades, en la que los datos de entrenamiento están limpios y solo se puntúan las entradas nuevas. El siguiente script entrena un Isolation Forest con lecturas de una máquina en buen estado y puntúa cuatro lecturas nuevas:
import numpy as np
from sklearn.ensemble import IsolationForest
# 1,000 readings from a healthy machine: temperature (C) and vibration (mm/s)
rng = np.random.default_rng(0)
normal = rng.normal([60, 2.0], [3, 0.3], size=(1000, 2))
# Learn what normal looks like, then score new readings
detector = IsolationForest(random_state=0).fit(normal)
new = np.array([[61, 2.1], [59, 1.8], [75, 2.0], [60, 4.5]])
labels = detector.predict(new) # 1 = normal, -1 = anomaly
scores = detector.decision_function(new) # below 0 = anomaly
for (temp, vibration), label, score in zip(new, labels, scores):
status = "anomaly" if label == -1 else "normal"
print(f"{temp:.0f} C, {vibration:.1f} mm/s -> {status} (score {score:+.3f})")Las dos lecturas cercanas a la media de entrenamiento obtienen puntuaciones de +0,080 y +0,076 y no se marcan. La lectura de sobrecalentamiento, a 75 °C, obtiene −0,139, y la lectura con más del doble de la vibración habitual obtiene −0,152, así que ambas se marcan, aunque el modelo nunca haya visto ejemplos de ninguno de esos fallos.
Detección visual de anomalías#
La inspección visual sigue una de dos vías, según se puedan recopilar y etiquetar los defectos. Cuando se conocen los tipos de defectos y hay ejemplos disponibles, los modelos de detección de objetos o segmentación de instancias entrenados con clases como arañazo, abolladura y grieta localizan e identifican cada defecto. Un modelo de detección o segmentación YOLO26 ajustado con esas clases devuelve una caja o máscara, una clase y una puntuación de confianza para cada defecto que encuentra en una imagen. Cuando los defectos son poco frecuentes o impredecibles, los métodos de una sola clase se entrenan únicamente con imágenes de piezas correctas y marcan cualquier elemento distinto, lo que también permite detectar tipos de defectos que nadie había previsto. El conjunto de datos MVTec AD, con más de 5.000 imágenes de 15 categorías de objetos y texturas y solo imágenes sin defectos en sus conjuntos de entrenamiento, es un benchmark estándar para este caso; Ultralytics Platform también lo aloja como conjunto de datos de detección para la vía supervisada. Bibliotecas de código abierto como Anomalib implementan PatchCore y métodos similares.
Los detectores de anomalías se evalúan con métricas independientes del umbral, como el área bajo la curva ROC (AUC), y con precisión y recall en el umbral elegido, que reflejan las falsas alarmas y los casos no detectados que verán realmente los operadores. Como las anomalías son poco frecuentes, el umbral suele establecerse a partir de las puntuaciones de las imágenes de validación normales, por ejemplo, con el valor que solo supera el 1 % de las piezas en buen estado.
Detección de anomalías y términos relacionados#
- Detección de objetos: Encuentra instancias de un conjunto fijo de clases etiquetadas. Un detector de objetos entrenado con defectos solo encuentra los tipos de defecto para los que se entrenó.
- Deriva de datos: Cambio en la distribución de todo un flujo de entradas a lo largo del tiempo, como una semana de imágenes más oscuras. La detección de anomalías puntúa entradas individuales.
- Detección fuera de distribución (OOD): Marca las entradas que no se parecen a los datos de entrenamiento de un modelo para que este pueda abstenerse o derivarlas a una persona; es la detección de novedades aplicada a las entradas de un modelo desplegado.
- Detección de cambios: Compara imágenes de la misma escena tomadas en distintos momentos, como imágenes de satélite anteriores y posteriores a una inundación, para encontrar qué ha cambiado.










