lunes, 16 de diciembre de 2024

Computer Vision

 Azure AI Vision

El servicio Face de Azure AI ofrece algoritmos de IA que detectan, reconocen y analizan caras humanas en las imágenes. El software de reconocimiento facial es importante en muchos escenarios, como la identificación, el control de acceso sin contacto y el desenfoque automático facial para la privacidad.

Existen varios servicios de rostros:

  • Detect faces in an image: Detecta la ubicación de uno o más rostros humanos en imágenes, junto con atributos como pose, máscara facial y puntos de referencia faciales.
  • Face liveness detection: Detecta si el rostro de una imagen es una persona real o una fotografía. Esto resulta útil para evitar ataques de suplantación de identidad.
  • Portrait processing: Detecta la ubicación de uno o más rostros humanos en imágenes, junto con atributos como pose, máscara facial y puntos de referencia faciales.
  • Photo ID matching: Haga coincidir la foto de una persona con un documento de identidad con fotografía para verificar su identidad.
Para el reconocimiento de texto:
  • Extract text from images: Utilice la API Read para extraer texto impreso y escrito a mano en los idiomas admitidos de imágenes, archivos PDF y TIFF. La función de reconocimiento óptico de caracteres (OCR) admite imágenes y documentos con idiomas combinados y no requiere especificar el idioma.

Amazon Rekognition

Amazon Rekognition proporciona API que puede detectar y analizar rostros en imágenes y vídeos. Estas operaciones incluyen funcionalidades como la detección de puntos de referencia faciales, el análisis de emociones y la comparación de rostros.

Amazon Rekognition puede detectar texto en imágenes y vídeos. A continuación, puede convertir el texto detectado en texto legible por una máquina.

jueves, 5 de diciembre de 2024

Procesar textos con TRANSFORMERS


Para procesar textos con el objetivo de extraer información sobre personas y datos asociados utilizando un modelo transformer, como los de la familia BERT o GPT, se puede seguir los siguientes pasos:

1. Definir el objetivo

Decidir qué tipo de información extraer del texto. Por ejemplo:

  • Entidades nombradas: nombres de personas, lugares, fechas, números de teléfono.
  • Relaciones entre entidades: por ejemplo, quién trabaja para quién.
  • Características de personas: edad, dirección, profesión.

2. Elegir un modelo adecuado

Elegir un modelo dependiendo de las necesidades:

  • NER (Reconocimiento de Entidades Nombradas): Usa un modelo preentrenado como BERT o RoBERTa y ajustado para NER.
  • QA (Question Answering): Para plantear preguntas al modelo sobre el texto.
  • Clasificación/Segmentación de texto: Para extraer datos específicos, se puede entrenar un modelo para identificar las entidades que nos interesan.
Modelos recomendados:
  • SpaCy: Una biblioteca práctica con modelos NER listos para usar.
  • Hugging Face Transformers: Ofrece modelos preentrenados y ajustes para tareas específicas.

3. Preparar el texto

Antes de procesar el texto, es necesario limpiarlo y preprocesarlo:

  • Limpieza básica:
    • Elimina caracteres no deseados (por ejemplo, emojis, HTML).
    • Estándariza el formato (como mayúsculas/minúsculas).
  • Tokenización: Utiliza una tokenización adecuada al transformer (como WordPiece para BERT).

4. Configurar el pipeline de procesamiento

Con Hugging Face se puede usar un pipeline para extraer información con modelos preentrenados.

Ejemplo: Reconocimiento de entidades nombradas (NER)

python

from transformers import pipeline # Carga un modelo preentrenado para NER ner_pipeline = pipeline("ner", model="dbmdz/bert-large-cased-finetuned-conll03-english") text = "John Doe lives in New York and works at OpenAI." entities = ner_pipeline(text) # Muestra las entidades detectadas for entity in entities: print(f"Texto: {entity['word']}, Tipo: {entity['entity']}, Confianza: {entity['score']}")


Ejemplo: Extracción de información mediante QA

Si tienes una pregunta específica, usa un pipeline de QA:

python

from transformers import pipeline # Carga un modelo de preguntas y respuestas qa_pipeline = pipeline("question-answering", model="deepset/roberta-base-squad2") context = "John Doe, a software engineer, works at OpenAI. He lives in New York." question = "¿Dónde vive John Doe?" result = qa_pipeline(question=question, context=context) print(f"Respuesta: {result['answer']}")



