Rasmus Hurup Hansen Freelance systemudvikling
DA EN
Alle artikler AI på egen hardware

Vi kører plantegenkendelsen på vores egen GPU

PlantGeekz kan sætte navn på et plantebillede uden at spørge nogen udenfor. Modellen ligger på en server, vi selv ejer, og arbejder på et katalog med godt 860.000 accepterede plantenavne. Her er hvad det giver os, som en tjeneste udefra ikke gør.

FIG. 01 Målestok

Hvad der ligger bag et svar

Kort fortalt: et foto kommer ind, og der kommer et svar ud på tre niveauer. Familie, slægt og art, hver med sin egen sikkerhed. Ingen del af det foregår hos en tredjepart. Modellen hedder BioCLIP 2, den er offentligt tilgængelig med en MIT-licens, og den kører i en container på en Tesla T4 på vores egen server sammen med resten af PlantGeekz.

Indekset 438.176 arter modellen kender

Hvert artsnavn ligger som en vektor, et foto kan holdes op mod. Indekset tog fire timer at bygge og bliver kun bygget om, når taksonomien flytter sig.

Med billeder 76.895 arter med egne fotos oveni

Her har vi rigtige billeder ved siden af navnet. Det er det, der løfter artsgættet fra en tredjedel til omkring tre fjerdedele.

Kendte planter 83.715 planter genkendt individuelt

Ikke bare arten, men den præcise sort. Det kan en model, der kun kender navne, ikke gøre.

Tallene er læst af den kørende tjeneste, ikke regnet ud til lejligheden. To af dem går kun opad.

FIG. 02 Svaret

Den svarer på tre niveauer i stedet for ét

Det oplagte ville være at bede om ét artsnavn. Vi målte, hvad det ville koste os: på billeder modellen aldrig havde set, og med alle arter i spil, rammer et rent artsgæt rigtigt lidt over en tredjedel af gangene. Spørger man om slægten i stedet, rammer den to ud af tre. Spørger man om familien, rammer den knap otte ud af ti.

Så et enkelt artsnavn ville tage fejl langt oftere, end det ville ramme, og brugeren ville ikke kunne se forskel på de to. Derfor svarer tjenesten på alle tre niveauer og lader appen vise det, den tør stå inde for. Et sikkert familienavn er mere værd end et forkert artsnavn.

Oveni ligger et lag, der ikke gætter, men genkender. Har vi billeder af netop den sort i forvejen, sammenligner den fotoet direkte med dem. Er der én, der skiller sig klart ud fra de andre, svarer den med det fulde sortsnavn. Ligner to sorter hinanden for meget, tier den og lader artssvaret stå. Det er den opførsel, der gør, at man kan stole på den, når den endelig siger noget præcist.

Ét foto
  1. Foto
  2. Familie
  3. Slægt
  4. Art
  5. Præcis denne sort

Hvert led har sin egen sikkerhed. Appen viser dem, der holder, og springer resten over.

FIG. 03 Fordelene

Hvorfor den står hjemme hos os selv

Det havde været hurtigere at sende billederne til en færdig tjeneste. Her er de seks grunde til, at vi ikke gjorde det.

A

Prisen stiger ikke med brugen

Et opslag hos en ekstern tjeneste koster penge hver eneste gang. Vores koster strøm på en maskine, vi allerede har. Om der kommer tusind eller hundrede tusind billeder igennem på en måned, flytter ikke regningen nævneværdigt. Det betyder også, at vi kan lade folk prøve igen uden at kigge på en tæller.

B

Billederne bliver, hvor de er

Brugernes fotos forlader aldrig vores egen server. Der er ingen, vi skal spørge om, hvad de gemmer, hvor længe de gemmer det, eller om det ender som træningsdata et sted, vi ikke kan se.

C

Ingen kan lukke den

Modellen er åben og ligger på vores disk. Ingen kan hæve prisen fra den ene måned til den anden, ændre vilkårene eller lukke et endpoint, vi har bygget et produkt ovenpå. Det er en risiko, man kun opdager, når den udløser.

