Cómo enseñar a un robot a ver objetos sin un largo entrenamiento
Imagina esto: compraste un nuevo manipulador o decidiste construir una cámara inteligente para clasificar piezas. Tienes un montón de objetos diferentes — desde latas de refresco hasta piezas de repuesto complejas. El camino estándar en Visión por Computador hoy en día es recopilar un conjunto de datos, etiquetar miles de frames, entrenar un modelo y esperar que no se "desvíe" bajo diferentes condiciones de iluminación. ¿Y si mañana aparece un nuevo objeto? Tendrás que empezar todo de nuevo.
Los ingenieros de NVIDIA Research parecen haberse cansado de este ciclo sin fin y han lanzado FoundationPOSE. Es un modelo unificado para la estimación de pose 6D (posición y orientación en el espacio) y seguimiento de objetos que funciona "de inmediato" incluso con objetos que nunca ha visto durante el entrenamiento.
¿Cuál es la característica principal
Por lo general, las tareas de Estimación de Pose 6D se dividen en dos bandos. En el primero, tienes un modelo CAD preciso del objeto (basado en modelo), y en el segundo, solo tienes algunas fotos desde diferentes ángulos (sin modelo). FoundationPOSE combina estos enfoques.
El proyecto es interesante porque no requiere ajuste fino para una tarea específica. Solo le proporcionas un modelo 3D o un conjunto de imágenes de referencia, e inmediatamente comienza a generar las coordenadas del objeto en el espacio. Actualmente, esta solución ocupa el primer lugar en el ranking mundial de BOP (Benchmark for 6D Object Pose Estimation) entre los métodos para objetos nuevos.
¿Cómo funciona internamente
Los desarrolladores usaron varios trucos inteligentes para lograr este tipo de flexibilidad.
Primero, aplicaron representación implícita neuronal. Esto permite que el sistema sintetice nuevas vistas del objeto sobre la marcha, haciendo que el proceso de estimación de pose sea idéntico tanto para el caso con un modelo 3D listo como para el caso con un par de fotos.
Segundo, la escala de entrenamiento es impresionante. El modelo se entrenó con una enorme cantidad de datos sintéticos. Un punto interesante: se usaron modelos de lenguaje grandes (LLM) en la generación de estos datos. Esto ayudó a crear escenarios y texturas diversos que son difíciles de obtener manualmente.
Tercero, la arquitectura se basa en transformers y aprendizaje contrastivo. Simplificando, el modelo aprende a comparar el frame actual con una referencia y entender exactamente cómo está rotado el objeto, sin depender de características específicas de "este taladro en particular".
¿Qué puede hacer el proyecto en la práctica
Si miras los demos en el repositorio, puedes ver tres escenarios de uso principales:
- Robótica. Un robot agarra una botella de mostaza que se mueve constantemente. El sistema logra recalcular la pose en tiempo real, lo cual es crítico para los manipuladores.
- Realidad aumentada (AR). Los objetos virtuales se "pegan" a los objetos reales sin temblar ni desplazarse.
- Trabajo con conjuntos de datos complejos. El modelo maneja bien benchmarks clásicos como YCB-Video, donde hay muchas oclusiones (cuando un objeto bloquea a otro).
Por cierto, para los que se preocupan por la velocidad en producción, NVIDIA ha preparado una versión ROS con soporte para TensorRT. Esto proporciona un aumento significativo de FPS mediante optimización de GPU.
¿Cómo lanzar y probar
Desplegar proyectos de ML como este a menudo se convierte en un infierno de dependencias, pero aquí los autores ofrecen dos caminos razonables.
El más simple es Docker. El equipo ha preparado una imagen con todos los trucos de CUDA ya configurados.
cd docker/
docker pull wenbowen123/foundationpose && docker tag wenbowen123/foundationpose foundationpose
bash docker/run_container.sh
Si prefieres Conda, el proceso es ligeramente más complejo, ya que necesitarás compilar las extensiones de C++ y CUDA manualmente. Necesitarás instalar PyTorch, PyTorch3D y NVDiffRast.
Después de la configuración, ejecutar el demo es sencillo:
python run_demo.py
Por defecto, el script mostrará cómo el modelo rastrea una botella de mostaza de los datos de demo. Primero, hay una inicialización (estimación de pose en el primer frame), y luego un cambio automático al modo de seguimiento.
Matices y limitaciones
No esperes que todo funcione perfectamente en cualquier tarjeta gráfica. Por ejemplo, los propietarios de RTX 4090 necesitarán usar una imagen Docker personalizada debido a las especificaciones de los nuevos kernels de CUDA.
Otro punto importante: debido a las restricciones de licencia de Stable Diffusion (que se usó para generar algunas texturas para el entrenamiento), los autores no pudieron lanzar los pesos del modelo entrenados con aumentación por difusión. La versión pública es ligeramente más simple, por lo que la precisión puede ser marginalmente menor que la reportada en el artículo de investigación oficial.
¿Quién se beneficiará de esto
FoundationPOSE no es solo otra red neuronal de cientos de artículos de CVPR. Es una base lista para aquellos que trabajan en:
- Robótica de almacén (donde necesitas agregar rápidamente nuevos productos al sistema).
- Control de calidad en manufactura.
- Creación de aplicaciones interactivas de AR.
Si necesitas determinar la posición de objetos en el espacio y no quieres pasar semanas recopilando conjuntos de datos para cada nuevo "tornillito", este repositorio definitivamente vale la pena marcarlo. El proyecto está activo, se discute activamente en Issues, y el liderazgo en BOP sugiere que hoy es uno de los métodos SOTA más fuertes en su nicho.
Proyectos relacionados