5. Opcional: Entrenamiento adicional

Si los modelos preentrenados no detectan entidades o datos específicos que nos interesan:

  1. Recopilar datos etiquetados: Usar herramientas como Prodigy o Label Studio.
  2. Entrenar un modelo:
    • Se puede afinar un transformer con Hugging Face y un dataset etiquetado como CoNLL-2003 o uno propio.
Código básico para ajustar un modelo NER:
python

from transformers import AutoModelForTokenClassification, TrainingArguments, Trainer
from datasets import load_dataset
# Carga el dataset
dataset = load_dataset("conll2003")
# Carga el modelo preentrenado
model = AutoModelForTokenClassification.from_pretrained("bert-base-cased", num_labels=len(label_list))
# Configura el entrenamiento
training_args = TrainingArguments(
output_dir="./results",
evaluation_strategy="epoch",
learning_rate=2e-5,
per_device_train_batch_size=16,
num_train_epochs=3,
)
trainer = Trainer(
model=model,
args=training_args,
train_dataset=dataset["train"],
eval_dataset=dataset["validation"],
)
# Entrena
trainer.train()

6. Postprocesamiento

Una vez extraída la información:

  • Normalizar los datos (por ejemplo, conviertir fechas a un formato estándar).
  • Validar las entidades encontradas (por ejemplo, contra bases de datos externas).
  • Almacenar los resultados en un formato estructurado (JSON, CSV, etc.).



viernes, 29 de noviembre de 2024

Reconocimiento de placas de automobiles

¿Qué es el reconocimiento de placas de licencia?

ANPR (Automatic number plate recognition) o Automatic license plate recognition (ALPR) son las siglas en ingles del reconocimiento automático de patentes, que básicamente consiste en la extracción de información de la patente del vehículo a partir de una imagen o una secuencia de imágenes. 

El reconocimiento de placas de licencia, también conocido como reconocimiento automático de placas de licencia (RALP), es una tecnología que utiliza algoritmos de procesamiento de imágenes y aprendizaje automático para identificar y reconocer automáticamente los números de las placas de licencia de los vehículos. Esta tecnología se basa en la captura de imágenes de las placas de licencia a través de cámaras y el análisis de estas imágenes para extraer los caracteres alfanuméricos que componen los números de las placas.

Palabras claves

ANPR (Automatic number plate recognition) o Automatic license plate recognition (ALPR) son las siglas en ingles del reconocimiento aut omático de patentes, que básicamente consiste en la extracción de información de la patente del vehículo a partir de una imagen o una secuencia de imágenes. 

Tecnología utilizada en el reconocimiento de placas de licencia

Procesamiento de imágenes

Para llevar a cabo el reconocimiento de placas de licencia, se utiliza el procesamiento de imágenes. Este proceso implica la captura de imágenes de Alta resolución de las placas de licencia a través de cámaras especializadas. A continuación, se aplican algoritmos de procesamiento de imágenes para mejorar la calidad de las imágenes, corregir distorsiones y extraer los caracteres alfanuméricos de las placas.

Aprendizaje automático y redes neuronales

Además del procesamiento de imágenes, el reconocimiento de placas de licencia también hace uso de técnicas de aprendizaje automático y redes neuronales. Estas técnicas permiten entrenar algoritmos para reconocer y clasificar los caracteres de las placas de licencia, mejorando así la precisión y la capacidad de adaptación del sistema a diferentes situaciones y condiciones de captura de imágenes.

Principales modelos

YOLO (You Only Look Once)
  • Características: YOLO es un modelo de detección de objetos en tiempo real. Es muy eficiente para detectar y delimitar objetos como patentes en imágenes o videos.
  • Preentrenado: Está entrenado con el dataset COCO (Common Objects in Context), que incluye automóviles y otros objetos, pero puedes entrenarlo específicamente para detectar placas.
  • Implementación:
    Necesitarás crear un dataset anotado con las placas de autos.
    Puedes usar herramientas como LabelImg para etiquetar placas en imágenes.
