(+351) 21 24 10006  ·  info@bconcepts.pt
Carnaxide, Lisboa

Cómo detectar y clasificar imágenes industriales con Azure AI Vision: paso a paso

João Barros 31 de July de 2026 4 min de lectura

Este tutorial muestra cómo usar Azure AI Vision para detectar y clasificar defectos en imágenes industriales (por ejemplo, rayadas o fisuras). El enfoque es útil para automatizar la inspección visual, reducir el error humano e integrar modelos de visión en pipelines de producción.

Requisitos previos

  • Cuenta Azure con suscripción activa y permisos para crear recursos.
  • Recurso Azure AI Vision (o Azure OpenAI Vision) creado y clave/endpoint disponibles.
  • Python 3.8+ instalado localmente y pip.
  • Conjunto de imágenes etiquetadas para entrenamiento (carpeta con subcarpetas por clase: ok, defecto).
  • Conocimientos básicos de Python y línea de comandos.

Paso 1: Preparar los datos y estructura de carpetas

Organice las imágenes en dos carpetas principales: train/ok, train/defecto, y opcionalmente validation/ok, validation/defecto. Imágenes pequeñas (224x224) aceleran el entrenamiento. Verifique formatos comunes (.jpg, .png).

# Estrutura de exemplo
dataset/
  train/
    ok/
      img001.jpg
      img002.jpg
    defeito/
      img101.jpg
  validation/
    ok/
    defeito/

Paso 2: Crear y configurar el recurso Azure AI Vision

En el Portal Azure cree un recurso 'Azure AI Vision' (o similar). Guarde el endpoint y la clave. Los necesitará para llamadas de inferencia y, si usa entrenamiento en el servicio, para subir los datos.

Paso 3: Entrenar un modelo de clasificación local (opcional) con PyTorch/fastai

Si prefiere entrenar localmente antes de usar en Azure, un flujo sencillo con fastai acelera el proceso. Esto genera un modelo que puede ser convertido y publicado.

pip install fastai==2.7.12 torchvision pillow --quiet

from fastai.vision.all import *
path = Path('dataset')
dls = ImageDataLoaders.from_folder(path/'train', valid_pct=0.2, item_tfms=Resize(224))
learn = cnn_learner(dls, resnet18, metrics=accuracy)
learn.fine_tune(3)
learn.export('model.pkl')

Paso 4: Convertir y empaquetar el modelo para inferencia (ONNX)

Convertir a ONNX permite el despliegue en varios servicios. Abajo un ejemplo mínimo de exportación a ONNX a partir de un modelo PyTorch/fastai.

import torch
from torchvision import models

# exemplo com um modelo simples do PyTorch
model = models.resnet18(pretrained=False)
model.eval()
dummy_input = torch.randn(1,3,224,224)
torch.onnx.export(model, dummy_input, 'model.onnx', opset_version=11)

Paso 5: Desencadenar el modelo para inferencia (Azure)

Existen varias opciones: usar Azure Machine Learning para endpoints o usar Azure Container Instances con un servicio que sirva ONNX. Para simplicidad, mostraremos cómo hacer inferencia directa con el servicio Azure AI Vision para detección/clasificación cuando esté disponible (API de análisis/assessment) o llamar a un endpoint de modelo alojado.

# Exemplo de chamada HTTP simples para um endpoint de inferência básico
import requests

endpoint = 'https://.cognitiveservices.azure.com/vision/models//analyze'
key = ''
image_path = 'dataset/validation/defeito/img101.jpg'
with open(image_path, 'rb') as f:
    img_data = f.read()

headers = {'Ocp-Apim-Subscription-Key': key, 'Content-Type': 'application/octet-stream'}
resp = requests.post(endpoint, headers=headers, data=img_data)
print(resp.status_code, resp.text)

Paso 6: Hacer inferencia por lotes y evaluar métricas

Ejecute la inferencia en todas las imágenes de validación y calcule accuracy, precision y recall para identificar puntos débiles (clases desbalanceadas, falsos positivos).

import os
from sklearn.metrics import classification_report

y_true = []
y_pred = []
for cls in ['ok','defeito']:
    folder = f'dataset/validation/{cls}'
    for fname in os.listdir(folder):
        path = os.path.join(folder, fname)
        # chamar a função que faz a request e retorna a classe predita
        pred = inferir_imagem(path)  # implemente conforme exemplo anterior
        y_true.append(cls)
        y_pred.append(pred)

print(classification_report(y_true, y_pred))

Verificar el resultado

Confirme que las predicciones coinciden con las etiquetas de validación. Revise la matriz de confusión y las métricas: una accuracy por encima del 85% es un buen objetivo inicial, pero depende del caso. Pruebe imágenes nuevas del proceso productivo y evalúe los falsos negativos (muy críticos en la inspección).

Conclusión

Con Azure AI Vision y un ciclo sencillo de entrenamiento/inferencia es posible automatizar la inspección visual industrial. Próximos pasos: mejorar los datos (aumentos, más imágenes), probar Azure Machine Learning para despliegue gestionado y monitorizar la deriva. Consejo: empiece por comprobar clases desbalanceadas y aumente imágenes sintéticamente antes de complicar el modelo — ¿qué problema de inspección pretende resolver primero?