Kan du huske nummerpladescanneren på 86 millioner dollars, som jeg replikerede? Jeg fangede nogen med det.

Husker du nummerpladescanneren på 86 millioner dollars, som jeg replikerede? Jeg fangede nogen med det.

For et par uger siden offentliggjorde jeg, hvad jeg troede på det tidspunkt var en ret uskadelig artikel: Hvordan jeg replikerede et projekt på 86 millioner dollars i 57 kodelinjer.

Jeg indrømmer - det var et ret krav om lokkemad. Jeg sagde i det væsentlige, at jeg havde gengivet den samme nummerpladescanning og valideringsteknologi, som politiet i Victoria, Australien lige havde betalt 86 millioner dollars for.

Siden da har reaktionerne været overvældende. Min artikel modtog over 100.000 hits den første dag, og ved sidste øjekast sidder der et sted omkring 450.000. Jeg er blevet inviteret til at tale i lokale radio-talkshows og på en konference i Californien. Jeg tror, ​​at nogen måske har læst Victoria, AU forkert som Victoria, BC.

Selvom jeg høfligt afviste disse tilbud, har jeg mødt til kaffe med forskellige lokale udviklere og store navneselskaber. Det har været utroligt spændende.

De fleste læsere så det for, hvad det var: et bevis på koncept til at udløse diskussioner om brugen af ​​open source-teknologi, offentlige udgifter og en mands ønske om at bygge seje ting fra sin sofa.

Pedanter har påpeget manglen på træning, support og sædvanlige enterprise-omkostningspudere, men det er ikke værd at nogens tid på at udforske disse. Jeg vil hellere bruge dette indlæg på at se på mine resultater, og hvordan andre kan gå rundt om at styrke deres egen nøjagtighed.

Før vi kommer for dybt ind i resultaterne, vil jeg gerne gå igennem en ting, som jeg føler var tabt i det oprindelige indlæg. Konceptet for dette projekt startede helt adskilt fra BlueNet-projektet på $ 86 millioner. Det var på ingen måde et forsøg på at slå det af.

Det startede med den nagende tanke, at da OpenCV eksisterer, og VicRoads-webstedet har nummerpladekontrol, skal der være en måde at kombinere de to på eller bruge noget bedre.

Det var først, da jeg begyndte med min opskrivning, at jeg snuble over BlueNet. Mens jeg opdagede BlueNet og dets prisskilt gav mig en stor redaktionel vinkel med koden allerede skrevet. Der var sandsynligvis nogle uoverensstemmelser mellem projekterne.

Jeg tror også, at en del af grunden til, at dette sprængte, var den bekvemme timing af en rapport om spild af offentlige it-udgifter i Australien. Forbundsregeringens it-regning er steget fra 5,9 milliarder dollars til 10 milliarder dollar, og den leverede tvivlsom værdi for det udbrud. Medieforskere, der kontaktede mig, var hurtige til at forbinde de to, men det er ikke noget, jeg er hurtig til at opmuntre til.

En ansvarsfraskrivelse

I ånden af ​​gennemsigtighed må jeg erklære noget, der også manglede i det oprindelige indlæg. Min tidligere arbejdsgiver leverede mindre (mindre end $ 1 million) it-projekter til Victoria Police og andre statslige organer. Som et resultat har jeg gennemgået kontrol af politiet og udfyldt de formularer, der kræves for at blive VicPol-entreprenør.

Dette kan antyde, at jeg har en økse til at male eller har en bestemt insiderviden, men i stedet er jeg stolt af de projekter, vi leverede. De var både til tiden og på budgettet.

Visualisering af resultaterne

Det følgende er en videorepræsentation af mine resultater, sammensat i After Effects for lidt sjov. Jeg optog forskellige testoptagelser, og dette var det mest succesrige klip.

Jeg vil gå i detaljer om ideelle kameraopsætninger, registreringsregioner og mere efter videoen. Det vil hjælpe dig med bedre at forstå, hvad der gjorde denne iPhone-video, jeg tog fra forruden, til en bedre video end en Contour HD, der vinklede ud af sidevinduet.

Et etisk dilemma

Hvis du så heltegrafikken i denne artikel eller så videoen ovenfor, har du måske bemærket en meget interessant udvikling: Jeg fangede nogen .