Faster R-CNN
  • Características: Modelo robusto para detección de objetos con precisión alta, aunque no es tan rápido como YOLO.
  • Preentrenado: Utiliza datasets genéricos como COCO o Pascal VOC.
  • Ventaja: Fácil de ajustar a la tarea específica de detección de placas.
Detectron2 (de Facebook AI)
  • Características: Plataforma de detección de objetos de última generación basada en Faster R-CNN, Mask R-CNN y otros modelos avanzados.
  • Preentrenado: Puedes comenzar con un modelo base y realizar transfer learning con tu dataset de patentes.
EAST (Efficient and Accurate Scene Text Detector)
  • Características: Especializado en la detección de texto en imágenes.
  • Preentrenado: Muy utilizado como paso previo al OCR. Puedes usarlo para identificar áreas de texto (como placas) y luego aplicar un modelo OCR.
CRNN (Convolutional Recurrent Neural Network)
  • Características: Ideal para tareas OCR después de detectar la región de interés (ROI) de las placas con un detector de objetos.
  • Preentrenado: Hay modelos disponibles entrenados en texto en ambientes diversos.

¿Cómo funciona el reconocimiento de placas de licencia?

El funcionamiento del reconocimiento de placas de licencia consta de varios pasos principales. En primer lugar, las cámaras capturan imágenes de las placas de licencia de los vehículos. Luego, estas imágenes son procesadas mediante algoritmos de extracción de características para identificar y aislar los caracteres alfanuméricos de las placas. A continuación, se utilizan algoritmos de reconocimiento de patrones y aprendizaje automático para clasificar y reconocer los caracteres y formar las secuencias de números y letras que componen los números de las placas. Finalmente, se realiza la verificación y validación de los resultados obtenidos, y se generan informes o se toman acciones dependiendo de la aplicación específica del sistema de reconocimiento.

Repositorios y proyectos

Como referencia sabemos que la solución implementada en autopistas y CNSI tiene una efectividad del 96% (sobre 56 casos tomados).

License Plate Recognizer (Argentina)

Modelo basado en Python + OCR. Utiliza OpenCV para preprocesar imágenes y detectar regiones donde se encuentran las matrículas mediante técnicas como la binarización y la detección de bordes y Tesseract OCR, una herramienta de código abierto, para extraer el texto de las matrículas una vez que son segmentadas de las imágenes

Resultado: localizar patentes: 8%  Efectividad total 0%. Sólo funciona bien con las imágenes propias del proyecto.

Automatic Number Plate Recognition Proof of Concept with Azure Cognitive Services

Utiliza Azure Cognitive Services para reconocimiento de patentes.
Resultado: no se pudo probar todavía x falta de permisos de acceso a los servicios.

Reconocimientos Automático de Matrículas ANPR

TP de un alumno de  Ingeniería en Electrónica. Están muy bien aplicados los conceptos básicos sobre acondicionamiento y transformaciones de imágenes (smoothing, averaging, median blurring, erode y dilate).


SimpleLPR - .NET

Componente publicado en Nuget. En la página de Warelogic se publica un costo por única vez de $450.
Resultado: localizar patentes: 98%. Efectividad total 82%.

License plate recognition using CNN

Jupiter Notebook (Python) que utiliza deep learning (CNN - Convolucional Neural Network) para la detección de patentes. Utiliza OpenCV, TensorFlow, Keras y bibliotecas de Python (Sklearn).
Está optimizado para patentes de la India.
La ventaja de este proyecto es que se puede reentrenar.
Resultado: localizar patentes: 53%. Efectividad total 0%.

OpenALPR es una biblioteca de código abierto para el reconocimiento automático de matrículas escrita en C++ con enlaces en C#, Java, Node.js, Go y Python. La biblioteca analiza imágenes y secuencias de vídeo para identificar matrículas. El resultado es la representación de texto de cualquier carácter de la matrícula.
Actualmente no cuenta con reconocimientos de patentes de Argentina. Se hicieron pruebas con varioas regiones.
Resultado: localizar patentes: 63%. Efectividad total 25%.

Conclusiones

Metricas de los 3 proyectos (sobre un total de 100 casos)

