jueves, 2 de enero de 2025

Retrieval Augmented Generation (RAG)

RAG es un enfoque en el campo de la inteligencia artificial que combina modelos de recuperación de información con modelos generativos de lenguaje para mejorar la precisión y la relevancia de las respuestas generadas. Este enfoque permite que los modelos generativos accedan a información externa en tiempo real, lo que es útil para manejar tareas que requieren datos actualizados o específicos, como responder preguntas basadas en documentos o ejecutar búsquedas dinámicas.





¿Cómo funciona RAG?

  1. Componente de Recuperación (Retriever):

    • Identifica información relevante a partir de una base de datos, corpus de texto, o fuente externa.
    • Métodos comunes:
      • Sistemas tradicionales: TF-IDF, BM25.
      • Modelos de embeddings: Dense retrievers como DPR (Dense Passage Retrieval) que utilizan vectores para comparar similitudes semánticas.
  2. Componente Generativo (Generator):

    • Toma los documentos recuperados y genera una respuesta basada en la información contenida en ellos.
    • Modelos típicos: GPT, T5, o BART.
  3. Pipeline completo:

    • Dado un input (como una pregunta), el retriever busca información relevante, y el generator usa esta información para crear una respuesta natural y contextual.


Ejemplos de uso de RAG

  1. Chatbots empresariales:

    • Responden preguntas específicas sobre documentos de política interna, bases de conocimiento o contratos legales.
    • Ejemplo: Un chatbot que accede a manuales de empleados para responder preguntas sobre beneficios.
  2. Sistemas de búsqueda mejorados:

    • Motores de búsqueda que combinan la recuperación con respuestas explicativas.
    • Ejemplo: Un motor de búsqueda académico que genera un resumen de los papers relevantes.
  3. Asistentes de soporte técnico:

    • Generan instrucciones personalizadas basadas en guías técnicas.
    • Ejemplo: Un asistente que ayuda a resolver problemas técnicos con base en manuales de productos.
  4. Generación de contenido personalizado:

    • Utilizado para redactar informes o resúmenes basados en datos recopilados.
    • Ejemplo: Herramientas que generan reportes financieros combinando datos recientes.


Ejemplos de modelos RAG existentes

  1. Dense Passage Retrieval (DPR):

    • Combina embeddings densos con modelos generativos.
    • Ejemplo de uso: Enriquecer respuestas en asistentes virtuales.
  2. Google Bard y OpenAI ChatGPT con Plugins:

    • Usan fuentes externas en tiempo real para recuperar información y generar respuestas.
  3. RAG Framework (Meta AI):

    • Combina retrieval y generación utilizando modelos como BART para respuestas basadas en contexto.
  4. Haystack (de deepset):

    • Framework modular de código abierto para implementar sistemas de preguntas y respuestas basados en RAG.


Recursos para desarrollar un sistema RAG

    1. Bibliotecas y herramientas
  • Haystack: Framework que soporta RAG con múltiples backend retrievers y generadores.
    GitHub
  • LangChain: Facilita la integración de RAG para aplicaciones conversacionales.
    GitHub
  • Pinecone: Base de datos vectorial para indexar y buscar embeddings.
  • Weaviate: Base de datos para búsquedas semánticas.
    2. Modelos preentrenados
  • DPR (Dense Passage Retrieval): Implementación de Facebook AI.
  • T5 y BART: Modelos generativos efectivos para tareas de generación de texto.
  • OpenAI GPT API: Compatible con integración RAG mediante plugins.
    3. Datasets
  • Natural Questions (NQ): Preguntas reales de usuarios con respuestas basadas en documentos.
    Google Dataset
  • SQuAD (Stanford Question Answering Dataset): Dataset clásico para preguntas y respuestas.
  • MS MARCO: Dataset para recuperación y generación de respuestas a partir de texto.
    4. Infraestructura
  • Bases de datos vectoriales:
    • Pinecone, Milvus, Weaviate.
  • Frameworks de aprendizaje profundo:
    • PyTorch, TensorFlow.
  • API de acceso a modelos:
    • OpenAI API, Hugging Face Transformers.
    5. Recursos educativos



