Índice
Trabajo Propio15 de julio de 2024

Reconocimiento de Objetos y Audio - Sistema Multiagente

PythonInteligencia ArtificialK-MeansK-NNFlaskVisión ArtificialProcesamiento de Señales

Descripción General

Este proyecto fue desarrollado como el trabajo final de la cátedra de Inteligencia Artificial 1 (2024) en la Facultad de Ingeniería de la Universidad Nacional de Cuyo.

Consiste en un sistema multiagente (siguiendo la literatura clásica de IA) diseñado para realizar dos tareas principales de percepción artificial de manera autónoma y coordinada:

  1. Reconocimiento y clasificación visual de objetos: Clasificación automática de imágenes de piezas mecánicas metálicas (tornillos, clavos, tuercas y arandelas).
  2. Reconocimiento y clasificación de comandos de voz: Identificación de palabras del habla humana a partir del procesamiento digital de señales acústicas.

El rasgo más distintivo de esta implementación es que ambos algoritmos de aprendizaje de máquina fueron programados desde cero, sin utilizar librerías predeterminadas de IA (como scikit-learn o tensorflow), para comprender a nivel matemático y algorítmico el proceso de entrenamiento y predicción.


Arquitectura de los Agentes

1. Agente de Reconocimiento de Objetos (Visión)

Este agente utiliza aprendizaje no supervisado mediante el algoritmo K-Means Clustering:

  • Extracción de Características: Las imágenes de las piezas metálicas son preprocesadas para extraer descriptores de forma y geometría (área, perímetro, compacidad, circularidad y relación de aspecto).
  • Entrenamiento: El algoritmo agrupa de manera iterativa las muestras en 4 clusters correspondientes a: tornillos, clavos, tuercas y arandelas. Los centroides de estos grupos se exportan a un archivo centroides.csv para la fase de predicción rápida.

2. Agente de Reconocimiento de Audio (Voz)

Este agente utiliza aprendizaje supervisado mediante el algoritmo K-Nearest Neighbors (K-NN):

  • Procesamiento de Señales: Los audios grabados son filtrados y normalizados. Se extraen características temporales y espectrales clave como la Energía a Corto Plazo (STE) y la Tasa de Cruce por Cero (ZCR).
  • Clasificación: Las palabras capturadas son contrastadas con una base de datos acústica (FINAL_DB) para determinar a qué comando corresponden mediante el cálculo de distancias euclidianas en el espacio de características.

Interfaz de Usuario e Integración

Para la interacción y visualización de los agentes, se implementó un sistema web interactivo utilizando Flask (Python):

  • Carga de Archivos: Los usuarios pueden subir imágenes de piezas mecánicas a la carpeta de uploads.
  • Predicción Integrada: El sistema realiza la inferencia visual y, al mismo tiempo, activa la grabación de voz por terminal (capturando el audio al mantener presionada la tecla Espacio).
  • Retroalimentación en Tiempo Real: La interfaz muestra en pantalla qué pieza se detectó y qué comando de voz se ejecutó.

Estructura del Proyecto

El repositorio está organizado en los siguientes módulos:

  • source/: Código fuente principal de las interfaces gráficas y algoritmos (InterfazAudios.py, Interfazimages.py, InterfazProyecto.py).
  • anexos/: Repositorio de imágenes y muestras de audio de entrenamiento.
  • runtime_files/: Archivos generados durante el aprendizaje, incluyendo los centroides calculados y la base de datos de voz entrenada.

Repositorio y Uso

  • Código Fuente: GitHub - multi-agent-image-recognition
  • Ejecución:
    • Para interactuar con el agente visual: python source/Interfazimages.py
    • Para interactuar con el agente de audio: python source/InterfazAudios.py
    • Para ejecutar el sistema completo con interfaz Flask: python source/InterfazProyecto.py