Más allá del tratamiento de imágenes para reconocer las patentes está el desarrollo de la solución que toma las imágens de la cámara de video, que debe permitir definir regiones y generar la salida para el tratamiento de cada imagen y luego guardar el resultado de las capturas realizadas.
Esta solución debería dar la posibilidad de obtener la última patente registrada en un puesto de control a un momento determinado.

jueves, 31 de octubre de 2024

Azure Chat Bot (Copilotos)

En Azure existen principalmente dos alternativas para crear Chat Bot con IA:

  • Copilot Studio 
  • Azure Bot Services
Para ayudarnos a decidir cual es mejor para cada escenario, es util este post:

Para profuncizar en el tema

En este ultimo curso, se utilizan los siguientes servicios:
  • Microsoft.KeyVault
  • Microsoft.MachineLearningServices
  • Microsoft.Storage
  • Application Insights
  • Azure OpenAI Service
  •  Azure AI Search

martes, 29 de octubre de 2024

Infraestructura para AI

Data Lake: un data lake es un repositorio centralizado diseñado para almacenar, procesar y proteger grandes cantidades de datos estructurados, semiestructurados o no estructurados. Puede almacenar datos en su formato nativo y procesar cualquier variedad de datos, sin importar los límites de tamaño.

DataWarehouse: un almacén de datos o repositorio de datos es una colección de datos estructurados orientada a un determinado ámbito, integrado, no volátil y variable en el tiempo, que ayuda a la toma de decisiones.

Infraestructura "modelo" de un Data Lake.


Fuente: Video de RD

Cómo construir un Data Lake




DataLakeHouse: es una arquitectura de datos moderna que crea una plataforma única mediante la combinación de los beneficios clave de los data lakes (grandes repositorios de datos sin procesar en su forma original) y los almacenes de datos (conjuntos organizados de datos estructurados).


Proveedores líderes (históricos) en data lakes:


Actualmente, cada plataforma (Cloud) tiene sus herramientas:




Opciones de Data Lake Open Source:




  • AirByte: extraccion de datos

  • PostgreSQL / BigQuery

  • Airflow: herramienta de orquestacion procesos

  • DBT: para estructurar procesos de transformacion de datos. 

  • Superset: idem PowerBI



Otra infraestructura Open Source:


Ingeniería de datos

Herramientas más utilizadas para la carga de datos.




Carga de datos (en tiempo real)

  • Spark

  • kafka

Traditional-structured Data (herramientas que no requieren saber programar)

  • Azure Data Factory

  • AWS Glue

  • Google Dataflow

  • IBM Infosphere

Unstructured Data (permiten tomar un documento y extraer información)

  • Spark (requiere programacion, Python)

  • nifi




Data Marurity Index (DMI)

Niveles de madurez en el uso de datos - Data Marurity Index (DMI)

Se puede bajar PDF de evaluación aquí.



** Modelos de recomentacion (viste esa pelicula?)



Advanced Analytics

Ver definición Google

El análisis avanzado es el proceso de utilizar técnicas complejas de machine learning (ML) y visualización para obtener información de datos más allá de la inteligencia empresarial tradicional. Las organizaciones modernas recopilan grandes volúmenes de datos y los analizan para descubrir patrones y tendencias ocultos. Utilizan la información para mejorar la eficiencia de los procesos empresariales y la satisfacción del cliente. Con el análisis avanzado, puede ir un paso más allá y utilizar los datos para la toma de decisiones futuras y en tiempo real. Las técnicas de análisis avanzado también extraen conclusiones a partir de datos no estructurados, como los comentarios o las imágenes de las redes sociales. Pueden ayudar a su organización a resolver problemas complejos de manera más eficiente. Los avances en la computación en la nube y el almacenamiento de datos han hecho que el análisis avanzado sea más asequible y accesible para todas las organizaciones.


Advanced Analytics es poder dialogar con los datos. Es la combinación de Data Mining con BI. Es detectar patrones dentro de mi información.

Si bien las tecnologias avanzan hacia el low code o no code, surgen estas otras especialidades.



Machine Learning Engeneer

Ver definición Google

Un Professional Machine Learning Engineer crea, evalúa, produce y optimiza modelos de AA (Aprenidzaje Automático) mediante las tecnologías de Cloud y el conocimiento de modelos y técnicas comprobados. El ML Engineer controla conjuntos de datos grandes y complejos, y crea código repetible y reutilizable.






