Hvordan lære opp ditt eget kamera

- 4 mins

[English version – Engelsk versjon]

Bildegjenkjenning gjort enkelt. Slik gjenkjenner du en bestemt gjenstand ved hjelp av et kamera.


Utfordringen

Denne uken har jeg fått utfordringen å foreslå en løsning på følgende problem:

“Med en enkel datamaskin, som en Raspberry Pi, et kamera og et fuglebrett, lag et program som kan artsbestemme hvilke fugler som er innom brettet og spiser i løpet av en dag.”

Siden spørsmålet var av mer teoretisk art, bestemte jeg meg for å begrense dette innlegget til å introdusere byggeblokkene og gi en forklaring på hvordan du typisk kan bygge et slikt system.

Å gjenkjenne gjenstander er en ganske vanlig oppgave nå for tiden, og den har blitt løst på flere forskjellige måter, og med forskjellige tilnærminger. La oss se på hvordan dette virker.

TL;DR Det fins noen tradisjonelle måter å lage bilde- og gjenstandsgjenkjenning på, som i OpenCV, og det fins noen teknikker basert på Deep Learning, som i TensorFlow. Vil du vite mer? Fortsett å lese.


Litt teori

De mer tradisjonelle prinsippene bak OpenCV for å oppdage er godt beskrevet i dette blogginnlegget, så vel som i denne veiledningen for å gjenkjenne (hold dere fast!) katter på bilder.

Mens dette innlegget forklarer hvordan bildegjenkjenning virker i TensorFlow, som bruker en modell kalt dypt konvolverende nevrale nettverk, vil det også la deg trene opp din egen bildeklassifiserer, slik som OpenCV.

Training your own model

Noen må lære opp modellen som du skal bruke til bildeklassifisering (-gjenkjenning).

Hvor starter jeg?

I utgangspunktet har du to valg – du bør enten lære opp din egen modell eller finne en modell som har blitt lært opp av noen andre, og du vil kanskje alltid starte med å se etter en forhåndsopplært modell. Men jo mer spesifiserte bildeklassifiseringskravene dine er, jo høyere er sjansen for at du må lære opp din egen modell. Dette vil være det samme enten du velger OpenCV eller TensorFlow.

Siden vi vil kjøre modellen på en relativt enkel datamaskin, kan du vurdere å gjøre prosesseringen i skyen. Det bør imidlertid også være mulig å kjøre OpenCV og TensorFlow på den nyeste Raspberry Pi.


La oss kjøre bildegjenkjenning

Nå vet du litt om teorien. La oss så ta en rask titt på hvordan vi kan lære opp modellene i våre behov.

TL;DR Måten dette virker på, er at du viser modellen ganske mange bilder av en gjenstand, og en tilsvarende mengde bilder uten gjenstanden på.

La oss si at du vil bruke modellen til å gjenkjenne fugler utenfor huset ditt i Norge. Et godt utgangspunkt vil da være å få en liste over de typiske artene som du mest sannsynlig ser i hagen din, og samle så mange bilder av hver art som mulig.

Your own model in action

Din opplærte modell i aksjon.

Her er hva du kan gjøre:

  1. Start med å finne en liste over norske fugler på Wikipedia, eller Store Norske Leksikon.
  2. Søk på nettet etter bilder av hver fugleart. Det kan være du vil automatisere dette arbeidet, og sørg for at du plukker ut bilder med de riktige opphavsrettstillatelsene.
  3. Bruk disse bildene i opplæringen av din modell.
  4. Sett opp din Raspberry Pi med et kamera og fuglebrett, og gjør deg klar til å identifisere fuglearter. Du bør optimalisere programvaren slik at bildeklassifiseringen ikke skjer hele tiden, men kun når man ser en bevegelse.

Pro tip: Det kan også være litt utfordrende å ta gode bilder av våre fjærkledde venner, så sørg for at kameraet ditt er godt plassert, og materen er på et godt opplyst sted. Uten å forstyrre dyrelivet, så klart.

Lurer du på om lignende systemer har blitt implementert eller om det er mulig? Svaret er ja. Her er det noen lenker til inspirasjon for videre lesning:

Prøv nå å sette alt dette sammen, og fortell meg gjerne hvordan det går!

Lykke til!


Bonus: Video

En video vi har laget av mine tegninger og en kort forklaring på hvordan dette virker.


Rustam Mehmandarov

Rustam Mehmandarov

Passionate Computer Scientist