Ladda ner artikeln på 800 kbyte här (länk, pdf). Fler tekniska rapporter finns på etn.se/expert |
Den första vågen autonoma konsumentrobotar är ett bra exempel. De kan dammsuga, tvätta mattor och till och med rensa hängrännor från höstlöv. Eller titta på de robotar som dyker upp på tillverkningslinor i alltfler typer av fabriker.
Den första generationen autonoma konsumentrobotar är dock ganska primitiva varelser när det gäller deras tillvägagångssätt för att att observera omgivningen och navigera i den. Ett av knepen är att sätta upp virtuella hinder i form av IR-sändare som robotens IR-sensorer kan koordinera sig mot – så att den inte ramlar nerför trappan eller går in i fel rum. Ett annat knep är att bygga in en stötsensor så roboten märker att den har kolliderat med ett stillastående objekt och därmed inte bör fortsätta åt samma håll, eller – om den är mer avancerad – att notera på en inbyggd karta att den inte ska komma tillbaka till samma plats igen. En industrirobot är visserligen överlägsen människan vid det löpande bandet när det gäller precision, tempo och ork. Men den är helt beroende av att de arbetsstycken som rullar fram är roterade och placerade på ett exakt sätt. Detta gör tillverkningsprocessen mer komplex – minsta avvikelse ger leder till fel i monteringen.
Vi människor använder ögonen (i huvudsak) och hjärnan för att se och navigera. Robotar kan i princip göra detsamma med hjälp av kameror, processorer och smarta algoritmer. Historiskt har den typen av bildanalys förekommit i ett fåtal komplexa dyra system. Men idag har priset på kretsarna som krävs sjunkit. Likaså deras strömförbrukning. Samtidigt har prestanda gått upp och därmed har möjligheten till avancerad bildanalys öppnats inom ett antal högvolymstillämningar, och det har bland annat börjat dyka upp allt fler seende robotar.
Visst – det finns en del utmaningar kvar för dem som implementerar systemen. Men aldrig förr har det funnits så enkla, snabba och kostnadseffektiva verktyg för att ta sig an dessa utmaningar [1].
Robotiserat seende kräver algoritmer som konverterar data från bildsensorer till information som går att omsätta i handling. En vanlig typ av robotuppgift är att identifiera externa objekt och deras orientering. En annan är att bestämma sin egen position och orientering. Många robotar är konstruerade för att interagera med en eller flera återkommande identiska objekt. En robot som kan detektera dessa objekt trots att deras position och orientering varierar – och trots att de kanske till och med rör sig – kallar vi för en adaptiv robot.
Kameror kan producera miljontals bildpunkter per sekund. Detta skapar en hög beräkningsbörda. Ett vanligt sätt att minska bördan är att först identifiera karaktäristiska bildelement eller kännetecken i bilden, som hörn, homogena regioner (blobs), kanter och linjer (Se figuren till höger).
En sådan transformation – från punkter till bildelement – kan minska beräkningsbördan med en faktor tusen eller mer. Miljoner punkter reduceras till några hundra karaktäristiska element som roboten pusslar samman till objekt med position och orientering.
Första steget i att identifiera objekt är att kombinera grupper av bildelement med hjälp av maskininlärning eller andra algoritmer. Efter att man jämfört kombinationerna med en databas av olika objekt ur olika synvinklar och roterade på olika sätt, kan roboten köra en klassificeringsalgoritm och tränas att korrekt identifiera nya objekt.
En av de mest kända objektigenkänningsagoritmerna heter Viola-Jones framework. Den arbetar med bildelement av en typ som kallas Haar, och utnyttjar en klassificeringsteknik som kallas Adaboost. Viola-Jones är särskilt bra på att känna igen ansikten men kan också tränas att känna igen andra vanliga objekt.
En nackdel med metoder baserade på maskininlärning är att att de behöver stora volymer träningsdata innan de kan göra korrekta klassificeringar. För att bestämma hur ett objekt är orienterat kan man använda algoritmer som exempelvis RANSAC (Random Sampling and Consensus) som baseras på statistik. Några typer av bildelement väljs ut och används för att modellera orientering, varefter algoritmen undersöker hur många av de övriga bildelementen som matchar modellen. Den modell som matchar flest bestämmer vilken objektrotation som är korrekt.
För att klassificera objekt som rör sig behöver man komplettera med en spårningsalgoritm. Efter att objektidentifieringen används algoritmer som KLT (Kanade-Lucas-Tomasi) eller Kalmanfiltrering för att spåra bildelement mellan bildrutor. Algoritmerna fungerar även när objekt byter orientering eller tillfälligt döljs eftersom man endast behöver spåra en delmängd av elementen.
Algoritmerna ovan kan vara tillräckliga för en stationär robot.
När det gäller rörliga robotar måste man addera ytterligare algoritmer som ser till att de kan röra sig tryggt. En kategori av sådan algoritmer heter SLAM (Simultaneous Localization and Mapping). SLAM bygger kartor av omkringliggande miljö samtidigt som den håller reda på robotens egen position. Det krävs tredimensionell kartläggning och flera djupdetekterande sensorbaserade metoder finns att välja mellan.
En metod är att härma människans ögon – två enkla kameror konfigureras som en stereokamera. Stereokameror använder så kallad epipolär geometri. 3D-koordinater för punkterna i scenen härleds genom projektioner från de två 2D-bilderna.
Bildelement kan inte bara användas för att analysera 2D-bilder utan också för att för att att detektera intressanta objekt i en 3D-scen. Exempelvis är det mycket enklare för en robot att detektera kanten av ett bord än en plan väggyta.
Allteftersom roboten rör sig eller roterar fortsätter den att detektera bildelement och jämföra med och uppdatera den interna karta den bygger upp för att lokalisera sig själv. Med tanke på att objekt i verkligheten ofta förflyttar sig är en statisk karta sällan till nytta för en robot som vill anpassa sig till sin omgivning.
Nu ska vi diskutera effektiva implementeringar av robotseende och då är det lämpligt att först dela upp de analyssteg som krävs i faser.
Bearbetning som beskrivs ovan kan exempelvis delas upp i fyra faser där varje fas har egna unika kännetecken och bivillkor vad gäller den beräkningskraft som krävs [1].
Det finns flera typer av processorer för bildanalys och de är olika lämpade de olika algoritmfaserna vad gäller prestanda, energikonsumtion, pris, flexibilitet och annat.
En och samma bildprocessor kan innehålla flera olika sorters beräkningskärnor för att adressera olika unika behov i beräkningsfaserna (se bilderna på nästa sida).
I den första fasen hittar vi algoritmer som preparerar sensordata på olika sätt:
• Skalning
• Färgrumskonvertering
• Bildrotering och invertering
• De-interlacing
• Färgjustering och mappning mellan färgomfång
• Gammakorrigering, och
• Kontrastering
Kännetecknande är att varje enskild bildpunkt bearbetas vilket resulterar i ett enormt antal operationer per sekund. I fallet med stereovision processas båda bilderna parallellt. Ett av alternativen är att använda ett dedikerat hårdvarublock, ofta kallat kallat IPU (Image Processing Unit). De senaste bildprocessorernas IPU:er kan hantera dubbla bilder med en upplösning på 2 048 5 1 536 punkter (drygt tre miljoner) i en stadig bildfrekvens.
Den andra fasen detekterar bildelement eller kännetecken, som tidigare diskuterats, genom att extrahera hörn, kanter och andra intressanta bildregioner.
Också detta sker på basis av en bildpunkt i taget, vilket betyder att man vill använda massivt parallella arkitekturer som i detta fall måste kunna hantera lite mer komplexa matematiska funktioner, som första- och andraderivata. Här är både DSP:er, FPGA:er, GPU:er (grafikprocessorer), IPU:er och APU:er (array processor units) möjliga alternativ.
DSP:er och FPGA:er är flexibla och därför lämpliga medan tillämpningarna och deras algoritmer fortfarande är omogna och utvecklas. Nackdelen ligger i energiförbrukning, prestanda och pris.
I andra änden av spektrumet mellan specialisering och flexibilitet hittar du IPU:er och APU:er med inbyggda operationer för bildanalys. Sådana kan utföra miljardtals operationer per sekund, men de är optimerade efter sina tillämpningar och erbjuder ingen bredare funktionalitet.
I mitten av spektrumet ligger grafikprocessorn. Den användes historiskt i datorer men finns idag också i approcessorer i smarttelefoner, pekplattor och andra högvolymsprodukter. De är väl lämpade för flyttalsberäkningar, som exempelvis minsta kvadratmetoden i optical flow-algoritmer, i deskriptorberäkningar i SURF-algoritmen (Speeded Up Robust Features algorithm – används för snabb igenkänning av viktiga punkter) och i punktmolnsberäkningar. Ett alternativ till GPU är SIMD-vektorprocessormotorer som ARM:s NEON eller Altivec-funktionsblocket i Power-CPU:er.
Oavsett vilket hårdvara man använder hittar man mjukvaruverktyg i ramverk och bibliotek som OpenCL (Open Computing Language) och OpenCV (Open Source Computer Vision Library). Dessa förenklar och snabbar upp kodutvecklingen. De tillåter också att man delar upp och allokerar beräkningsuppgifterna på olika kärnor.
I den tredje fasen ska systemet klassificera objekt baserat på mönstren av bildelement. Då är inte bearbetningen längre punktbaserad. Algoritmerna är istället mycket icke-linjära i sin struktur och i hur de accessar data. De kräver dessutom mycket beräkningssmuskler om det är många olika kännetecken som ska matchas mot en stor databas.
Här är konventionella risc-processor det ideala valet – exempelvis Power eller ARM-CPU:er i enkel- eller multikärnor.
Detsamma gäller fas nummer fyra, där man spårar klassificerade objekt mellan bildrutor, konstruerar en modell av miljön och bestämmer huruvida det föreligger några situationer som kräver åtgärder.
Generellt i alla faser gäller med tanke på hur dataintensiv bildanalys är, att du när du väljer processor inte bara ska titta på antalet kärnor och prestanda per kärna utan också vilken kapacitet att skyffla data den har, exempelvis i termer av extern minnesbussbandbredd.
Industry Alliance Assistance
– industrin hjälper till
Allteftersom kapaciteten ökat i processorer, bildsensorer, minnen och andra halvledare, och algoritmerna mognathar man kunnat börja inkorporera avancerad datorbildanalys i allt fler typer av inbyggda system.
Med ”inbyggt system” menas här mikroprocessorbaserade system utom generella datorer. Men ”inbyggt datorseende” avser vi implementationer av datorbaserad bildanalys i inbyggda system, mobila enheter, specialbyggda PC och i molnet.
Inbyggt datorseende (embedded vision) kan potentiellt göra många typer av elektroniska produkter (som de robotiserade system som nämns i denna artikel) intelligentare och mer responsiva än tidigare, och därmed värdefullare för sina användare. Tekniken kan addera värdefulla funktioner till befintliga produkter.
Dessutom kan tekniken skapa nya marknader för dem som tillverkar hårdvara, mjukvara och halvledare.
Embedded Vision Alliance – en världsomfattande organisation bestående av teknikutvecklare och -leverantörer – vill göra det möjligt för ingenjörer att förvandla dessa potentialer till verklighet.
Freescale och Mathworks som tillsammans skrivit denna artikel, är medlemmar i Embedded Vision Alliance vars primära uppdrag är att tillhandahålla utbildning, information och insikter till ingenjörer för att hjälpa dem att inkorporera inbyggt datorseende i nya och existerande produkter.
För ändamålet har organisationen utvecklat en webbplats (www.Embedded-Vision.com) där man kan hitta lektioner, video, källkod för nedladdning och ett diskussionsforum med tillgång till vitt skilda tekniska experter.
Registrerade användare kan dessutom bland annat erhålla alliansens nyhetsbrev två gånger i månaden.
Det kan också vara en god idé att besöka Alliansens endagsforum Embedded Vision Summit som nästa gång hålls i maj i Santa Clara i Kalifornien. Målgruppen är ingenjörer som är intresserade av att inkorporera visuell intelligens till elektroniska system och till mjukvara.
På agendan står how-to-presentationer, seminarier, demonstrationer och möjligheten finns att interagera direkt med Alliansens medlemsföretag.
För mer information om Embedded Vision Summit, inklusive registreringsformulär, kan du besöka www.embeddedvisionsummit.com.
Att omvandla en idé om robotics vision till en skeppad produkt kräver både gott omdöme och kompromissvilja. Embedded Vision Alliance är en katalysator för samtal och ett forum där man möter snabb förståelse för avvägningar och hur man gör dem. Alliansen hjälper att accelerera satsningar på produktifiering av avancerade robotsystem och tillåter systemutvecklare att effektivt ta i bruk teknik för datoriserad bildanalys.