Large Action Models (LAMs)

Los Large Action Models (LAMs) son un concepto emergente relacionado con la inteligencia artificial, que amplía las capacidades de los modelos de lenguaje (como GPT) hacia la toma de decisiones y la ejecución de acciones en entornos dinámicos y complejos. Mientras que los modelos de lenguaje generan texto, los LAMs están diseñados para realizar acciones concretas, interactuar con sistemas o ejecutar tareas en el mundo real. Esto los hace ideales para aplicaciones en robótica, sistemas autónomos, juegos, y otras áreas donde la toma de decisiones automatizada es clave.


Características principales de los LAMs

  1. Generación de Acciones: En lugar de producir solo texto, generan comandos o secuencias de acciones ejecutables.
  2. Entrenamiento basado en interacción: Se entrenan en entornos simulados o reales donde pueden experimentar las consecuencias de sus decisiones.
  3. Adaptabilidad: Son capaces de aprender y ajustarse a dinámicas cambiantes en su entorno.
  4. Integración multimodal: Pueden combinar texto, visión, movimiento, y otros datos para realizar tareas complejas.

Ejemplos de LAMs

  1. AlphaGo (DeepMind):
    • Desarrollado para jugar al juego de Go.
    • Combina aprendizaje profundo y aprendizaje por refuerzo para decidir movimientos en el tablero.
  2. Tesla FSD (Full Self Driving):
    • Utiliza modelos para tomar decisiones de manejo en tiempo real, como frenar, girar o cambiar de carril.
  3. Codex (OpenAI):
    • Aunque no es un LAM puro, puede considerarse precursor en tareas programáticas, ya que genera código para ejecutar funciones específicas.
  4. ControlNet (para robótica):
    • Utiliza instrucciones textuales para controlar robots físicos o simulados.

Recursos disponibles para desarrollar LAMs

Desarrollar un LAM requiere herramientas avanzadas y acceso a datos especializados. Aquí tienes una lista de recursos clave:

1. Plataformas de desarrollo
  • OpenAI Gym / PettingZoo: Entornos para aprendizaje por refuerzo.
  • Unity ML-Agents: Simulador de entornos 3D interactivos.
  • MuJoCo: Simulador físico utilizado para entrenar modelos en tareas motoras.
2. Modelos base
  • Transformers: Modelos como GPT, BERT, y variantes para usar como base.
  • Reinforcement Learning Algorithms: Algoritmos como DQN, PPO, o A3C.
3. Datasets
  • D4RL (Datasets for Reinforcement Learning): Conjunto de datos para aprendizaje por refuerzo offline.
  • Meta-World: Conjunto de entornos simulados para tareas de robótica.
  • OpenAI CLIP datasets: Para modelos que integran lenguaje y visión.
4. Infraestructura
  • GPUs y TPUs: Para entrenar modelos grandes.
  • Frameworks como PyTorch y TensorFlow: Implementación de modelos y entrenamiento.
  • Cloud Services (AWS, Azure, Google Cloud): Escalabilidad para entrenar modelos.
5. Bibliografía y recursos educativos
  • Libros:
    • "Reinforcement Learning: An Introduction" de Sutton y Barto.
    • "Deep Reinforcement Learning Hands-On" de Maxim Lapan.
  • Cursos:
    • "Deep Learning Specialization" en Coursera.
    • "CS294: Deep Reinforcement Learning" de UC Berkeley (disponible en YouTube).
  • Blogs y Papers:
6. Comunidades y foros
  • Reddit: Subreddits como r/MachineLearning y r/ControlTheory.
  • GitHub: Repositorios de código abierto para aprendizaje por refuerzo.
  • Discord y Slack: Comunidades como ML Collective.

Asistentes y Aplicaciones IA

 A continuación mencionamos las aplicacioens de IA más conocidas hasta el momento. 


Asistentes Personales y Compañeros Digitales

Suelen responder preguntas, administrar calendarios, controlar dispositivos inteligentes. 

