Az autó feltalálása óta a gyártók folyamatosan több biztonsági funkciót és jobb formatervezést adtak hozzá az idő múlásával azzal a céllal, hogy a vezetők biztonságban legyenek az utakon. Az autógyártók dollármilliókat költöttek a biztonsági övek, gumiabroncsok és szinte minden elképzelhető autóalkatrész vagy -alkatrész biztonsági fejlesztéseinek kutatására. Mindezen beruházások ellenére a vezetés 2019-ben lényegesen halálosabb, mint az olyan alternatívák, mint a „légi utazás”. A „Nemzeti Biztonsági Tanács” szerint 2018-ban csak az Egyesült Államokban körülbelül 40 000 ember halt meg autóbalesetben. 2018-ban összesen kb. 500 halálos áldozatot követtek el repülőgép-balesetekben – ez 80-szor kevesebb haláleset, ha csak az Egyesült Államokban haltak meg autóbalesetekben.

Sok tényező valószínűleg hozzájárul ehhez a drasztikus különbséghez, például a kereskedelmi pilóták képzésének és bizonyítványának nehézségei a gépjárművezetőkhöz képest, valamint az úton lévő autók és a repülőgépek száma. Ennek ellenére véleményem szerint a halandóság különbsége továbbra is megdöbbentő.

Manapság olyan vállalatok, mint a Tesla, a Volvo és még sokan mások fektetnek be olyan technológiába, mint például a mesterséges intelligencia, amely a probléma kiváltó okát igyekszik orvosolni, és azt, amit korábban figyelmen kívül hagytunk: az emberi teljesítmény a volán mögött.

Az autótechnológia talán legizgalmasabb előrelépése maga az autó feltalálása óta az önvezető vagy autonóm járművek megszületése. Egykor a sci-fi témája volt, hogy az önvezető autók a konvolúciós neurális hálózatok (CNN) és más modellezési technikák révén lehetővé váltak. Mielőtt azonban teljesen átadnánk a kulcsokat, három nagy kihívást kell leküzdenünk.

Nekünk kell:

› 1. Szerezze be az adatokat (érzékelők, kamerák)

› 2. Az adatok feldolgozása (AI – erre a részre összpontosítunk)

› 3. Cselekedj az adatok alapján (vezesd az autót)

Hogy rávilágítsunk a technológiai kihívásokra, amelyekkel a Teslához hasonló vállalatok szembesülnek az autonóm autók nyilvánosságra hozatala során, kizárólag a 2. lépés egyszerűsített alkalmazására fogunk összpontosítani, a képadatok feldolgozására annak meghatározásához, hogy mi is az. 're „nézek”re. E cél elérése érdekében egy 100 000 képet tartalmazó adatkészletet használtam, amely 43 típusú címkézett utcatáblát tartalmazott, hogy olyan felügyelt mély tanulási modelleket hozzak létre, amelyek CNN-eket használtak, és képesek voltak meglehetősen megbízhatóan (erről később) osztályozni az utcatáblák új képeit. Ha szeretné összefoglalni mindezt, nézze meg ezt a "Dhanoop Karunakaran cikksorozatot".

Amikor az ilyen típusú technológiáról beszélünk, fontos megjegyezni a hiba lehetséges következményeit. Az önvezető autók esetében egy rosszul azonosított stoptáblavagy gyalogos könnyen életbe kerülhet. Egy formális vizsgálat során az egyes jelek helytelen besorolásának jelentőségét értékelni lehet, és súlyt lehet adni neki. Ily módon egy új modellt meg lehetne tanítani arra, hogy „elvigyázzon” a „kritikusabb” utcatáblák osztályozása során. És bár papíron mindez remekül hangzik, az ilyen típusú választások mögött rejlő etikát is komolyan kell értékelni. Ha a súlyozott bemeneteink miatt az új modellünk kevesebb hibát követne el például a stoptáblák osztályozása során, de valamivel rosszabbul teljesítene a gyalogátkelőhelyek osztályozása során, az „elfogadható” lenne? Mindezek ellenére e bejegyzés céljaira inkább magára a technológiára összpontosítunk.

Tehát hogyan taníthatja meg a számítógépet a különböző objektumok azonosítására? Ennek érintésére egy egyszerű példával kezdjük. Emberként, ha az alábbi képet nézzük, egy aranyos, fekete-szürke szőrű kutyát látunk egy foltos szőnyegen állni.

Gondolkodás nélkül tudjuk, hogy a kép alanya nem ló, autó vagy macska. Még akkor is, ha megnézünk egy példát egy erősen szerkesztett fotóra, amelyet ugyanarról a kutyáról készítettem, emberként még mindig nem esik nehezünkre beazonosítani, hogy a kép alanya egy kutya, pedig kék színű. Nézd meg:

A számítógépeknek nem meglepő módon fogalmuk sincs arról, hogy mi a kutya, és még kevésbé, hogy hogyan néz ki. Ehelyett a számítógépek a képeket tenzoroknak nevezett csoportosított mátrixokként tekintik. Minden mátrixban minden szám egy adott képpontnak felel meg a képen.

A konvolúciós neurális hálózatok segítségével modelleket képezhetünk olyan képelemek kinyerésére, mint az élek, formák és színek a képosztályozáshoz. Felügyelt tanulási modellek segítségével több ezer kutyás képet továbbíthatunk egy modellen, hogy „megtanítsuk a számítógépet”, hogyan néz ki egy kutya. Tehát, bár a számítógép nem értékeli, hogy Oliver milyen aranyos kutyám, a portréján különböző szűrőket alkalmazva megállapíthatja, hogy Oliver arcszerkezete, színe és alakja hasonlóságot mutat más kutyákéval, és nagy valószínűséggel kutya is.