Specifikt fangede jeg nogen, der kørte et køretøj med en annulleret registrering fra 2016. Dette kunne være sket af mange grunde, hvoraf den mest uskyldige er en risikabel videresalgspraksis.

Lejlighedsvis, når privat salg af et køretøj ikke sker i bogen, kan køber og sælger muligvis ikke gennemføre en officiel overførsel af registrering. Dette sparer køberen hundreder af dollars, men køretøjet er stadig registreret hos sælgeren. Det er ikke uhørt for en sælger at derefter annullere registreringen og modtage en ad hoc-tilbagebetaling af de resterende måneder, også værd hundreder af dollars.

Alternativt kan føreren af ​​køretøjet meget vel være den kriminelle, vi har mistanke om, at de er.

Så selvom jeg sjovt navngav projektets pladestik, da jeg satte det op på min computer, står jeg nu over for gåde om, hvorvidt jeg skal rapportere, hvad jeg så.

I sidste ende blev chaufføren opdaget ved hjælp af en prototype af en enhed, der kun er politi. Men at køre på en 2016-registrering (annulleret, ikke udløbet) er et meget bevidst træk. Hmm.

Tilbage til resultaterne

Af de mange reaktioner på min artikel var en betydelig mængde ret bogstavelig og tvivlsom. Da jeg sagde, at jeg replikerede softwaren, hævdede de, at jeg skal have et supportcenter, garantier og træningsmanualer. Man forsøgte endda at replikere mine resultater og ramte de uundgåelige blokeringer af billedkvalitet og kildemateriale.

På grund af dette antydede nogle, at jeg kirsebærplukkede mine kildebilleder. Til det kan jeg kun sige "Nå, duh."

Da jeg byggede mit første bevis på konceptet (igen med fokus på validering af en idé, ikke replikering af BlueNet), brugte jeg et lille prøvesæt på mindre end ti billeder. Da kameraopsætning er en af, hvis ikke de vigtigste, faktorer i ALPR, valgte jeg dem til ideelle egenskaber, der forbedrer genkendelsen.

I slutningen af ​​dagen er det meget simpelt at tage et skrøbeligt bevis på konceptet og bryde det. Den sande innovation og udfordring kommer fra at tage et bevis på konceptet og få det til at fungere . I løbet af min professionelle karriere har mange seniorudviklere fortalt mig, at ting ikke kan gøres eller i det mindste ikke kan gøres rettidigt. Nogle gange havde de ret. Ofte var de bare risikovillige.

"Intet er umuligt, før det er bevist, at det er det."

Mange mennesker bastardiserer dette citat, og du har måske set eller hørt en af ​​dets inkarnationer før. For mig opsummerer det pænt en sund udviklingsindstilling, hvor spiking og validering af ideer næsten er obligatorisk for at forstå dem.

Optimale ALPR-kameraopsætninger

Dette projekt er så spændende og anderledes for mig, fordi det har en klar succesmåling - om softwaren genkender pladen. Dette kan kun ske med en kombination af hardware, software og netværksløsninger. Efter at have sendt min originale artikel tilbød folk, der sælger ALPR-kameraer, hurtigt råd.

Optisk zoom

Den mest oplagte løsning i eftertid er brugen af ​​en optisk zoom. Selvom jeg udforsker andre vigtige faktorer nedenfor, fører ingen til en så stor stigning i anerkendelse som denne. Generelt forskydes professionelle ALPR-løsninger i en vinkel, trænes i, hvor nummerpladen vil være, og zoomet ind i området for at maksimere klarheden.

Dette betyder jo mere zoom, flere pixels at spille med .

Alle de kameraer, jeg havde til rådighed, var af en fast linse. De omfattede:

  • Et Contour HD-actionkamera. Disse kom ud i 2009, og jeg bruger min til at registrere min cykelpendling og til at afspille hver uges næsten dødsoplevelse.
  • En Fujifilm X100S (berømt en fast prime-linse)
  • Min iPhone 6+

Den valgte testkørsel blev optaget på min telefon. Min eneste metode til at replikere en optisk zoom var at bruge en app til at optage ved 3K i stedet for 1080p og derefter zoome og beskære digitalt. Igen flere pixels at spille med.

Vinkel og positionering

