Comment apprendre à un robot à voir des objets sans long entraînement
Imaginez ceci : vous avez acheté un nouveau manipulateur ou décidé de construire une caméra intelligente pour trier des pièces. Vous avez toute une collection d'objets différents — des canettes de soda aux pièces de rechange complexes. La méthode standard en vision par ordinateur aujourd'hui implique de constituer un ensemble de données, d'étiqueter des milliers d'images, d'entraîner un modèle et d'espérer qu'il ne « dérive » pas sous différents éclairages. Et si un nouvel objet apparaît demain ? Vous devrez tout recommencer à zéro.
Les ingénieurs de NVIDIA Research semblent en avoir assez de ce cycle sans fin et ont lancé FoundationPose. C'est un modèle unifié pour l'estimation de pose 6D (position et orientation dans l'espace) et le suivi d'objets qui fonctionne « prêt à l'emploi » même avec des objets qu'il n'a jamais vus pendant l'entraînement.
Quelle est la principale caractéristique
Généralement, les tâches d'estimation de pose 6D sont divisées en deux catégories. Dans la première, vous avez un modèle CAO précis de l'objet (basé sur le modèle), et dans la seconde, vous n'avez que quelques photos sous différents angles (sans modèle). FoundationPose combine ces approches.
Le projet est intéressant car il ne nécessite pas d'ajustement fin pour une tâche spécifique. Vous lui donnez simplement un modèle 3D ou un ensemble d'images de référence, et il commence immédiatement à produire les coordonnées de l'objet dans l'espace. Actuellement, cette solution se classe première dans le classement mondial BOP (Benchmark for 6D Object Pose Estimation) parmi les méthodes pour les nouveaux objets.
Comment ça fonctionne en interne
Les développeurs ont utilisé plusieurs astuces intelligentes pour obtenir ce type de flexibilité.
Premièrement, ils ont appliqué une représentation implicite neuronale. Cela permet au système de synthétiser de nouvelles vues de l'objet à la volée, rendant le processus d'estimation de pose identique pour le cas avec un modèle 3D prêt et le cas avec quelques photos.
Deuxièmement, l'échelle d'entraînement est impressionnante. Le modèle a été entraîné sur une quantité massive de données synthétiques. Un point intéressant : les grands modèles de langage (LLM) ont été impliqués dans la génération de ces données. Cela a permis de créer des scénarios et des textures variés difficiles à obtenir manuellement.
Troisièmement, l'architecture repose sur des transformers et l'apprentissage par contraste. Pour simplifier, le modèle apprend à comparer la trame actuelle avec une référence et comprendre exactement comment l'objet est tourné, sans se lier à des caractéristiques spécifiques de « cette perceuse particulière ».
Ce que le projet peut faire en pratique
Si vous regardez les démos dans le dépôt, vous pouvez voir trois scénarios d'utilisation principaux :
- Robotique. Un robot saisit une bouteille de moutarde qui bouge constamment. Le système parvient à recalculer la pose en temps réel, ce qui est essentiel pour les manipulateurs.
- Réalité augmentée (RA). Les objets virtuels sont « collés » aux objets réels sans tremblements ni décalages.
- Travail avec des ensembles de données complexes. Le modèle gère bien les benchmarks classiques comme YCB-VIDEO, où il y a de nombreuses occultations (lorsqu'un objet en bloque un autre).
D'ailleurs, pour ceux qui se soucient de la vitesse en production, NVIDIA a préparé une version ROS avec support TensorRT. Cela offre une amélioration significative des FPS grâce à l'optimisation GPU.
Comment lancer et essayer
Déployer de tels projets ML se transforme souvent en enfer de dépendances, mais ici les auteurs proposent deux chemins raisonnables.
Le plus simple est Docker. L'équipe a préparé une image avec toutes les astuces CUDA déjà configurées.
cd docker/
docker pull wenbowen123/foundationpose && docker tag wenbowen123/foundationpose foundationpose
bash docker/run_container.sh
Si vous préférez Conda, le processus est légèrement plus complexe, car vous devrez construire les extensions C++ et CUDA manuellement. Vous devrez installer PyTorch, PyTorch3D et NVDiffRast.
Après l'installation, exécuter la démo est simple :
python run_demo.py
Par défaut, le script montrera comment le modèle suit une bouteille de moutarde à partir des données de démo. D'abord, il y a l'initialisation (estimation de pose sur la première trame), puis la commutation automatique en mode suivi.
Nuances et limitations
Ne vous attendez pas à ce que tout fonctionne parfaitement sur n'importe quelle carte graphique. Par exemple, les propriétaires de RTX 4090 devront utiliser une image Docker personnalisée en raison des spécificités des nouveaux noyaux CUDA.
Un autre point important : en raison des restrictions de licence de Stable Diffusion (qui a été utilisé pour générer certaines textures pour l'entraînement), les auteurs n'ont pas pu publier les poids du modèle entraînés avec l'augmentation par diffusion. La version publique est légèrement plus simple, donc la précision peut être légèrement inférieure à celle rapportée dans l'article de recherche officiel.
Qui bénéficiera de ceci
FoundationPose n'est pas qu'un autre réseau de neurones parmi les centaines d'articles CVPR. C'est une base prête pour ceux qui travaillent sur :
- La robotique d'entrepôt (où vous devez ajouter rapidement de nouveaux produits au système).
- Le contrôle qualité dans la fabrication.
- La création d'applications AR interactives.
Si vous avez besoin de déterminer la position des objets dans l'espace et que vous ne voulez pas passer des semaines à collecter des ensembles de données pour chaque nouvelle « petite vis », ce dépôt mérite définitivement d'être ajouté aux favoris. Le projet est actif, activement discuté dans les Issues, et la position de leader sur BOP suggère qu'aujourd'hui c'est l'une des méthodes SOTA les plus robustes dans sa catégorie.
Projets similaires