A leírt technikák tetszőleges számú célosztály besorolására használhatók, például az utcatáblák. Ennek a folyamatnak a szemléltetésére egy rendkívül „könnyű” (értsd: gyenge) CNN-t fogunk használni, amelyet a Python „Keras” könyvtárának felhasználásával hoztam létre példaként, hogy kicsit részletesebben elmagyarázzuk, mi történik „a motorháztető alatt” képosztályozás folyamata. Ha szeretné látni a kódot, amelyet a példák generálásához használtam, vagy meg szeretné tekinteni az általam betanított robusztusabb CNN-ek példáit, valamint meg szeretné tekinteni a CNN-ek betanításához szükséges egyéb folyamatokat, például a kép-előfeldolgozást, feltáró adatelemzés stb., feltétlenül nézd meg a kódomat itt.

Ebben a bejegyzésben azonban az alábbi képen összefoglalt alapvető CNN-t fogjuk használni, hogy megvilágítsuk, hogyan képes a számítógép „látni” és „tanulni”.

Szóval, mit jelent ez? Miért csináljuk, és hogyan segít megtanítani a számítógépet az utcatáblák osztályozására?

Először is megvannak a bemeneti képeink, amelyek mindegyike 32x32x3 méretű, vagy egyszerűbben 32 képpont magas és szélességű, 3 színcsatornával (piros, zöld és kék). Mivel ezek a bemenetek különböznek más neurális hálózatok bemeneteitől, ahol a modellbemenetek vektorok, masszíroznunk kell a bemeneti képeinket, hogy megbízhatóan osztályozhassuk őket a Deep Learning segítségével. Ebben a példában kiválasztottam egy véletlenszerű képet az adatkészletből. Vessünk egy pillantást a példára, és mutassuk meg, hogyan értékeli ki a képet a modellünk:

# Selecting an example image
example = plt.imshow(data['x_train'][2, :, :, :])

Mint korábban említettem, a számítógépek csoportosított mátrixként „látják” a képeket, amelyeket tenzoroknak nevezünk. Nézzük meg ugyanazt a példaképet:

# Displaying Image Tensor
how_the_computer_sees_it = data['x_train'][2]
display(how_the_computer_sees_it)

Most, hogy megnéztük a modell bemeneteit, nézzük meg közelebbről a folyamatot:

A fenti ábrát követve a bemeneti képre felvitt első réteg egy konvolúciós réteg. Ebben a lépésben egy konvolúciós kernelt alkalmazunk a képünkre, hatékonyan csúsztatva egy kisebb, 3x3 pixeles szűrőt a bemeneti kép fölé, kiértékelve azok pontszorzatait. A fenti esetben úgy döntöttünk, hogy ebben a konvolúciós lépésben 32 szűrőt alkalmazunk, átméretezve a rétegkimenet méretét.

Ezután egy gyűjtőréteget alkalmazunk a modell méretének (és ezáltal paramétereinek) csökkentésére egy 2x2-es csúszó szűrő segítségével, kiválasztva a maximális értéket az elemzett képünk minden egyes „ablakához” vagy „darabjához”.

Végül, annak érdekében, hogy a képbemenetünket neurális hálózatunk sűrű rétegeivel kompatibilis vektoros formátumba masszírozzuk, amelyet a képeink osztályozására használunk, a képbevitelt egy tömbbe simítjuk.

Bár a fenti képen láthatjuk az élek és formák kiemelését, a kimeneteink emberi szem számára nem tűnnek túl „tisztának”. Ennek ellenére még ez a nagyon egyszerű CNN is viszonylag jól (~80%) osztályozta az utcatáblák képeit az adatbázisból. Ennek az alapmodellnek az elkészítését és kiértékelését követően további, hangolt CNN-eket képeztem ki, és ›94%-os pontossággal értékeltem azok teljesítményét. Megnézheti a kódomat és a következtetéseimet, ha megnézi ezt a "linket".

Valós környezetben a jelen feladat sokkal összetettebb, mint a jelek egyszerű osztályozása. Az önvezetéssel összefüggésben sokféle tárgyat, sokféle szögből kell feldolgozni, osztályozni és rendkívül megbízhatóan kell kezelni nagy sebességgel, mindezt emberi életekkel.

Kísérletünk eredményeinek figyelembe vételekor a legjelentősebb tényezők közé tartozik, amelyek neurális hálózatokat használnak a képadatok osztályozására, a modelleink betanításához használt képminőség. Noha a nagyon kicsi képek használata nagymértékben csökkenti a mély tanulási modellek betanításához szükséges időt/erőforrást, nagy valószínűséggel gátolhatja az osztályozási teljesítményt is. Ugyanez a kihívás nagymértékben felerősödik, amikor a modelleknek sokkal több tényezőt kell figyelembe venniük, miközben irányítják a nagy sebességgel haladó járművet. Ez a részlet rávilágít azokra a hatalmas kihívásokra, amelyekkel a Tesla-hoz hasonló vállalatok szembesülnek, valamint a közelmúltban felvásárolt DeepScale jelentőségét, amely vállalat az önvezető autók érzékelőiből származó képadatok osztályozásához szükséges erőforrások csökkentésére összpontosított.

Eredetileg a https://medium.com oldalon tették közzé 2019. november 25-én.