>_ DevTrendsnl

Taal

Home

Talen

Secties

Frontend Backend Mobiel DevOps AI / ML GameDev Blockchain Embedded Beveiliging
Python

Hoe je een robot leert om objecten te zien zonder lange training

Stel je dit voor: je hebt een nieuwe manipulator gekocht of besloten om een slimme camera te bouwen voor het sorteren van onderdelen. Je hebt allerlei verschillende objecten — van frisdrankblikjes tot complexe reserveonderdelen. De standaard aanpak in Computer Vision tegenwoordig is om een dataset te verzamelen, duizenden frames te labelen, een model te trainen en te hopen dat het niet "drijft" onder verschillende lichtomstandigheden. En als er morgen een nieuw object verschijnt? Dan moet je helemaal opnieuw beginnen.

Ingenieurs van NVIDIA Research lijken deze eindeloze cyclus beu te zijn en hebben FoundationPose gelanceerd. Het is een uniform model voor 6D pose-schatting (positie en oriëntatie in de ruimte) en objecttracking dat "out-of-the-box" werkt, zelfs met objecten die nooit tijdens de training zijn gezien.

Wat is de belangrijkste functie

Meestal worden 6D Pose Estimation-taken verdeeld in twee kampen. In het eerste heb je een nauwkeurig CAD-model van het object (modelgebaseerd), en in het tweede heb je alleen een paar foto's van verschillende hoeken (modelvrij). FoundationPose combineert deze benaderingen.

Het project is interessant omdat het geen fine-tuning voor een specifieke taak vereist. Je geeft het simpelweg een 3D-model of een set referentie-afbeeldingen, en het begint direct met het uitvoeren van de coördinaten van het object in de ruimte. Momenteel staat deze oplossing eerste in de BOP (Benchmark for 6D Object Pose Estimation) wereldwijde leaderboard onder methoden voor nieuwe objecten.

Hoe het onder de motorkap werkt

De ontwikkelaars hebben verschillende slimme trucs gebruikt om deze flexibiliteit te bereiken.

Ten eerste pasten ze neurale impliciete representatie toe. Dit stelt het systeem in staat om nieuwe weergaven van het object on-the-fly te synthetiseren, waardoor het pose-schattingsproces identiek is voor zowel het geval met een kant-en-klaar 3D-model als het geval met een paar foto's.

Ten tweede is de trainingsschaal indrukwekkend. Het model werd getraind op een enorme hoeveelheid synthetische data. Een interessant punt: grote taalmodellen (LLM) waren betrokken bij het genereren van deze data. Dit hielp om diverse scenario's en texturen te creëren die moeilijk handmatig te verkrijgen zijn.

Ten derde is de architectuur gebouwd op transformers en contrastief leren. Om het simpel te zeggen: het model leert om het huidige frame te vergelijken met een referentie en exact te begrijpen hoe het object is geroteerd, zonder vast te zitten aan specifieke kenmerken van "deze specifieke boor".

Wat het project in de praktijk kan doen

Als je naar de demos in de repository kijkt, kun je drie hoofdgebruiksscenario's zien:

  1. Robotica. Een robot pakt een mosterdfles die constant beweegt. Het systeem slaagt erin om de pose in realtime te herberekenen, wat cruciaal is voor manipulatoren.
  2. Augmented reality (AR). Virtuele objecten worden "geplakt" aan echte objecten zonder schokken en verschuiven.
  3. Werken met complexe datasets. Het model presteert goed op klassieke benchmarks zoals YCB-Video, waar er veel occlusies zijn (wanneer het ene object een ander blokkeert).

Trouwens, voor degenen die om snelheid in productie geven, heeft NVIDIA een ROS-versie voorbereid met TensorRT-ondersteuning. Dit geeft een significante FPS-boost door GPU-optimalisatie.

Hoe te starten en uit te proberen

Het deployen van zulke ML-projecten verandert vaak in dependency hell, maar hier bieden de auteurs twee redelijke paden.

De eenvoudigste is Docker. Het team heeft een image voorbereid met alle CUDA-trucs al geconfigureerd.

cd docker/
docker pull wenbowen123/foundationpose && docker tag wenbowen123/foundationpose foundationpose
bash docker/run_container.sh

Als je de voorkeur geeft aan Conda, is het proces iets complexer, omdat je C++ en CUDA-extensies handmatig moet bouwen. Je moet PyTorch, PyTorch3D en NVDiffRast installeren.

Na de installatie is het uitvoeren van de demo eenvoudig:

python run_demo.py

Standaard zal het script laten zien hoe het model een mosterdfles volgt uit de demo-data. Eerst is er initialisatie (pose-schatting op het eerste frame), en daarna automatische omschakeling naar tracking-modus.

Nuances en beperkingen

Verwacht niet dat alles perfect werkt op elke grafische kaart. Bijvoorbeeld, eigenaren van een RTX 4090 moeten een aangepaste Docker-image gebruiken vanwege de specificaties van nieuwe CUDA-kernels.

Een ander belangrijk punt: vanwege Stable Diffusion licentiebeperkingen (die werd gebruikt om sommige texturen voor training te genereren), konden de auteurs de modelgewichten getraind met diffusion-augmentatie niet vrijgeven. De publieke versie is iets eenvoudiger, dus de nauwkeurigheid kan marginaal lager zijn dan gerapporteerd in het officiële onderzoekspaper.

Wie heeft hier baat bij

FoundationPose is niet zomaar nog een neuraal netwerk uit honderden CVPR-papers. Het is een kant-en-klare basis voor degenen die werken aan:

  • Magazijnrobotica (waar je snel nieuwe producten aan het systeem moet kunnen toevoegen).
  • Kwaliteitscontrole in de productie.
  • Het creëren van interactieve AR-toepassingen.

Als je de positie van objecten in de ruimte moet bepalen en niet weken wilt besteden aan het verzamelen van datasets voor elke nieuwe "kleine schroef", dan is deze repository zeker het bookmarken waard. Het project is actief, wordt druk besproken in Issues, en de leiderschap in BOP suggereert dat het vandaag een van de sterkste SOTA-methoden in zijn niche is.

Gerelateerde projecten