Betragtningsvinklen på 30 ° omtales ofte som standarden for ideel pladegenkendelse. Dette er utroligt vigtigt, når du lærer, at BlueNet bruger en række kameraer. Det giver også mening, når man overvejer, hvad et frontvendt kamera generelt ser - ikke meget.

Hvis jeg skulle gætte, ville jeg sige, at et stort set fremadrettet array ville være det ideelle setup. Det ville bestå af et enkelt kamera peget dødpunkt som ovenfor, to uden for midten ved 30 ° hver side og et enkelt bagudvendt kamera. Værdien af ​​at have de fleste kameraer peget fremad kommer fra den øgede reaktionstid, hvis køretøjet kører i den modsatte retning. Dette ville muliggøre en hurtigere scanning, proces og drejning end hvis de bagudvendte kameraer afhentede et mistænkt køretøj, der allerede var ti meter forbi politiets køretøj.

En gymbal

Når jeg sammensatte videoen, tænkte jeg på at stabilisere optagelserne. I stedet valgte jeg at vise den ujævn tur for, hvad den var. Hvad du så var, at jeg holdt min telefon nær forruden, mens min kone kørte. Tjek den strenge videnskabelige metode.

Andre vigtige faktorer

Billedhastighed

Både forsøget på at replikere mit projekt og mine optagelser siden da udforskede den samme misforståelse om, at ALPR-sampling-frame rate kan være knyttet til succes. Efter min erfaring gjorde dette intet andet end affaldscyklusser. I stedet er det utroligt vigtigt, at lukkerhastigheden skaber rene, skarpe optagelser, der føjes godt ind i algoritmen.

Men jeg testede også ret lave hastighedsoptagelser. To køretøjer, der passerer hinanden i en zone på 60 km / t, skabte højst en forskel på 120 km / t. BlueNet kan derimod arbejde op til en påstået 200 km / t.

Som en måde at løse dette på foreslog en kollega genstandsdetektion og behandling uden for båndet. Identificer et køretøj og tegn en afgrænsningsboks. Vent til den kommer i den ideelle genkendelsesvinkel og zoom. Tag derefter en serie fotos til asynkron behandling.

Jeg kiggede på brugen af ​​OpenCV (node-opencv) til genkendelse af objekter, men jeg fandt noget enklere som ansigtsgenkendelse, der tog alt fra 600 til 800 ms. Ikke kun mindre end ideel til min brug, men generelt ret dårlig.

Hype-tog TensorFlow kommer til undsætning. I stand til at køre på enheden er der eksempler på projekter, der identificerer flere køretøjer pr. Ramme med forbløffende 27,7 fps. Denne version kan endda afsløre hastighedsestimationer. Juridisk værdiløs, men måske nyttig i politiet hver dag (ingen fps benchmark i readme).

For bedre at forklare, hvordan højtydende køretøjsgenkendelse kunne kombineres med langsommere ALPR-teknikker, oprettede jeg en anden video i After Effects. Jeg forestiller mig, at de to, der arbejder hånd i hånd, ser sådan ud:

Billedhastighed versus lukkerhastighed

En anden manifestation af billedhastighed påvirkes i vid udstrækning af lukkerhastigheden, og mere specifikt, rullende lukkerproblemer , der plager tidlige eller lave digitale filmoptagere. Følgende er et øjebliksbillede af nogle Contour HD-optagelser. Du kan kun se 60 km / t, at problemet med rullende lukker gør optagelserne mere eller mindre ubrugelige set fra et ALPR-synspunkt.

Justering af billedhastighed på både Contour HD og min iPhone resulterede ikke i mærkbart mindre forvrængning. I teorien skal en højere lukkerhastighed give klarere og skarpere billeder. De ville blive stadig vigtigere, hvis du skulle jage BlueNet-benchmarket på 200 km / t. Mindre sløring og mindre rullende lukkerforvrængning vil ideelt set føre til en bedre læsning.

Åbn ALPR-version

En af de mere interessante opdagelser var, at den node-openalpr-version, jeg brugte, både er forældet og ikke nær så stærk som deres proprietære løsning. Mens et open source-krav bestemt var en faktor, var det forbløffende, hvor præcist skyversionen med succes kunne læse rammer, som jeg ikke engang kunne identificere en plade på.

ALPR-træningsdata