MLOps (Machine Learning Operations)

MLOps tiene como objetivo implementar y mantener modelos de aprendizaje automático en producción de manera confiable y eficiente.

  • mlflow (herramienta Open Source de databricks)

  • Azure Machine Learning (Microsoft)

  • Amazon SageMaker (Amazon)

  • Vertex AI (Google)



Gobierno de Datos

Data Hub: es una herramienta de codigo libre. Sirve para armar un catdefinir un Catálogo y un Diccionario de datos, definir que es cada dato y para qué se usa. Otras similares son PureView (Microsoft), Unity (DataBricks), 


Conceptos varios:

  • Data Stewards (tecnico): es el guardián de las políticas de datos dentro de la organización. Por tanto, debe definir, implementar y mantener las reglas y estándares que rigen el uso de los datos para que sean fiables y se les dé un uso correcto. Calidad de los datos. Estos deben estar completos y ser coherentes

  • Data Owners (negocio): los propietarios de datos tienen responsabilidades específicas relacionadas con el dominio, incluida la seguridad de los datos, el control de acceso y la toma de decisiones dentro de sus áreas de datos asignadas.

  • Auditoria: identificar patrones y tendencias en los datos para detectar posibles fraudes y errores, así como para mejorar la eficiencia y eficacia del proceso de auditoría y también puede ayudar a las empresas a identificar nuevas oportunidades de negocio y a mejorar la toma de decisiones.

  • Data Lineage (trazabilidad): el linaje de datos es el proceso de rastrear el flujo de datos a lo largo del tiempo, facilitando la comprensión de dónde se han originado los datos, cómo han cambiado y su destino final dentro de la canalización de datos.

  • Data Quality: se refiere al grado en que los datos cumplen con los estándares y requisitos establecidos para su uso en la empresa.

  • Data LifeCycle: el ciclo de vida de los macrodatos consta de cuatro fases: recopilación de datos, almacenamiento de datos, análisis de datos y creación de conocimiento

I


miércoles, 23 de octubre de 2024

RAG with Azure AI Search

RAG (Retrieval Augmented Generation) es el enfoque más común que se utiliza para que los LLM respondan preguntas basadas en los datos de un dominio en particular. Azure AI Search es un potente motor de búsqueda, con muchas características diseñadas específicamente para aplicaciones RAG. 

Demostraremos una recuperación óptima mediante la búsqueda híbrida con el clasificador semántico, mostraremos la nueva característica de vectorización integrada para la ingesta de datos basada en la nube y analizaremos la optimización del almacenamiento vectorial.

Video  https://www.youtube.com/watch?v=ys9CYtqP2Ow 

Español: https://www.youtube.com/watch?v=JLf5kVgVFFA








Código de ejemplo "ChatGPT + Enterprise data with Azure OpenAI and Azure AI Search (.NET)"

https://github.com/Azure-Samples/azure-search-openai-demo-csharp 

Mas info en: 

https://github.com/microsoft/RAG_Hack?tab=readme-ov-file#raghack-lets-build-rag-applications-together

viernes, 18 de octubre de 2024

Ejemplo de personalización de Modelos de Lenguaje (LM) con RAG

 El siguiente es un ejemplo de modelo de lenguaje personalizado con RAG (Retrieval Aumented Generation)

Proyecto: eShopSupport

Video: https://reactor.microsoft.com/es-es/reactor/events/23333/ 

Soporta los siguientes casos de uso: 

  • Text classification, applying labels based on content
  • Sentiment analysis based on message content
  • Summarization of large sets of text
  • Synthetic data generation, creating test content for the sample
  • Chat bot interactions with chat history and suggested responses

De este proyecto se desprenden las siguientes herramientas y técnicas:

.Net Aspire: es una herramienta completa para el diagnóstico y la supervisión de aplicaciones. El panel permite realizar un seguimiento estrecho de varios aspectos de la aplicación, incluidos registros, seguimientos y configuraciones de entorno, en tiempo real.

Redis: plataforma de bases de datos en tiempo real. Redis es un motor de base de datos en memoria, basado en el almacenamiento en tablas de hashes pero que opcionalmente puede ser usada como una base de datos durable o persistente.