Marius lager selv­spillende AI-bot 🤖

- Jeg var så fryktelig lei av at ungene hele tiden spurte etter penger til spillende sine, forteller hobbykoderen.

Bilde Marius tok av seg selv i forbindelse med contrary.io. Han medgir at det kanskje er litt "sleezy". Selv synes vi det passer skremmende godt til dette prosjektet. 🕵️ 📸: Privat
Bilde Marius tok av seg selv i forbindelse med contrary.io. Han medgir at det kanskje er litt "sleezy". Selv synes vi det passer skremmende godt til dette prosjektet. 🕵️ 📸: Privat Vis mer

"Grinde" kaller kidsa det.

Ensformige oppgaver mange moderne spill gir spillere, i bytte mot oppgraderinger av ymse sort.

Og hvis du ikke gidder? Ja da kan du alltids gi en slant til spillet for å hoppe bukk over oppgavene. En som ble drita lei av nettopp dette var ukas hobbykoder Marius Heier (1981). På dagtid driver han sin egen garasjebaserte elektronikk-startup, Contrary.io.

Men på kveldstid koker han sammen noe helt annet. Noe han kaller: "Et selvspillende barn med kunstig intelligens, som kjemper for barns rettigheter i spill".

Arbeidsplassen til Marius i Contrary.io. 📸: Privat
Arbeidsplassen til Marius i Contrary.io. 📸: Privat Vis mer

#1. Hva har du bygd, og hvorfor?

Jeg var så fryktelig lei av at ungene hele tiden spurte etter penger til spillende sine.

Det var liksom ikke mulig å komme videre i noen spill uten å enten bruke ekte penger, eller gjøre kjedelige meningsløse oppgaver .

Som egentlig bare er laget for å få deg til å gå lei, for så å bruke ekte penger.

Så jeg tenkte, kan jeg ikke bare lage et "selvspillende barn" som spiller hele døgnet av seg selv.

#2. Hvor lenge har du jobbet med dette hobbyprosjektet?

Egentlig startet jeg prosjektet for et år siden, men har selvfølgelig ikke tid til hobbyer som alle andre. Så det tar litt tid.

#3. Hvordan henger prosjektet sammen?

For å lage et selvkjørende spillebarn, må man gjøre følgende:

A. Få kontroll på input
I starten lagde jeg en CNC-maskin av Lego som kunne trykke på en iPad.

Jeg innså ganske raskt at dette bare var en unnskyldning for å bygge en CNC-maskin, så jeg gikk over til bruke noe ferdig Python bibloteker for å styre tastaturet, som igjen styrte mobil eller nettbrett over Remote Desktop.

Kjører spillet på lokal pc, er det litt lettere.

B. Fange skjermbilde for å forsøke å tolke hva som skjer.
Her gjelder det å skrive effektiv kode som greier å fange nok skjermbilder per sekund til at det er brukanes til å kontrollere et spill.

Kjipt med 2 frames per sekund hvis du for eksempel kjører bil.

Jeg Fikk dermed en ganske god unnskyldning for å investere i en ekstra god pc med flott grafikkort.

Jeg skulle tross alt gjøre "computer vision med AI".

Til slutt var jeg fornøyd nok med rundt 10 frames pr sekund, og var "good to go" for neste fase.

C. Lage treningsdata, eller fange spillets regler slik at man kan gjøre det om til matte.
Koser meg foreløpig med dette punktet. Her kan jeg virkelig rote rundt lenge - dette er noe som er veldig avhengig av hva slags spill man vil kontrollere.

Jeg har til slutt valgt å gå for Roblox, siden en av oppgavene der er å kjøre pizzabud-bil, og det finnes allerede masse bra stoff rundt selvkjørende biler.

Jeg er ganske nærme å kunne gjøre bra nok "lane detection" - google it - til at jeg snart kan lære AI-en hvordan den skal kjøre.

I all hovedsak bruker man noen gamle algoritmer til å finne ut grafiske figurer i et bilde, gjennom OpenCV.

Og dersom de er skikkelig lange, og på siden i bildet, er det mest sannsynlig veiskulderen.

Slik ser det ut når AI-spilleren til Marius prøver å traversere Roblox. 📸: Privat
Slik ser det ut når AI-spilleren til Marius prøver å traversere Roblox. 📸: Privat Vis mer

Det er omtrent det man trenger for å lære en maskinlæringsmodell om bilkjøring. Da vil altså målet til modellen være å lære å holde bilen midt mellom disse stripende.

#4. Hva har vært den største utfordringen hittil?

Det er vært, og vil være. Samvittighet til å ta seg tid til en hobby.

#5. Hva er du mest stolt av i forbindelse med prosjektet?

At jeg innimellom tar meg tid til å jobbe med det. Og mulighet til å ta litt "hevn" over økosystemet rundt "slemme" barnespill.

#6. Bruker du prosjektet til noe spesielt i dag?

I wish!

Deskptopen Marius jobber fra . 📸: Privat
Deskptopen Marius jobber fra . 📸: Privat Vis mer

#7. Hva er fordelene med å ha et hobbyprosjekt?

Når ting ikke er så alvorlig slipper man seg mer løs. Og oppdager kanskje ting man ikke ville gjort ellers.

#8. Har du noen planer for prosjektet ditt fremover?

Har planer å implementere deler av computer vision delen i et jobbprosjekt. Bygger en robot som lager elektronikk, du kan skimte den i bakgrunnen på et av bildene.