ALVINN Ett autonomt styrsystem Linköpings Universitet 910821-1096 2011-09-19
Abstrakt I detta arbete kommer jag att presentera AN AUTONOMOUS LAND VEHICLE IN A NUERAL NETWORK (ALVINN), ett neuralt nätverk med som är designat för att få en bil att färdas och hålla sig kvar på vägen. Jag kommer att beskriva hur ALVINNs arkitektur ser ut och hur den har förändrats med åren. Jag kommer även att skildra de träningssätt som har tillämpats på ALVINN och beskriva varför on-the-fly träning var så mycket mer framgångsrikt än den träningen som tidigare tillämpades på ALVINN. Avslutningsvis beskriver jag hur DUAL VIEW LANE TRANSITION (DVLT) fungerar. Det är ett system vars uppgift är att få autonoma styrsystem som ALVINN att genomföra ett lyckat filbyte. 2
Innehållsförteckning Abstrakt. 2 1. Inledning.. 4 2. Nätverkets Arkitektur..5 2.1 Nyare Arkitektur.6 3. Träning 7 3.1 On-the-fly Träning.9 4. Filbyte.. 11 5. Diskussion. 13 6. Referenser 14 3
1. Inledning I dagens samhälle är bilkörning ett måste men som alla vet är det fyllt av faromoment. Därför plöjs det ner enormt mycket tid och pengar i utvecklingen av säkra bilar. Det är inte bara bilbältena som blir bättre utan även antisladdsystem och airbags är exempel på riktiga livräddare. Dessa system är en del av bilen som gör det säkrare att köra bilen, men tänk om möjligheten hade funnits att inte behöva köra bilen, utan endast att åka med den. Det skulle kunna minska antalet olyckor då t.ex. folk somnar vi ratten markant. ALVINN är ett av de tidigare systemen som utvecklades i hopp om att uppnå detta mål. ALVINN testades med hjälp av NAVLAB, en ombyggd van som innehöll 3 SUN datorer, en warp dator, en videokamera och en avståndsmätare[1]. Med hjälp av bilder från videokameran samt avståndsmätaren på NAVLAB erhålls ALVINN representationer av vägen och genom att bearbeta representationerna kan ALVINN bestämma om bilen bör köra rakt fram eller svänga och i så fall hur mycket bilen borde svänga. Hur detta fungerar är vad jag mer detaljerat kommer beskriva i mitt arbete. Jag har försökt att använda mig av så mycket svenska termer som möjligt, men i vissa fall har jag inte hittat någon översättning som jag finner lämplig och då har jag använt mig av det engelska uttrycket. 4
2. Nätverkets arkitektur ALVINNs tidigare arkitektur består av ett Back-propagation nätverk i tre lager[1]. Backpropagation är en metod som kan användas för att lära ett neuralt nätverk att utföra en viss uppgift, som i det här fallet är att köra en bil. En back-propagation kan delas upp i två delar. Det finns en forward sweep och en backward sweep. Forward sweep innebär att input (bilderna) hanteras och beroende på vägplacering genereras en output (rattutslag). Sedan applicerar man en backward sweep vilket innebär att outputen körs igenom nätverket där den jämförs med det önskade output värdet (önskade rattutslaget) så att man kan se om det finns någon skillnad mellan dessa. Figur 1. ALVINNs tidigare arkitektur bestående av tre lager. Inmatningslagret i den tidigare arkitekturen består av tre olika enheter. Två stycken receptorer, eller retinas, och en väg intensitet feedback enhet. Väg-intensitets feedback enheten anger om vägen är ljusare eller mörkare än på den förra bilden. De två receptorerna fungerar som NAVLABS ögon. Den ena receptorn är en videoenhet som omvandlar digitala bilder till 30x32 enheter. Omvandlingen sker eftersom det underlättar för systemet att hantera bilder av låg resolution då varje enhet motsvarar ett större område än den hade gjort om bilderna inte hade omvandlats. 30x32 bilderna använder sig utav den blåa färgens våglängdsspektrum eftersom det ger den bästa kontrasten mellan vad som är väg och inte väg. Intensiteten i enheterna talar alltså om för systemet vad som väg och icke väg. Den andra 5
receptorn är ett hjälpmedel för att upptäcka eventuella hinder på vägen. Dessa bilder är 8x32 enheter och fångas av en avståndsmätare istället för av en videokamera. Där mäts istället intensiteten i enheten av ett hinders närhet till fordonet. De drygt 1200 enheterna i inputretinan är kopplade till de 29 gömda enheterna som i sin tur är anslutna till output lagret. Till de gömda enheterna kan t.ex. olika breda vägar kopplas, eller en väg med ett visst hinder. Då en input med ett liknande hinder kopplas till de gömda enheterna så informeras output lagret och det blir det lättare att välja ett korrekt rattutslag i output-enheterna. Kopplingen mellan input och de gömda enheterna kallas för vikter, så när vikterna ändras innebär det att nya typer av vägar, eller nya hinder, lagras i de gömda enheterna. I output lagret finns de 46 output enheter som är uppdelade i två delar. En av output enheterna är väg-intensitetsfeedback enheten och de andra 45 av output enheterna är representationer av hur bilen ska färdas för att hålla sig mitt i vägen. Den mellersta output enheten är en representation av att köra rakt fram, men ju längre vänster eller höger ut vi kommer bland output enheterna desto mer rattutslag befordras. Det finns en önskad output vektor, alltså ett visst antal aktiveringsvärden som motsvarar ett visst rattutslag. När en outputs aktiveringsnivå matchar en av de önskade output-värdena vet systemet hur mycket rattutslag det ska ge för att lyckas genomföra svängen utan några missöden. De önskade output värdena är även det som backward-sweepen ser till att output värdena i output lagret matchas med. 2.1 Nyare arkitektur Arkitekturen som är presenterad ovan är en av de tidigare arkitekturerna för ALVINN. Några år senare presenterades en nyare arkitektur som ser lite anorlunda ut jämfört med den tidigare arkitekturen. Jag tänkte presentera den för att visa vilka ändringar som har framförts gentemot den lite äldre representationen av ALVINNs arkitektur [3]. Strukturen består fortfarande av en back-propagation med tre lager. Denna arkitektur använder dock endast video input Retinan, men bilderna är fortfarande 30x32 stora där de 960 enheterna från 30x32 bilden är direkt kopplade till 5 gömda enheter istället för 29 enheter, som det är i den lite äldre arkitekturen. Dessa är i sin tur direkt kopplade till output enheterna som i den nyare arkitekturen är 30 stycken istället för 46. Det skrivs inte varför avståndsmätar- enheten eller intensitetes-feedback-enheten har tagits bort eller varför man använder sig av mindre gömda enheter samt färre outputs. Min gissning skulle vara att med den nya on-the-fly träningen som senare kom att tillämpas på ALVINN så krävdes varken 6
avståndsmätar-enheten eller intensitets-feeback-enheten. Att antalet gömda enheter och output enheter har minskat tror jag beror på att det ska gå snabbare att utföra en forward-sweep. Detta skulle innebära att flera forward-sweeps kan utföras på samma tid som innan, vilket skulle tillåta systemet att färdas snabbare. Figur 2. ALVINNs nyare arkitektur. 3. Träning Att träna upp ALVINN att köra på ett underlag är ett kriterium för att ALVINN inte ska köra av vägen. Rätt rattutslag tillsammans med vägens intensitets-feedback behöver överensstämma och en av de tidigare metoderna att träna ALVINN på gjordes med hjälp av en väg simulator, som given en mängd parametrar skapar en bild av en väg och på detta sätt går det att fixa all data som krävs för att ALVINN skall kunna färdas på egen hand [1]. Vägsimulatorn använder sig av nästan 200 parametrar för att kunna skapa tillräckligt realistiska representationer av vägen. Dessa representationer motsvarar inte enbart input ifrån videokamera enheten utan även representationer ifrån avståndsmätaren skapas för att ALVINNs träning även ska kunna innefatta hinder av olika slag. Detta är bara ett fåtal exempel på några av de nästan 200 parametrar som väg-simulatorn tar i beaktning för att skapa simulerade väg representationer. Vägens riktning 7
Vägens krökning Vägens bredd Storlek på hinder Form på hinder Positionering av hinder Åt vilket håll videokameran är riktad Hur mycket av vägen som är täckt av skugga En riktig bild av en väg en simulerad bild av en väg Figur 3. Bilden till vänster är en väg-bild som har omvandlats till 30x32 format och bilden till höger är en simulerad väg-bild. För att träna nätverket används back-propagation och simulerade foton. En del av träningen är att generera 1200 foton och detta görs genom att variera mellan de olika parametrarna som används i väg simulatorn. Sedan utförs back-propagation med de foton som har genererats till dess att man endast tror att asymptotiska förändringar kan göras. Alltså när man inte längre tror att några stora förbättringar längre. I början av träningen ges ALVINN även slumpmässiga väg-intensitets nivåer, alltså hur mörk eller ljus vägen är. Detta görs för att ALVINN inte enbart ska lära sig att kopiera intensitetsnivån från input till output men även lära sig att se skillnad på relativt olika typer av vägar eller väg förhållanden. Då ALVINN väl är ute och kör på riktiga vägar skiljer sig knappast den ena bildens intensitets nivåer ifrån den andra, men efter en tids körning kommer systemet att ha utvecklat en förmåga att bedöma en bilds intensitetsnivå, beroende på bildens karaktär och då frågar man systemet om vägen var mörkare eller ljusare än icke vägen. Detta görs för att motionera programmet och det blir då snabbare på att bestämma huruvida fordonet bör färdas för att hålla sig kvar på vägen. 8
Det finns olika metoder för att utvärdera ALVINNs utförande. En av metoderna utförs genom att används sig av de 1200 generade bilderna från väg simulatorn. Efter att ha kört 40 rundor eller epoker med dessa bilder så kan ALVINN vid 90 % av fallen välja ett rattutslag som faller mellan två av de önskade aktiveringsvärdena. Ett annat sätt att testa ALVINN på är att låta ALVINN köra längs en simulerad väg på ett test område. Efter den träningen som beskrivs ovan kan ALVINN färdas längre sträckor utan att köra av den simulerade vägen. Vid tester då systemet endast kördes på SUN datorer så kunde ALVINN köra i ½ meter per sekund [1]. Det finns dock ett problem med denna, lite äldre typen av träning och det är att den är enormt tidskrävande. Det tog hela 6 timmar att generera alla 1200 bilderna som krävdes för att kunna träna systemet, sedan tog det ytterligare 45 minuter att träna systemet med de givna bilderna innan man kunde ge sig ut och köra [3]. Det här löstes med hjälp av on-the-fly träning. 3.1 On-the-fly Träning Den tidigare typen av träning var väldigt tids krävande, men det skulle även bli ett problem att hantera mer komplex körning som t.ex. körning utanför vägen eller på en flerfilig väg, så efter några år utvecklades ett träningsschema som benämnde on-the-fly träning. Vad detta innebär är att nätverket istället inspekterar hur en människa kör och försöker sedan att efterlikna människans körsätt. Videokamerans bilder som fångas under turen är systemets input, och hur människan kör, hanterar kurvor och svänger blir den önskade outputen. Till detta tillämpas även back-propagation [3]. Det finns dock två problem med on the fly träning. Det första problemet är att om det blir många långa och raka vägar så kan systemet glömma bort hur det borde hantera kurvtagningar och det finns en ökad risk att ALVINN dirigerar NAVLAB rakt fram i en kurva. Det andra problemet som kan uppstå när systemet observerar en människa är att föraren kör lite för bra för systemet. Föraren tenderar oftast att förhålla sig nära mittlinjen och svävar sällan ut mot vägkanten. När systemet sedan ska köra på egen hand kan det hända att det missbedömer en bild och tar då av ut mot vägkanten. Eftersom systemet inte har upplevt en sådan situation då det observerat människans körsätt, så kan det bli problematiskt med att navigera tillbaka till mittlinjen igen. För att lösa dessa problem modifierades on-the-fly träningen en aning och istället för att bara hantera den aktuella bilden av vägen, hanterar ALVINN ytterligare 14 9
bilder. Dessa bilder är ursprungligen samma bild som videokameran har fångat, men det har blivit justerade i sidled och detta har uppnåtts genom att de enheterna längst ner på bilden flyttas mer i sidled än vad enheterna i toppen av bilden flyttas(se bild 4). Det korrekta rattutslaget ändras alltså beroende på vilken av bilderna som processeras och på så vis lär sig ALVINN att hantera en situation då bilen befinner sig närmare vägkanten än mitten av filen. När dessa 15 bilder sedan har processerats så undersöks vilka 10 bilder som var minst felaktiga i rattutlsagsval, och dessa ersätts av 10 andra bilder för att minska risken för att systemet ska övertränas på specifika situationer, tex som långa och raka vägar. De resterande 5 bilderna ersätts av 5 slumpmässigt valda bilder ifrån tränings datan. Detta görs för att undvika att fylla systemet med felaktiga beslut, som kan bero på att personen som kör bilen under on-the-fly träning ibland svänger lite fel, alltså för lite eller för mycket. Figur 4. Bilden längst upp är den ursprungliga bilden och bilderna under är justerade i sidled När de 15 bilderna har ersatts av 15 nya bilder så sker en forward och en backward sweep i back-propagation. När detta har gjorts så repeteras hela processen igen och på detta sättet så uppdaterar man stegvis nätverkets vikter. Nätverket kräver ungefär 50 iterationer av denna processen för att lära sig köra på den aktuella vägen och det tar ungefär 5 minuter för systemet att genomgå denna processen. ALVINN kan till och med hantera anorlunda situationer än vad som uppstod efter de 5 minuterna av kallibrering. Det kan till exempel innebära att det börjar regna när ALVINN kör på egen hand, men det är inget problem. Eftersom systemet kan hantera ungefär 25 bilder i sekunden så klarar det av att köra NAVLAB i dryga 30 km/h. 10
4. Filbyte ALVINN är utvecklad för att kunna hålla sig i sin fil och om det råkar bli så att NAVLAB viker av lite så har ALVINN lärt sig att tackla en sådan situation för att föra NAVLAB tillbaka till mitten av filen igen. Denna färdighet har blivit bidragande till ytterligare utveckling kring autonom styrning, men det handlar inte om att hålla sig kvar i filen, utan att byta fil. Tanken är simpel men utförandet är lite knepigare. Med tanke på att ALVINN har som mål att hålla sig i mitten av filen, så skulle man tekniskt sett bara byta målfil från den befintliga filen till den önskade filen. Vad som skulle hända om ALVINN helt plötsligt skulle behöva byta fil på det sättet är att ALVINN skulle svänga så kraftigt som möjligt eftersom korrigeringen som skulle krävas för att hamna i mitten av filen är mycket större än vid vanliga utsvävningar. Efter en sådan kraftig sväng i relativt höga hastigheter skulle ALVINN inte kunna hantera NAVLAB, och att stanna i den önskade filen hade inte gått särskilt bra, utan bilen hade kört rakt över målfilen ner i diket på andra sidan vägen. Det finns mer än en lösning på problemet, men jag har tänkt beskriva hur DUAL VIEW LANE TRANSITION (DVLT) fungerar. DVLT använder sig av två videokamera-enheter samt två nätverk för att kunna ta sig ifrån en fil till en annan [2]. Ett nätverk som är tränat på ursprungsfilen och ett nätverk som är tränat på målfilen. Detta innebär att en kamera-bild spårar ursprungsfilen och den andra kamera-bilden spårar filen som bilen ska köra över till. Systemen lokaliserar mitten av båda filerna och flyttar sedan bilen utifrån den informationen. När bilen svänger ut mot den andra filen så fångas bilder hela tiden och dessa matchas med nätverken för att hela tiden hålla koll på hur närma eventuellt långt ifrån filernas mittpunkt bilen befinner sig. Figur 5. Ett filbyte illustrerat. Lägg märke till hur kamerabilderna alltid är centrerade på sina filer oavsett var bilen befinner sig. 11
Beroende på hur långt ifrån mitten av de båda filerna bilen befinner sig, tilldelas den en typ av poäng av nätverken, dessa poäng kallas för lane center points (LCP) och med hjälp av LCP går det att räkna ut var The modified lookahead point (MLP) är. Det är den punkt bilen kommer att sikta på och den är mitt emellan de två LCP:erna. Längden mellan MLP och någon av LPC:erna beror på vilket steg i DVLT processen det är. Under experimenten med DVLT användes 16 iterationer, så efter första iterationen så skulle bilen vara 1/16 av den totala färdlängden på väg till mitten av målfilen. MLP uppdateras alltså 16 gånger för att bilen ska nå mitten av målfilen. När DVLP tillämpas sker alltså filbytet i en följsam och kontrollerad rörelse och inte så hackigt som de lätt skulle kunna bli då man vill låta ett system sköta filbytet. Under hela filbytet kontrollerar även systemet om det känner sig tryggt med filbytet. Detta görs genom att kolla avstånd mellan de två LCP:erna samt video input under filbytet. Om det känns som ett osäkert filbyte kommer det inte ske. Under de 42 tester som gjordes av DVLP så genomfördes alla med god utdelning, alltså ett genomfört filbyte. Resultaten kan skådas i figur 6, som är genomsnittsvärdet på de 42 testerna. Det syns att oavsett om filbytet sker från vänster eller höger tar det lika lång tid, och med hjälp av MLP så kan man även se att förflyttningen i sidled sker helt symmetriskt mellan filbyte från vänster till högerfil samt filbyte från höger till vänsterfil. Figur 6. Genomsnittsvärdet på de 42 filbytena 12
5. Diskussion Trots ALVINNs utveckling så är systemet långt ifrån redo att implementeras i människors vardag. Det finns många variabler som ännu inte matchar med systemet, t.ex. hur systemet ska kunna hantera en korsning, eller vanliga trafikljus. ALVINN har dock bidragit mycket till fortsatt forskning kring autonoma styrsystem och jag tror att det är viktigt att man hela tiden strävar efter utveckling, för det är inte säkert att det första steget leder en till målet, men det är alltid ett första steg. Eftersom det var ganska länge sedan man började knåpa med ALVINN har utveckling kommit väldigt långt. Google har en bil de kallar för google car som är häpnadsväckande närma det slutgiltiga målet, alltså att kunna göra bilen tillgänglig för allmänheten. Google har dock gjort ett uttalande då de säger att vi inte kommer få se google car på marknaden än på ett tag. Jag antar att det krävs enormt mycket tester och finjusteringar för att våga lansera en produkt som direkt kan orsaka dödsfall, men vetskapen om att utvecklingen inom ämnet har kommit så långt är för mig fascinerande och jag tror nog att jag kommer hinna färdas i en autonom bil under min livstid. 13
6. Referenser [1] D.A. Pomerleau, ALVINN: An Autonomous Land Vehicle in a Neural Network, Technical Report CMU-CS-89-107, Carnegie Mellon Univ., 1989. [2] T.M. Jochem, D.A. Pomerleau, and C.E. Thorpe, Vision GuidedLane Transition, Proc. IEEE Symp. Intelligent Vehicles, Sept. 1995. [3] D.A. Pomerleau, Efficient Training of Arificial Neural Networks for Autonomous Navigation, Neural Computation, vol. 3, pp. 88-97, 1991. 14