Patrones de agentes
¿Tus agentes se quedan cortos? Eleva tus proyectos de IA con patrones avanzados: ReAct, planificación, multi-agentes y más. ¡Guía práctica con código!
-->
Naviground es un sistema de navegación implementable en vehículos terrestres tripulados y no tripulados. Permite navegar en entornos estructurados y no estructurados. Participé en el desarrollo del sistema de percepción, especialmente en el de detección del entorno mediante cámaras.
Aunque el sistema de navegación contaba con sensores LIDAR y RADAR, por varios motivos se quería tener un sistema de percepción formado únicamente por cámaras.
Para poder realizar la detección del entorno, utilizamos tres tipos de redes neuronales:
Redes de segmentación semántica
Clasifican a qué clase pertenece cada pixel de la imagen, obteniendo una máscara de segmentación.
Redes de clasificación de objetos
Mediante una YOLO, se pueden detectar objetos en la imagen
Profundidad
Mediante una red neuronal, se puede estimar la profundidad de cada pixel de la imagen, con lo que se puede obtener a qué distancia se encuentra cada objeto.
Nuestro problema era que al ser un vehículo para entornos estructurados y no estructurados, no nos valían las redes preentrenadas, por lo que tivimos que hacer entrenamientos de las redes de segmentación y de clasificación de objetos.
Como teníamos horas de videos grabados durante pruebas en entornos como este, creamos un dataset
Creamos un algoritmo que mediante un clasificador no supervisado, creó varios clusteres de imágenes, donde las imágenes de cada cluster eran similares entre sí. De esta manera, nos quedábamos con unas pocas imágenes de cada cluster, para así tener un dataset con imágenes heterogéneas.
Etiquetar objetos para la YOLO, aunque es pesado, es un proceso más o menos rápido y fácil
Sin embargo, etiquetar las imágenes para la segmentación semántica, donde hay que etiquetar cada pixel, es un proceso lento y tedioso. Como no nos convencía ninguna herramienta de etiquetado para segmentación, construimos nuestra propia herramienta de etiquetado. Fue tan buena que se reutilizó en otros proyectos e incluso se habló de comercializarla.
Uno de los problemas que teníamos es que todas las imágenes de entrenamiento eran de día, con sol, sin lluvia, etc. Por lo que para poder hacer las redes más robustas neecsitábamos más imágenes. Pero eso supone que alguien tenga que salir de noche, esperar a que llueva para tener imágenes con lluvia, esperar a que nieve, que es más complicado, etc.
En aquel momento ya había muchas redes de generación de imágenes bastante buenas, por lo que podíamos generar imágenes con nuevas condiciones ambientales, pero el problema era que había que etiquetarlas, y para la segmentación requería mucho tiempo.
Así que realicé un pipeline que mediante IA generativa, modificaba las condiciones ambientales de las imágenes que ya teníamos etiquetadas, teniendo imágenes en diferentes condiciones ambientales, pero sin tener que perder tiempo etiquetándolas.
Como esto tenía que funcionar en un vehículo, no se podía utilizar un ordenador con una GPU potente. Por lo que se utilizaba un dispositivo embebido, una Jetson Orin. Por lo que era importante poder optimizar las redes neuronales para que hicieran la inferencia lo más rápido posible.
Me encargué de optimizarlas con TendorRT, haciendo que en algunos casos se ejecutaran hasta un 40% más rápido.
¿Tus agentes se quedan cortos? Eleva tus proyectos de IA con patrones avanzados: ReAct, planificación, multi-agentes y más. ¡Guía práctica con código!
🚀 ¡Revoluciona tus agentes de IA! 🧠 LangGraph no es solo otra librería, es el framework de orquestación que te da el CONTROL total para construir agentes complejos, con memoria a largo plazo y ¡hasta con intervención humana! Olvídate de los chatbots básicos, es hora de crear verdadera inteligencia. ¡Sumérgete en este post y descúbrelo!
Aprende a crear entornos virtuales con uv, un gestor de paquetes y entornos para Python escrito en Rust, lo que hace que vaya rapidísimo. Si has tenido problemas con los tiempos de espera usando conda, o quieres una alternativa más rápida y fácil a venv, entra y mira cómo usar uv.
Los espacios de Hugging Face nos permite ejecutar modelos con demos muy sencillas, pero ¿qué pasa si la demo se rompe? O si el usuario la elimina? Por ello he creado contenedores docker con algunos espacios interesantes, para poder usarlos de manera local, pase lo que pase. De hecho, es posible que si pinchas en alún botón de ver proyecto te lleve a un espacio que no funciona.
Dataset de chistes en inglés
Dataset con traducciones de inglés a español
Dataset con películas y series de Netflix