Las más conocidas son las que vienen incorporadas en los celulares y sistemas operativos:

  • Siri
  • Alexa
  • Google Assistant
Compañeros digitales más avanzados son:
  • Character.AI: Diseña compañeros virtuales. Ideal para entretenimiento y simulaciones específicas.
  • Replika: permite generar un Avatar, un amigo virtual que ayuda con apoyo emocional y social. Ofrece conversaciones relajadas, ejercicios de bienestar, y escucha activa.
  • Woebot: Terapeuta virtual basado en IA para mejorar la salud mental.

Suplantación de Identidad

Deepfakes (video e imágenes): crear videos falsos en los que alguien parece decir o hacer algo que nunca ocurrió.
Voice Synthesis: replicar patrones vocales a partir de grabaciones existentes.
Text Spoofing: imitar el estilo de escritura de una persona.
Image Spoofing: manipular o crear de imágenes realistas con IA.

Herramientas para clonarte en video:
  • Synthesia: Permite crear un avatar digital a partir de tu imagen y voz para generar videos con texto como entrada.
  • Avatarify: Software de código abierto que te permite controlar un avatar en tiempo real usando tus expresiones faciales.
  • DeepBrain AI: Crea un avatar hiperrealista a partir de un video tuyo, que luego puedes usar para generar contenido con texto o guiones.
  • HeyGen (antes Movio): Permite crear videos con avatares personalizados que incluyen movimientos faciales y sincronización de labios.
  • D-ID: Ofrece la posibilidad de crear videos a partir de una foto estática de ti mismo combinada con texto o audio.