D

Vi kan måle på den

Vi kan holde en ændring op mod præcis de samme billeder som sidste gang og se, om tallet faktisk gik op. Det kan man ikke, når svaret kommer fra en sort boks, der bliver opdateret uden varsel. Vores vægtning mellem navn og billede er valgt, fordi den vandt en måling, ikke fordi den lød rigtig.

E

Den kender lige præcis vores planter

Store modeller kender arter. De kender ikke de tusindvis af sorter, folk rent faktisk har stående. En almindelig hassel og en purpurbladet hassel har samme artsnavn og ligner ikke hinanden. Vores lag kan skelne dem, fordi det arbejder på billeder af de præcise planter i stedet for på navne.

F

Den bliver skarpere af sig selv

Hvert godkendt brugerbillede gør genkendelsen bedre næste morgen. Vi køber ikke en ny version, og vi gentræner ikke noget. Vi har bare flere eksempler i dag, end vi havde i går.

FIG. 04 Kredsløbet

Den lærer om natten, uden at nogen træner noget

01

Nogen tager et billede

En bruger lægger et foto op af sin egen plante og hænger det på det navn, planten har i systemet.

02

Et menneske ser på det

Intet billede kommer med i grundlaget, før en moderator har godkendt det. Det er den eneste manuelle del af hele kredsløbet, og den er der med vilje.

03

Klokken halv seks om morgenen

Et natligt job regner de nye billeder ind i genkendelsen og genstarter tjenesten. Er der ikke kommet noget nyt, stopper det efter et sekund uden overhovedet at røre GPU'en.

04

Skarpere til morgenmad

Ingen vægte er ændret, og ingen model er gentrænet. Den har simpelthen flere billeder at holde det næste foto op mod. Det er også derfor, det tager minutter og ikke timer.

FIG. 05 Afgrænsning

Hvad den kan, og hvad den ikke kan

Den slags løsninger bliver hurtigt solgt som mere, end de er. Så her står begge lister.

Det kan den
  • Sætte familie, slægt og art på et plantefoto med hver sin sikkerhed
  • Genkende den præcise sort, når vi har billeder af den i forvejen
  • Sige fra, når to sorter ligner hinanden for meget til et sikkert svar
  • Køre videre, selv om en ekstern tjeneste er nede eller lukker
  • Blive bedre hver nat, uden at nogen rører en model
Det kan den ikke
  • Gætte rigtigt på en sort, vi aldrig har fået et billede af
  • Redde et sløret nærbillede af et blad uden andet at gå efter
  • Kende sygdomme, skadedyr eller mangeltilstande
  • Erstatte en botaniker, når svaret virkelig skal holde

Det tekniske ved opgaven var ikke det svære. Det svære var at finde ud af, hvad systemet skulle svare, når det ikke var sikkert, og at bygge det, så det bliver bedre af at blive brugt i stedet for at stå stille. Det er den slags valg, der afgør, om sådan et system holder i drift eller bliver noget, ingen længere tør vise frem.

FIG. 06 Videre

Mere at læse

Skrevet 2026-08-26
Læsetid 6 min

Oversættelse uden en token-regning

PlantGeekz findes på 16 sprog. Noget skrives med en betalt model, resten oversættes på vores egen GPU. Hvorfor den billige model ikke er en genvej, når teksten er fuld af botaniske navne.

  • Ollama
  • translategemma
  • fastText
  • i18n
Læs artiklen
Skrevet 2026-08-11
Læsetid 4 min

Store datamængder

Hvad der sker med et system, når tabellerne vokser fra hundrede tusind rækker til tyve millioner. Hvad det koster ikke at have styr på datamodellen, og hvad jeg gør ved det.

  • MySQL
  • Datamodellering
  • Ydelse
  • Drift
Læs artiklen

Har I noget, der skal bygges ordentligt?

Skriv et par linjer om, hvad I sidder med. Så vender jeg tilbage med, hvad jeg tænker. Også hvis svaret er, at en anden løser det bedre.