Cómo detectar y clasificar imágenes industriales con Azure AI Vision: paso a paso
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?