Herramientas para clonarte tu voz:

  • ElevenLabs: Clona tu voz con alta precisión para generar audios personalizados.
  • Respeecher: Genera una clonación perfecta de tu voz para contenido creativo.


    Chatbots

    Inicialmente surgieron para brindar servicios de atención al cliente:
    • Zendesk Chat
    • Intercom
    • Drift

    Frameworks para armar chatbots más personalizados:
  • Rasa: Open-source y personalizable.
  • Microsoft Bot Framework: Para integrar con Azure y otras plataformas.
  • Dialogflow: Plataforma de Google Cloud para crear chatbots basados en IA.
  •  

    Modelos de LLM :

    • Modelos de OpenAI (GPT-4, GPT-3.5, etc.): Disponibles a través de APIs comerciales.
    • Hugging Face Transformers: Modelos open-source como BERT, GPT-Neo, LLaMA o Falcon que puedes entrenar o afinar localmente.
    • Google Vertex AI: Ofrece acceso a modelos de PaLM y otros.
    • Azure OpenAI Service: Acceso a modelos de OpenAI con integración empresarial.
    • Anthropic Claude: Otra opción para modelos de lenguaje avanzados.

    Para estructurar datos:
    • Pipelines ETL: Extraer, transformar y cargar datos (Apache Spark, Pandas).
    • Herramientas de indexación: para convertir los datos en un formato accesible.
      • LangChain: Para conectar datos y LLMs de manera estructurada.
      • Haystack: Framework para construir pipelines de NLP basados en búsqueda.
      • Pinecone, Weaviate, o Milvus: Bases de datos vectoriales para búsquedas semánticas.

    Automatización de Tareas

    Se utilizan para automatizar flujos de trabajo e integrar aplicaciones.
    • ZapierIdeal para usuarios no técnicos que necesitan automatizaciones simples y rápidas. Fácil de usar y buen soporte. Menos flexible para flujos complejos. Limitado para manipulación avanzada de datos. Ideal para casos simples como enviar un correo tras recibir un formulario.
    • Make: plataforma visual, flexible y escalable para automatizar tareas y workflows. Orientado a usuarios con cierta experiencia técnica que buscan más flexibilidad. Integraciones con muchas APIs y capacidad para personalizaciones avanzadas. Curva de aprendizaje más pronunciada. Menos integraciones predefinidas comparado con Zapier. Automatizaciones complejas que requieren lógica condicional o transformaciones avanzadas de datos.
    • Microsoft Power Automate: Diseñado para empresas que ya usan el ecosistema Microsoft 365 y necesitan integración profunda con estas herramientas. Compatible con aplicaciones de Microsoft (Excel, Teams, SharePoint, etc.). Soporte para RPA (Automatización Robótica de Procesos) para tareas repetitivas en sistemas antiguos. Integraciones con apps externas limitadas en comparación con Zapier o Make. Ideal para automatizaciones empresariales dentro del ecosistema de Microsoft.

    Procesamiento de Lenguaje Natural (NLP)

    Análisis de texto, generación de contenido, corrección gramatical.
    • Grammarly
    • Jasper
    • Copy.ai

    Análisis de Datos e Inteligencia de Negocios

    Visualización de datos, generación de reportes, consultas en lenguaje natural.
    • Tableau con Ask Data
    • ThoughtSpot.

    Educación y Aprendizaje

    Personalización del aprendizaje, generación de ejercicios, retroalimentación.
    • Duolingo
    • Khan Academy con AI
    • Quizlet

    Creación de Imágenes

    Crear ilustraciones, gráficos, renders, o imágenes a partir de texto.
    • DALL·E
    • MidJourney
    • Stable Diffusion
    • ChatGPT Plus (se conecta con DALL-E): Puedes describir con palabras lo que necesitas y DALL·E creará una imagen basada en esa descripción.

    Creación de Audio

    Composición de música, creación de narraciones, síntesis de voz.
    • Descript
    • AIVA
    • Murf.ai.

    Generación de Textos

    Escritura de artículos, copywriting, generación de diálogos o guiones, traducciones.
    • ChatGPT
    • Jasper
    • Copy.ai

    Generación de Video


    Edición de video asistida, creación de videos a partir de texto, deepfake.
    • Runway
    • Synthesia
    • Pictory

    Generación de Modelos 3D

    Creación de modelos 3D a partir de imágenes o descripciones.

    • NVIDIA Omniverse
    • Kaedim

    Edición y Mejora Creativa

    Mejora automática de fotos, sugerencias de diseño, ajustes asistidos.
    • Canva con Magic Write
    • Adobe Sensei.

    Generación Multimodal (Texto a Imagen, Audio, Video, etc.)

    Transformar texto en múltiples formatos creativos como imágenes, videos o audios.

    • Runway Gen-2
    • Hugging Face (text-to-image models)

    Analizar Videos y Resumir Ideas

    • Otter.ai: Transcribe automáticamente el audio de un video y utiliza NLP para generar resúmenes de las ideas principales. Ideal para reuniones o conferencias. Compatible con Zoom, Google Meet y videos subidos directamente.
    • Derscript: Transcripción automática y edición basada en texto; permite identificar ideas clave y eliminar fragmentos irrelevantes. Integra edición de video y herramientas de resumen.
    • Trint: Transcribe videos y genera resúmenes o puntos clave. También permite la edición colaborativa del contenido transcrito. Muy útil para periodistas y creadores de contenido.
    • Wisecut: Transcribe y genera resúmenes automáticos de videos largos, eliminando silencios y pausas. Fácil de usar, especialmente para ediciones rápidas.
    • Rephrase.ai: Utiliza inteligencia artificial para resumir ideas clave de videos. También puede convertir texto en videos personalizados. Compatible con varios idiomas y plataformas.
    • Video Insights de IBM Watson Media:  Extrae automáticamente resúmenes e ideas clave de contenido de video mediante análisis de lenguaje y reconocimiento de imágenes. Potente herramienta empresarial con análisis avanzado.
    • InVideo: Transcribe audio de video y permite resaltar y extraer puntos clave. Incluye opciones de edición adicional y mejora visual.
    • Microsoft Stream: Genera transcripciones automáticas de videos y permite buscar palabras clave dentro del contenido transcrito. Integrado en la suite de Microsoft 365, útil para uso corporativo.

    Aplicaciones de Salud

    Diagnósticos iniciales, terapia conversacional, seguimiento de salud.
    • Ada Health
    • Woebot
    • Babylon Health

    Gaming e IA Narrativa
    Generación de historias, personajes interactivos.
    • AI Dungeon
    • Replica.

    Gestión y Productividad

    Resúmenes automáticos, toma de notas, planificación.
    • Notion AI
    • Otter.ai: Transcribe automáticamente el audio de un video y utiliza NLP para generar resúmenes de las ideas principales. Ideal para reuniones o conferencias.

    E-commerce y Recomendaciones

    Personalización de productos, chatbots para ventas.
    • Shopify con AI
    • Amazon Personalize

    Otras Aplicaciones

    En esta categoría entran algunas Apps recomendadas fuera de serie.

    • Simple Sing: My Singing App - Adapta cualquier cansión a tu tono de voz para poder cantarla sin problemas.

    Plataformas

    Estas son las plataformas más conocidas que ofrecen generación de imágenes mediante inteligencia artificial, organizadas por su popularidad y enfoque:

    MidJourney
    • Descripción: Plataforma muy reconocida por su capacidad para crear imágenes artísticas y visualmente impresionantes a partir de texto.
    • Acceso: Funciona principalmente a través de Discord.
    • Usos Destacados: Arte conceptual, diseño gráfico, creación de portadas de libros.
    DALL·E 2 (de OpenAI)
    • Descripción: Creado por OpenAI, genera imágenes detalladas a partir de texto y permite edición en las imágenes generadas.
    • Acceso: Directamente desde OpenAI o a través de la integración con ChatGPT Plus.
    • Usos Destacados: Imágenes conceptuales, ilustraciones personalizadas.
    Stable Diffusion
    • Descripción: Una plataforma de código abierto para generación de imágenes, que permite personalizaciones avanzadas.
    • Acceso: A través de interfaces como DreamStudio, Automatic1111 o aplicaciones independientes.
    • Usos Destacados: Creación de imágenes únicas, diseño técnico, experimentación.
    Runway ML
    • Descripción: Plataforma multimodal que no solo genera imágenes, sino también videos, permitiendo edición y creación avanzada.
    • Acceso: Basado en navegador; ideal para creadores multimedia.
    • Usos Destacados: Generación de videos, prototipos creativos, efectos visuales.
    Artbreeder
    • Descripción: Especializado en modificar y generar retratos o imágenes estilizadas mediante IA.
    • Acceso: Plataforma en línea con herramientas simples para usuarios principiantes.
    • Usos Destacados: Diseño de personajes, retratos, arte conceptual.
    DeepAI
    • Descripción: Proporciona herramientas básicas para la generación de imágenes, enfocándose en simplicidad y resultados rápidos.
    • Acceso: Basado en navegador; ideal para uso casual.
    • Usos Destacados: Generación rápida de conceptos, bocetos básicos.
    NightCafe Studio
    • Descripción: Enfocado en la creación de obras de arte mediante diferentes algoritmos de IA.
    • Acceso: Plataforma en línea con opciones gratuitas y de pago.
    • Usos Destacados: Arte digital, murales, diseño decorativo.
    Fotor (AI Art Generator)
    • Descripción: Herramienta simple y amigable para usuarios no técnicos, con un enfoque en diseño y marketing.
    • Acceso: En línea y como app móvil.
    • Usos Destacados: Publicidad, diseño gráfico rápido.
    Craiyon (antes DALL·E Mini)
    • Descripción: Versión simplificada de DALL·E, accesible y gratuita, aunque con resultados más básicos.
    • Acceso: Basado en navegador.
    • Usos Destacados: Experimentación casual.

    Factores para Elegir una Plataforma

    • Calidad de las imágenes: MidJourney y DALL·E destacan por su realismo y creatividad.
    • Facilidad de uso: NightCafe y Fotor son ideales para principiantes.
    • Costo: Stable Diffusion (gratuito en local) y Craiyon son opciones económicas.
    • Flexibilidad: Stable Diffusion y Runway ML son muy personalizables.


    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