Jeg fandt også ud af, at den primære node-openalpr-pakke som standard er landebehandling i USA uden nogen måde at tilsidesætte den. Du er nødt til at trække en andens gaffel ned, som giver dig mulighed for derefter at angive en ekstra landeparameter.

Men det hjælper ikke altid. Ved hjælp af den amerikanske standardalgoritme var jeg i stand til at producere flest resultater. At specificere det australske datasæt halverede faktisk antallet af vellykkede pladelæsninger, og det lykkedes kun at finde en eller to, som den amerikanske algoritme ikke kunne. At levere det separate "Australian Wide Plate" -sæt halverede optællingen igen og introducerede en enkelt ekstra plade.

Der er helt klart meget at ønske sig, når det kommer til australske-baserede datasæt til ALPR, og jeg tror, ​​at det store antal pladetyper, der findes i Victoria, er en medvirkende faktor.

Planarvninger

Åben ALPR leveres med et bestemt værktøj til at reducere virkningen af ​​forvrængning fra både kameraets vinkel og rullende lukker. Plan kæde henviser til en metode, hvor koordinater sendes til biblioteket for at skæve, oversætte og rotere et billede, indtil det ligner en lige plade.

I min begrænsede testoplevelse kunne jeg ikke finde en plan kæde, der fungerede ved alle hastigheder. Når du overvejer rullegardin, er det fornuftigt, at forvrængningen vokser i forhold til køretøjets hastighed. Jeg kan forestille mig at fodre accelerometer eller GPS-hastighedsdata, da en koefficient måske fungerer. Eller du ved, få et kamera, der ikke er fuldstændigt skrald.

Hvad andre laver i branchen

Talrige læsere rakte ud efter det sidste indlæg for at dele deres egne oplevelser og ideer. Måske var en af ​​de mere interessante løsninger, der blev delt med mig, af Auror i New Zealand.

De anvender faste ALPR-kameraer i tankstationer for at rapportere om personer, der stjæler benzin. Dette er i sig selv ikke særlig nyt og revolutionerende. Men når de kombineres med deres netværk, kan de automatisk oprette en alarm, når kendte lovovertrædere er vendt tilbage, eller de målretter mod tankstationer i området.

Uafhængige udviklere i Israel, Sydafrika og Argentina har vist interesse for at opbygge deres egne hackede versioner af BlueNet. Nogle vil sandsynligvis klare det bedre end andre, da steder som Israel bruger syvcifrede nummerplader uden alfabettegn.

Vigtigste takeaways

Der er simpelthen for meget, som jeg har lært i de sidste par uger med at dabble for at passe ind i et indlæg. Mens der har været masser af modstandere, sætter jeg virkelig pris på den støtte og viden, der er sendt min vej.

Der er mange udfordringer, du vil stå over for i forsøget på at opbygge din egen ALPR-løsning, men heldigvis er mange af dem løst problemer.

For at sætte tingene i perspektiv er jeg designer og frontend-udvikler. Jeg har brugt cirka ti timer nu på optagelser og kode, yderligere otte på videoproduktion og mindst yderligere ti på opskrivninger alene. Jeg har opnået det, jeg har, ved at stå på giganternes skuldre. Jeg installerer biblioteker bygget af intelligente mennesker og har brugt rådgivning fra folk, der sælger disse kameraer for at leve.

Spørgsmålet på 86 millioner dollars forbliver stadig - hvis du kan opbygge en halv-arsed løsning, der gør et okay job ved at stå på giganternes skuldre, hvor mange flere penge skal du hælde for at gøre et virkelig godt stykke arbejde?

Min løsning er ikke engang i det samme solsystem som den 99,999% nøjagtige scanner, som nogle internetkommentarer synes at forvente. Men så igen skal BlueNet kun opfylde et 95% nøjagtighedsmål.

Så hvis $ 1 million får dig til 80% nøjagtighed, og måske $ 10 millioner får dig til 90% nøjagtighed - hvornår holder du op med at bruge? Desuden, i betragtning af at teknologien har bevist kommercielle applikationer her i Oceanien, hvor meget mere skatteydernes penge skal der hældes i en proprietær, nærliggende løsning, når lokale startups kunne drage fordel? Australien skal trods alt være en ”innovationsnation”.