Lego-sortering med TensorFlow og syntetisk træningsdata

Foto : Youtube/Daniel West

Lego-sortering med TensorFlow og syntetisk træningsdata

Australier har bygget en sorteringsmaskine til Lego-klodser. Ved hjælp af neurale netværk og open source-databaser kan den trænes til at genkende alle eksisterende Lego-klodser.

ING.DK: De fleste kender problemet fra børneværelset: Jo mere Lego, der kommer ind i huset, desto mere uoverskueligt bliver det at finde de rigtige klodser. Da jeg var barn, lå al mit Lego i kasser, og jeg husker den evindelige kamp med at finde de rette klodser – især de små havde det med at gemme sig nede på bunden af kassen.

Derfor virker det oplagt med en sorteringsmaskine. Sådan en har australieren Daniel West bygget – af Lego; eller nærmere bestemt cirka 10.000 klodser. Det skriver Gizmodo

Umiddelbart tænker man, at der er brug for et avanceret vision-system for at kunne genkende de mange forskellige klodser. Men problemet er, at der eksisterer omkring 10.000 forskellige klodser, og det ville være umuligt at få traditionel billedegenkendelses-software til at genkende klodser, som passerer forbi i dårlig belysning. Derfor har Daniel West taget et neuralt netværk i brug.

lego
En af de mere praktiske opgaver, som Daniel West kæmpede med, var at få flyttet Lego-klodserne, så de kunne scannes én ad gangen. Løsningen blev et vibrationssystem drevet af en ultrahurtig Lego-motor.
Illustration: Youtube/Daniel West

Men inden da skal der bygges et automationssystem, der kan håndtere en spandfuld Lego-klodser. Til det har han opdelt maskinen i tre dele: en føder, som klodserne kan hældes ned i, og et bæltesystem, som fører dem videre til et vibrationssystem. Her bruger han Legos hurtigste motor til at vibrere klodserne, så de ikke ligger oven på hinanden, men bliver ført videre én ad gangen.

Næste skridt er selve scanneren. Der har tidligere været byggeprojekter til at sortere Lego-klodser, men Daniel West mener, at hans er det første, som kan håndtere alle klodser, der nogensinde er blevet produceret af Lego.

Syntetisk træningsdata

I systemet bliver klodsen scannet, en Raspberry Pi-computer registrerer scanningen og sender billedet videre til en pc, som kører et convolutional neural network bygget i TensorFlow. Softwaren sammenligner hver enkelt Lego-klods med databasen og får derefter et nummer ud.

For at det kan lade sig gøre, bruger han AI og en database med CAD-modeller af klodserne. Det er ikke noget, som Lego selv har offentliggjort, men brugere har over en årrække opbygget databaser som LDraw.org og Rebrickable.

Udfra CAD-modellerne, der er 3D-repræsentationer af hver enkelt klods, kunne Daniel West skabe syntetisk træningsdata til sit netværk. Med den data har Daniel West brugt en teknik kaldet Domain Randomization, som indbygger tilfældigheder i genereringen af den kunstige træningsdata, som skaber variation i træningsdata og gør modellen mere robust. Endelig er modellen fintunet med et mindre sample af manuelt annoterede billeder. 

Ved hjælp af en database med CAD-tegninger af Lego-klodser og et neuralt netværk er systemet i stand til at genkende alle Lego-klodser, der nogensinde er blevet produceret. Illustration: Youtube/Daniel West
Ved hjælp af en database med CAD-tegninger af Lego-klodser og et neuralt netværk er systemet i stand til at genkende alle Lego-klodser, der nogensinde er blevet produceret.
Illustration: Youtube/Daniel West

Daniel West siger, at han kan sortere 3.000 forskellige klodser, men potentielt kan maskinen klare alle klodser, også dem, den ikke har set endnu. Den kan nemlig trænes blot ved at bruge databaserne med klodser.

Det nummer, som hver enkel klods får tildelt, sendes tilbage til sorteringsmaskinen, som så kan fordele klodserne i 18 forskellige bokse. Antallet af bokse kan udvides uendeligt, det kræver bare en større maskine. Maskinen er i stand til at håndtere en klods på to sekunder.

Det tog seks måneder at bygge sorteringsmaskinen, og den består af seks Lego-motorer, en række servoer, en Raspberry Pi, lyssætning, et kamera og en pc til at køre AI-softwaren – og så altså cirka 10.000 Lego-klodser.