Kaikkea itsenäisistä autoista selitetty muille kuin insinööreille

Lupaan, että sinun ei tarvitse käyttää Googlea tai sanakirjaa lukeessasi tätä. Tässä postituksessa opetan sinulle ydinkonseptit kaikesta syvällisestä oppimisesta "tietokonevisioon". Kuollut yksinkertainen englanti.

Tiedät todennäköisesti jo mitä itse ajavat autot ovat ja että niitä pidetään nykypäivänä paskana, joten jos et muista, aion ohittaa kaikki lukion esseet. :)

Mutta en ohita omaa johdantoa: Hei, olen Aman, olen insinööri, ja minulla on alhainen suvaitsevaisuus tarpeettomasti ”hienostuneeseen” keskusteluun. Kirjoitan esseitä Mediumista tehdäksesi kovista asioista yksinkertaisia. Yksinkertaisuus on aliarvioitu.

Kuinka itse ajavat autot toimivat?

Niitä kutsutaan myös autonomisiksi autoiksi, ne työskentelevät 3 viileän tekniikan alan yhdistelmällä. Tässä on lyhyt johdanto jokaisesta heistä, ja siirrymme sitten syventämään. Tämän esseen loppuun mennessä tiedät tarpeeksi kaikki nämä tekniikat voidaksesi käydä älykästä keskustelua näiden alojen insinöörin tai sijoittajan kanssa. "Keinotekoiset hermoverkot", kuten esimerkiksi taikuusloitsut tai sci-fi-elokuvasanat, eivät enää kuulu.

Muuten, olen luokitellut joitain asioita karkeasti erillisiksi ”järjestelmiksi”, mutta käytännössä nämä järjestelmät ovat tietenkin kaikki toisiinsa kytkettyjä ilman selkeästi määriteltyjä rajoja.

Tietokonenäkö (ooooooohhhhh kuulostaa niin viileältä): tekniikka, jonka avulla auto voi nähdä alueensa. Nämä ovat auton silmät ja korvat. Tätä koko järjestelmää kutsutaan havaintoksi. Periaatteessa käytämme:
1. Vanhat hyvät kamerat, jotka ovat tärkeimpiä (yksinkertaiset 2 megapikselin kamerat voivat toimia hyvin),
2. tutkat, jotka ovat toiseksi tärkeimmät. He heittävät radioaaltoja ympäri, ja kuten ultraääni, havaitset aaltoja, jotka palautuvat esineistä ja tulevat takaisin,
3. ja laserit, jotka ovat hienoja saada, mutta ne ovat nykyään melko kalliita, eivätkä ne toimi, kun sataa tai sumuista. Kutsutaan myös ”lidar”. Voit sanoa, että ne ovat kuin tutka, mutta tarjoavat hieman paremman kuvanlaadun, ja laserit voivat mennä melko pitkälle, joten sinulla on suurempi näkymä. Laserit sijoitetaan tavallisesti kehruupyörään auton päälle, joten ne pyörittävät erittäin nopeasti ympärilleen katsomalla. Täällä voit nähdä Lidarin, joka on asetettu Google-auton päälle:

Tarkista yläosassa oleva Lidar-anturi. Se on kehrävä lasersäde.

Syväoppiminen: Se on tekniikka, jonka avulla auto voi tehdä ajo-päätöksiä yksin perustuen tietoihin, jotka se on kerännyt yllä kuvattujen tietokonenäkymisten kautta. Juuri tämä kouluttaa auton "aivot". Menemme yksityiskohtiin tästä hetkessä.

Yhdistämällä nämä kaksi jopa perustasolle, voit tehdä mielenkiintoisia asioita. Tässä on tekemäni projekti, joka havaitsi kaistaradat ja muut tien päällä olevat autot käyttämällä vain kamerasyöttöä.

Robotiikka: Voit nähdä kaiken ja ajatella ja tehdä päätöksiä. Mutta jos aivoidesi päätökset (esim. Nosta vasen jalka) eivät pääse jalan lihaksiin, jalka ei liiku ja et voi kävellä. Samoin, jos autossasi on aivot (= tietokone, jossa on syväoppio-ohjelmisto), tietokoneen on oltava yhteydessä autoosi osiin voidakseen hallita autoa. Yksinkertaisesti sanottuna, nämä yhteydet ja niihin liittyvät toiminnot muodostavat robotin. Sen avulla voit tehdä ohjelmisto-aivojen päätöksiä ja käyttää koneita kääntääksesi ohjausta, painamalla ja vapauttamalla kaasua, jarrut jne.

Navigointi: Jopa kaiken edellä mainitun saamisen jälkeen, sinun on viime kädessä kuitenkin selvitettävä “missä” olet planeetalla ja ohjeet mihin haluat mennä. Tähän on useita näkökohtia, kuten GPS (vanha hyvä navigointilaitteesi, joka ottaa sijaintitiedot satelliiteilta), ja tallennetut kartat, jne. Voit myös sekoittaa tietokoneen näkemystietoja.

Joten auto hallitsee ohjaustaan, jarrujaan jne. Aivojensa tekemien päätösten perusteella, ja nämä päätökset perustuvat kameroiden ja tutkat ja laserit vastaanottamaan tietoon ja navigointiohjelmista saamiin ohjeisiin. Tämä täydentää itse ajavan auton koko järjestelmää.

Tidbit (ohita vapaasti)
Itse ajavia autoja on monilla “tasoilla”, tasolta 1 tasolle 5, perustuen auton riippumattomuuteen ja siihen, kuinka vähän ihmisen apua se tarvitsee ajon aikana. Voi, ja siellä on myös taso 0, joka on vanha hyvä käsikäyttöinen autosi.

Taso 5 tarkoittaa, että auto on 100-prosenttisesti itse ajava. Siinä ei ole ohjausta tai jarruja, koska sitä ei ole tarkoitettu ihmisten ajamaan. Näitä autoja ei vielä ole ja huippuluokan autot ovat edelleen tasolla 3 ja korkeintaan tasolla 4.

Syvä oppiminen selitetty simpansseille kuten itselleni

Oletetaan, että olit villieläinsafarin harrastaja, ja minä olin super-idiootti ystäväsi. Olen menossa safarille Afrikassa ensi viikolla. Ja annat minulle neuvoja: "Aman, pysy poissa vitun norsuista."

Ja kysyn sinulta takaisin: "Mikä on norsu?"

Sanot todennäköisesti: ”Sinä tyhmä ääliö, norsut ovat ... okei, älä koskaan välitä, tässä on valokuva norsusta, miltä se näyttää. Pysy kaukana heistä. ”

Ja sitten menen safarille.

Ensi viikolla saat tietää, että onnistuin vielä juoksemaan norsuun ja melkein päädyin polkemaan. Kysyt mitä tapahtui.

Vastaan: “En tiedä, näin tämän valtavan eläimen, mutta se ei näyttänyt miltäkään valokuvalta, jonka näytit minulle, joten ajattelin, että leikkiä oli turvallista, ja menin eteenpäin ja vedin pienen heiluttavan asian. Tässä on valokuva eläimestä, jonka otin ennen sitä ... ”

Sinä: ……….

Sinä: ”Okei, Aman. Olen pahoillani, huono. Odotin liikaa aivoiltasi. Annan antaa sinulle "huijauskoodin", jota sinun on noudatettava seuraavan kerran ollessasi safarilla. Jos näet jotain, joka näyttää ruskealta kaikista näkökulmista, näyttää olevan neljä nahkaa jalkaa, kuten pylväät, suuret lepattavat korvat ja paksu pitkä nenä, joka tulee kasvoistaan ​​kuin iso putki ja on rasvainen ja suurempi kuin olet, niin se on norsu ja sinun on pidettävä poissa. ”

Ensi kuussa palaan taas safarille (hei, se on hypoteettinen tarinasi ja voin mennä safarille niin monta kertaa kuin haluan) enkä törmää elefaneihin tällä kertaa, koska “huijauskoodisi” toimii hyvin.

Kuinka keksit tuon "huijauskoodin"? Se johtuu siitä, että olet jo nähnyt norsun kaikista eri puolista ja olet valinnut elefantin joitain piirteitä, jotka pysyvät melko samanlaisina riippumatta siitä, mistä kulmasta katsot elefanttia. Joten sinulla oli paljon tietoja elefaneista, joista tuli ajatella, ja se auttoi sinua muodostamaan mielenkuvan elefantin ilmeisimmistä merkkeistä ja antoi ne minulle huijauskoodina. Ymmärrä, että minun ei tarvitse oikeasti "tietää" tarkalleen, mikä elefantti on, minulla on vain huijauskoodi, joka auttaa minua tunnistamaan norsun. Mutta se huijauskoodi toimii melkein yhtä hyvin kuin tietäen mitä elefantit ovat!

Mutta miksi ei ollut oikein näyttää minulle vain yksi valokuva (sen, jonka näytit aiemmin) ja olettaa, että sen riitti, että sain idean? Koska minä (tietysti idiootti) otin kyseisen valokuvan "pyhänä totuutena" - oletin, että jokainen norsu näyttää * täsmälleen * samalta kuin kyseinen valokuva ja on melkein täydellinen ottelu.

Syväoppiminen toimii hyvin samanlaisella tavalla.

Tässä on syvän oppimisen perusta: keinotekoiset hermoverkot, jotka selitän nyt. Niitä kutsutaan myös syviksi hermoverkoiksi.

Ensinnäkin oletan, että osaat vähän matematiikkaa lukiosta. Tiedätkö mikä matriisi on, eikö niin? Ja että voit kertoa matriisin jollain muulla matriisilla? Se on kirjaimellisesti ainoa matematiikan pala, jonka minun tarvitsee sinun tietää tämän esseen yhteydessä. Tässä on kertaus:

Muista mikä matriisi on.

Keinotekoinen hermoverkko (ANN) on todella hienoa juttua, mutta otan sinut matkalle vauvan askelten avulla. Ihmisen aivot koostuvat monien solujen verkosta, jota kutsutaan “neuroneiksi”, mikä on inspiraatio ANNS: lle. Se on miltä se näyttää paperilla:

ANN on taikalaatikko, joka ottaa tulon ja antaa ulostulon. Oletetaan esimerkiksi, että halusit maagisen ANNin, joka ottaa kuvan ja voi kertoa, onko valokuva elefantti vai ei. Laitat kuvan laatikkoon, ja vastaus on “kyllä” tai “ei”.

Tai laitat valokuvan edessä olevasta tiestä ja haluat, että ANN kertoo sinulle, jos sinun pitäisi hidastaa tai nopeuttaa. Ja vastaus tulee esiin: "nopeutta!"

Kuinka se tapahtuu? Kuinka voit luoda tämän ANN: n?

Yksinkertaisesti sanottuna, ANN on kuin yksinkertainen versio ihmisen aivoista. Ensin koulutat sitä datalla. Kun annat tietoja ANN: lle, se luo ”huijauskoodin”, joka auttaa sitä tekemään päätöksiä seuraavalla kerralla. (Annan yksityiskohtaisen esimerkin sekunnissa.) Tätä "huijauskoodia" kutsutaan ANN: n "painoiksi". Oletko nähnyt tuon 'matriisin' aikaisemmin? Voit sanoa, että ensimmäinen matriisi [x y] -matriisi on syöte ja toinen matriisi [u w] -matriisi on painojoukko tai huijauskoodi. Kun kerrät syötteen painoilla, saat vastauksen.

ANN voi olla monia erilaisia, ja sen perusteella, kuinka suunnittelet sen, voi joko antaa ”kyllä ​​tai ei” vastauksen, tai esimerkiksi, se voi antaa tietyn numeron tai luettelon eri numeroista jne. Sinä voi valita millaisen tuloksen se antaa ja millaisen tulon se vastaanottaa ja kuinka suuri ja monimutkainen se on, mikä tekee siitä erittäin monipuolisen. Voit rakentaa neuraaliverkkoja, jotka ottavat videoita tuloina, ääninäytteinä, kuvina tai tekstin kappaleina jne. Tietenkin kaikki nämä muunnetaan tietokoneen numeroiksi automaattisesti, ja siellä on valtava "painojen" matriisi, joka tulee kerrottuna siihen tuloon, jolloin syntyy lähtö, joka on vastauksesi.

Mutta olen varma, ettet vieläkään ymmärrä täysin. Kuinka “koulutat” ANN: n antamaan sinulle tarkoituksenmukaisia ​​tuloksia?

Oletetaan, että haluat kouluttaa ANNin norsujen tunnistamiseen.

Joten luot uuden tuoreen ANN, joka ottaa tietyntyyppisen syötteen ja antaa tietyn tyyppisen tuotoksen. Aluksi tämä ANN ei oikeastaan ​​tiedä mitään ongelmasta, jota yrittää ratkaista. Se on kuin minä alkuperäisessä elefantti-esimerkissä - ennen kuin näytit minulle elefantin ensimmäisen valokuvan, minulla ei ollut aavistustakaan, mikä elefantti jopa oli. Jos olisit pyytänyt minua siellä ja etsimään sitten norsua valokuvasta, olisin todennäköisesti valinnut jotain satunnaisesti. Joten voit sanoa, että aluksi minulla oli satunnainen paskaa huijauskoodi oikein? Mutta hetkessä, kun näytät minulle yhden elefantin ja kerrot minulle, että se on norsu, säädän yhtäkkiä satunnaisesti huijauskoodiani ja nyt minulla on käsitys siitä, mitä elefantit ovat. Huijauskoodini ei ole enää sattumanvarainen, ja jos näin elefantin edestä, valitsisin todennäköisesti oikean vastauksen! Joten olen päivittänyt huijauskoodini, kun sain lisätietoja. Ja mitä enemmän erilaisia ​​elefanttivalokuvia minulla on, sitä paremmin huijauskoodistani tulee oikean vastauksen antaminen. En edelleenkään tiedä mitä elefantti on, mutta olen nähnyt riittävän korrelaation eri valokuvissa tunnistaakseen norsun erityisominaisuudet ja pysyä heistä poissa.

Samoin, kun luot ensin ANN: n, aloitat antamalla sille satunnainen painojoukko (= huijauskoodi) aluksi. Sitten näytät sille tulokuvan (elefantin valokuvan) ja kerro sille myös odotettavan tulosteen (vastaus “kyllä”). ANNS: n kauneus on, että jos annat sille esimerkkisyötön ja sitä vastaavan tuotoksen, se säätää huijauskoodiaan niin, että se voi toistaa oikean vastauksen seuraavalla kerralla. Se muuttaa sitä painomatriisia, mitä enemmän tietoja sille annat, jotta vastaat vastaukseesi. Siksi voit aloittaa satunnaisella painojoukolla ja ajan myötä ANN säätää niitä niin, että ne toimivat hyvin huijauskoodina! Hienoa? Niin ANN “oppii”. Mitä enemmän tietoja annat sille, sitä enemmän se säätää painoaan ja sitä tarkempi se tulee.

Kuten jo selitin aiemmin, miten tämä tapahtuu, tapahtuu matriisin kertolaskun avulla. Tämän ANN: n painotusmatriisilla on arvot sellaisia, että jos kerrot sen syötetyllä kuvalla (kuva muunnetaan numeroiksi), saat vastauksen. Yleensä ei ole vain yhtä painomatriisia, vaan sarja matriiseja, jotka kerrotaan peräkkäin. Mutta käsite on sama kuin näet alla olevasta kuvasta:

Karkea matriisin esitys (tein tämän kaavion itse) :)

Mutta se ei riitä. Muista, että ANN ei ole fiksu - se toimii huijauskoodeihin. Jos annoit sille vain norsuvalokuvat katsottavaksi ja sanot jatkuvasti "kyllä" jokaiselle valolle, mitä luulet sen tekevän?

Se on laiska ja oletetaan, että jokainen valokuva on norsu! Se säätää painoaan (huijauskoodia) siten, että annetusta valokuvasta riippumatta se antaa aina ”kyllä”. Tätä kutsutaan "vajaakuntoiseksi", mikä tarkoittaa periaatteessa sitä, että olet tehnyt virheen ajatellessasi, että idioottiystäväsi on älykäs. Annosi on puolueellinen tiettyyn vastaukseen. Tämän estämiseksi sinun on syötettävä myös vasta-esimerkkejä, joihin vastaus on ei. Joten sekoitat myös paljon esimerkkejä valokuvista, jotka eivät ole norsuja, mutta jopa leijonat, lehmät, ihmiset, oravat, pikachukset ja bulbasaurukset, merihevoset ja… (anteeksi, sain kuljettaa pois), ja nyt ANN on pakko säädä sen huijauskoodia tarkemmin. Nyt lisäät sen tarkkuutta ja muutat sitä luotettavammaksi! Tai sinulla voi olla myös "liian suuri asennus", kun ANN: n huijauskoodi on edelleen laiska, mutta se on nyt niin super fiksu, että se alkaa muistaa koko antamasi harjoitustiedot! Näin tapahtuu usein, kun ANN-levysi on erittäin suuri ja syvä, joten tavallisesti se alkaa vain tallentaa kaikki antamasi tiedot. On erittäin hyvä vastata harjoitustietoihisi, mutta epäonnistuu, kun annetaan uusi esimerkki, jota se ei ole aiemmin tavannut. Se ei enää toimi kuin huijauskoodi, vaan pikemminkin siitä on tullut kuin kuvasanakirja. Voit estää tämän pienentämällä mallisi kokoa (pudottamalla satunnaisesti joitain painoja) tai lisäämällä erilaista tietoa. Ensin mainittua kutsutaan ”keskeyttämiseksi” (melko suoraviivainen, mutta erittäin hullu idea), ja jälkimmäistä kutsutaan “tietoaineiston tasapainottamiseksi”.

Olet oppinut myös oppiaiheesi safari-esimerkistä aiemmin, ja nyt sinun on oltava varovainen osoittamalla sille muita valokuvia norsuista monista eri näkökulmista, jotta se ei tekisi samaa virhettä kuin idioottiystäväsi. Siksi tutkijat / insinöörit “täydentävät” harjoitustietojoukkojaan sisällyttämään peilien heijastuksia tai samojen kuvien kirkkaampia / tummempia versioita jne. Lisätäkseen tietojensa monimuotoisuutta. Tämä auttaa varmistamaan, että ANNista voi tulla niin tarkka kuin pystyy. Haluat, että huijauskoodi on niin super “vankka”, että se toimii yhtä hyvin kuin oikeat ihmiset tai parempi.

Koulutuksen loppuun mennessä, kun sinulla on riittävästi tasapainoista tietoa ja lisäyksiä jne., Sinulla on koulutettu ANN (jota kutsutaan myös koulutettuksi malliksi), joka pystyy tunnistamaan elefantit kuvissa kohtuullisella tarkkuudella ja tiedä myös milloin ei tarvitse tunnistaa norsua.

Vain kaksi kappaletta sitten kohtaama sana "Ylivarustelu" (= verkko muuttuu liian älykkääksi ja toimii kuten se on juuri muistellut tietosi) on erittäin yleinen termi Deep Learning -ingossa ja tiedät nyt, mitä se tarkoittaa. (Yhdenmukaisuus on vähemmän huolestuttava ongelma, koska se on melko ilmeistä diagnosoida ja helppo käsitellä.) Joku saattaa sanoa: "Voi mies, minun mallini ei toimi niin hyvin uusilla tiedoilla, luulen että se on liian sopiva" ja sanot, ”Yrititkö lisätä harjoitustietoja?” Ja omistat heti yön. Toinen voi jopa olettaa, että olet itse syväoppimisinsinööri! (Jos he tekevät, kerro heille "Voi ei, seuraan vain Amania keskisuuressa." Kun he kysyvät kuka olen, teeskentele ja sano "Voi et tiedä? Hän on tyylikkäin kaveri tässä tilassa!").

Painojen säätämisprosessi (huijauskoodin päivittäminen datan perusteella) sisältää jotain, jota kutsutaan vastapropagaatioksi. Harjoittaessasi aina, kun näytät ANN: lle esimerkkitulon (sanotaan kissanpentu) ja kerromme sille vastauksen (“ei se ole elefantti!”), Se yrittää ensin käyttää nykyistä huijauskoodiaan keksimään oman vastaus. Jos vastaus on oikea, niin sen ei tarvitse muuttaa huijauskoodiaan, eikö niin? Laiska ANN päivittää huijauskoodinsa vain, kun se tekee virheen. Joten vain jos ANN: n vastaus oli VÄÄRÄ, sen on mukautettava painonsa (= huijauskoodi) pienellä bittiä ja testattava painot uudelleen. Tätä säätöalgoritmia kutsutaan BACKPROPAGATION. ANN: n tekemä "virhe" lähettää rypistymiä painon matriisin läpi muuttaen monia niiden arvoja. Joten voit sanoa, että virhe leviää takaisin verkon kautta. Tästä syystä voit aina luoda ANN: n satunnaispainoilla aluksi, ja ajan myötä se säätää niitä yksinään.

Yksinkertaisesti sanottuna, jos otat huijauskoodin kokeeseen ja saat jotkut vastauksistasi väärin, päivität todennäköisesti huijauskoodisi seuraavaa tenttiä varten kyseisen aiheen tarkkuuden suhteen. Huijauskoodin muokkaamista / uudelleenkirjoittamista jokaisen kokeen jälkeen sen arvosanan perusteella kutsutaan vastapropalaatioksi.

Vieritä nyt yllä olevaan neuraaliverkon kuvaajakuvaan. Näetkö asian nimeltään ”piilotettu kerros”? Ann on tehty neuronikerroksista, nämä neuronit kantavat painoja arvoina. Niitä kutsutaan ”piilotettuiksi tasoiksi”, koska sinun ei tarvitse tietää tarkkaa painoa verkossa! Voit tulostaa arvot varmasti ulos - mutta on turhaa tarkastella matriisia, joka voi johtaa miljooniin tai miljardeihin pieniin numeroihin. Se on huijauskoodi, ja se päivittää itsensä antamasi syötteiden perusteella, ja se on kaikki mitä sinun tarvitsee tietää.

Siksi syväoppimista pidetään usein ”mustan laatikon” järjestelmänä. Jos olet koskaan ohjelmoinut aiemmin millä tahansa kielellä, olet tottunut kirjoittamaan kaikki ohjelmaa koskevat nimenomaiset ohjeet. Mutta täällä ei voi nähdä taustalla olevaa huijauskoodia, jonka tietokone on luonut itselleen käytettäväksi kirjallisen algoritmin sijasta.

Palataan takaisin itse ajaviin autoihin, sanotaan esimerkiksi, että otit valokuvia eri kameroista auton ympärillä tietyssä millisekunnissa ja otit myös kaikki tutkalta ja lidarilta (= laserit) kerätyt tiedot ja yhdistit ne yhteen luetteloon, ja käyttänyt tätä luetteloa autosi ANN-tietokantaan. Ja verkosta odotettavissa oleva lähtö on pitkä luettelo ohjauskulmasta, kaasuvipu / jarrutusarvo siitä, syttyykö ajovalot vai ei, kiinnitetäänkö vai ei, jne. Nämä ovat sinun "etiketit", jotka ANN.

Sellaista syvällistä oppimista, jossa harjoittelet nimenomaisesti ihmisten keräämiä tietoja, kutsutaan ”ohjattuksi oppimiseksi”. Jokaisesta tietonäytteestä on tiedot ja etiketti.

Joten tässä on esimerkki kuinka "koulutat" auton aivot. Ensin ajat vain autolla normaalisti itse, mutta jatkat syöttötietojen keräämistä antureista ja kameroista jne. On myös varusteita, jotka mittaavat jokaiselle millisekunnille tietoja ajon aikana tekemäsi ohjauskulman ja kaasunpaineen jne. Kun olet palannut takaisin kotiin, voit aloittaa ANN-koulutuksen kaikilla ajon aikana keräämilläsi tiedoilla. ANN päivittää huijauskoodinsa ottaakseen tietokoneesi visiosisällön ja yrittää jäljitellä ajo-päätöksiäsi mahdollisimman tarkasti. Tätä kutsutaan käyttäytymiskloonaukseksi, ja juuri sitä useimmat autoyritykset tekevät nykyään - keräävät ajotietoja ja tekevät autoistaan ​​"käytännön". Jokaisen koulutusmatkan jälkeen autosta tulee entistä paremmin päätöksenteossa. Käyttäytymiskloonausta käytetään vain pieniin osiin ajoprosessia.

Kaikki muu on samanlainen. Ajotiedot ovat suurin voittajatekijä kilpailussa itse ajavien autojen kehittämiseksi.

Nyt - tiedät mikä on "syvä oppiminen" ja mitä se tekee. Tiedät, mitkä syvät hermoverkot ovat (= ANNs) ja kuinka ne toimivat (painot = huijauskoodit, takaisinsyöttö = painojen säätäminen annetun esimerkkikokeen perusteella). Tiedät myös, että sinulla pitäisi olla suuri ja tasapainoinen tietojoukko, jotta verkko ei liiaksi (saa laiskaksi tai liian älykäs asettamalla huijauskoodinsa).

Onnittelut! En kid, et, tämä on enemmän saavutus kuin luulet!

Konenäkö

Muistatko tämän kohtauksen The Terminatorista?

Schwarzenegger astuu baariin alasti ja etsii joku ottamaan vaatteita. Tämän täytyy mielestäsi tulla mieleen, kun ajattelet ”tietokonenäkymää” ja olet osittain oikeassa.

Itse ajavat autot näkevät myös maailman sellaisena, mutta ne eivät ole vieläkään lähelläkään hienostuneisuutta, jota siellä voit nähdä. Tietokonenäkötekniikoiden päätarkoitus on prosessoida kamerakuvia havaitaksesi kaistalinjat, seuraamaan muita ajoneuvoja ja jalankulkijoita, etsimään mahdollisia aukkoja tai reikiä tiellä, mittaamaan auton ja muiden esineiden välinen etäisyys jne.

Tietokonenäköä varten ei ole yhtä tekniikkaa tai taustalla olevaa tekniikkaa - pikemminkin se johtuu yksinkertaisesta kuvankäsittelystä. Sinua rajoittaa vain mielikuvitus ja kyky suunnitella monimutkaisia ​​algoritmeja, ja jos olet hyvä geometriassa, se on toinen plus. Esimerkiksi suosittu tapa käsitellä kamerakuvia käsittää sen, kuinka nopeasti värit muuttuvat vaaka- ja pystysuunnassa. Tätä kutsutaan ”kaltevuudeksi” ja sitä voidaan käyttää reunojen löytämiseen. Tässä on esimerkki:

Nämä kaikki on luotu käyttämällä yksinkertaisia ​​tekniikoita käyttämällä suosittua tietokonenäkötoimintojen kirjastoa, nimeltään OpenCV. Sinun pitäisi tietää OpenCV: stä, koska se on suosituin kirjasto tähän tarkoitukseen. Jokainen robotti tai syväoppija tuntee sen.

Edellä mainittua esimerkkiä pidemmälle ottaen näet kuvat ovat vain suorakulmion kuvia ja nollia. Ne ovat valkoisia ja nollia ovat mustia! Voit valita pikselit millä tahansa kuvan alueella ja pelata sen kanssa. Näin havaitsin kaistalinjat ja keksin projektituotannon, kuten tämän blogiviestin alussa nähdään.

Toista yleistä tekniikkaa, jota käytetään tietokonenäkymässä esineiden havaitsemiseen, kutsutaan stereonäkymäksi. Älä heitä sinne näennäisen monimutkaiselta nimeltä, stereovisio tarkoittaa yksinkertaisesti sitä, että katsot jotain useammalla kuin yhdellä silmällä (teet sen koko ajan). Kun näet jotain kahdella silmällä, sinulla on parempi arvio siitä, kuinka kaukana se on ja minkä muodon se on. Samoin autot käyttävät useampaa kuin yhtä kameraa kummallakin puolella ja yhdistävät kuvat nähdäkseen maailman realistisempana.

Entä epäsuotuisat olosuhteet, kuten lumi, sade jne., Kun tie on vaikea nähdä? Älä unohda, että kaksi muuta anturia (tutka ja laserit). Jopa silloin, kun kaksi anturia ei toimi niin hyvin, järjestelmä on suunniteltu siten, että kolmannen tulisi olla silti melko luotettava (mutta se on jatkuva tutkimuskenttä, emmekä ole vielä täydellisiä). Lisäksi, jos auton hermoverkot on jo koulutettu ajamaan tällaisissa olosuhteissa, autolla tulisi olla jonkinlainen käsitys päätöksenteosta. Jälleen kerran, kuten aiemmin totesin, ensisijaisena tavoitteena on kerätä riittävästi tietoja. Mitä enemmän harjoittelet, sitä paremmin auto saa. Aikana.

En aio mennä yksityiskohtaisemmin tietokoneen visioon, koska se on erittäin laaja kenttä. Tiedä vain, että se ei ole sci-fi, eikä siinä ole mitään “maagista”. Kyse on vain mielikuvituksen käyttämisestä kuvien leikkimiseen. On myös muita tekniikoita, joista voit lukea tällä erittäin lyhyellä ja yksinkertaisella sivulla:

Robotiikka ja navigointi

Itse asiassa en aio viettää täällä paljon aikaa. Robotiikka on melko suoraviivaista (sinun ei tarvitse hienoa mielikuvitusta ymmärtää mitä tapahtuu) - sinun on periaatteessa tiedettävä jotain, jota kutsutaan toimilaitteeksi.

Toimilaite on laite, joka ottaa sähköisen signaalin tulona ja muuntaa sen fyysiseksi toiminnaksi. Se ei ole liian monimutkainen, usein siinä on vain moottori, joka pyörii tietyllä kulmalla vastaanotetun signaalin arvon perusteella. Toimilaitteita on kaiken muotoisia ja kokoisia, ohjauspyörässä on yksi, yksi kaasulle, jarruille, vaihdelle, moottorille jne. Saat idean.

Navigoinnin lisäksi sinun tulisi tietää GPS / karttojen / tietokonenäkötekniikoiden lisäksi myös todella viileä tekniikka, jota kutsutaan ”kuolleeksi laskemiseksi”. Siihen sisältyy nykyisen sijaintisi laskeminen nopeuden ja kuljetun matkan perusteella ja kaikkien nykyisten hetkeksi tekemiesi käännösten historian tunteminen jne. Muistatko ikävän Sherlock Holmes -elokuvan Robert Downey Jr: n kanssa? Siellä on kohtaus, jossa hänet sieppataan ja viedään hevoskärryn sisälle ja silmät silmiin, mutta saapuessaan määränpäähän hän taikuuttaan tietää tarkalleen missä hän on. Katso muutama minuutti tästä kohtauksesta ja ymmärrät mitä “kuollut laskeminen” on. Järjestelmä toimii melko paljon Sherlock Holmesin tapaan.

Hyvä on! Nyt tiedät, että sinulla pitäisi olla erittäin hyvä idea itsenäisten autojen toiminnasta. Tässä on mitä olemme oppineet:

  1. Syvä oppiminen - huijauskoodit, harjoitustietojen tasapainottaminen, ylimääräiset asennukset ja muut kysymykset, miksi syväoppiminen on ”musta laatikko” jne.
  2. Tietokonenäkö - kamera, tutka- ja lidar-anturit, stereonäkö, kuinka voit käsitellä kuvia luovasti erilaisten tietojen poimimiseksi. Löydä suosittu ohjelmointikirjasto nimeltään OpenCV.
  3. Robotiikka - mitä toimilaitteet ovat.
  4. Navigointi - olet oppinut, että GPS: n ja tallennettujen karttojen jne. Lisäksi autot käyttävät Sherlock Holmes -tyylitekniikkaa, jota kutsutaan ”kuollut laskenta”.
Joten… tuntuisitko vaarallisemmalta ja upealta nyt kuin 20 minuuttia sitten? :)

Lopuksi, joitain ajatuksia aiheesta "AI vie työpaikat ja tappaa meidät" -keskusteluun

Haluan, että huomaat mielenkiintoisen jutun siitä, mitä olet juuri oppinut. Opit, että jokainen hermoverkko on suunniteltu ja koulutettu ottamaan tietyntyyppinen syöte ja antamaan sitten erityyppinen lähtö.

Vaikka ottaisit yhden valtavan neuroverkon ja käyttäisit sitä toimimaan itse ajavan auton aivoina, sinun on silti kytkettävä se kaikkien auton ympärillä olevien anturien ja kameroiden, GPS: n ja karttojen, sekä kytke hermoverkkojen lähdöt kaikkiin laitteisiin ja toimilaitteisiin, jotka saavat auton liikkumaan. Kuten jo opit, hermoverkko on sarja matriiseja, jotka on kerrottu tai lisätty toisiinsa. Jos et kytke sitä tuloon tai tuloon, se on kuollut matemaattinen lauseke kuten mikä tahansa muu.

Oletetaan kuitenkin, että otat vastuuttomasti huonosti koulutetun hermoverkon ja käytät sitä vaarallisen koneen, kuten silmäleikkausrobotin, ajamiseen. Se toimii silmässä, jolla on joitain hyvin harvinaisia ​​tiloja, joita lääkäreitä eikä hermoverkkoa ei ole koulutettu havaitsemaan. Robotti tekee virheen, joka vahingoittaa silmää pysyvästi. Nyt tässä hypoteettisessa tilanteessa olen varma, että seuraavana päivänä sanomalehdet ympäri maailmaa puhuvat siitä, kuinka AI heräsi ja päätti tappaa ihmisen. Mutta nyt kun olet lukenut koko esseen yllä, toivottavasti näet miksi tämä on paskaa.

Voisit väittää, että hei - koko maailmankaikkeus, jopa ihmisen aivot, koostuu pääasiassa matemaattisista lausekkeista syvimmällä tasolla, ja siten jotkut matriisit ovat pahempia kuin toiset. Joten hermoverkko voi olla mahdollisesti paha. Ehkä harjoittaessasi hermoverkkoa harjoitit uudelleen sen painot siten, että siitä tulee paha.

Jopa jos tämä voi olla totta, se ei silti ole hyvä peruste. Vaikka kyseistä huonosti tehtyä (tai ”pahaa”, kuten sanomalehdet kutsuvat sitä) AI-ohjelmistoa ei yksinkertaisesti koskaan asennettu oikealle robotille, se ei olisi koskaan voinut tehdä virheitä.

Tunnen henkilökohtaisesti, että AI: n käyttöä todellisessa maailmassa olisi säänneltävä sen varmistamiseksi, että se ei vahingoita ihmisiä. Sen tulisi olla samanlainen kuin lääketeollisuus - ihmisten tulisi olla vapaita kehittämään uutta lääkettä laboratoriossaan koeputkiin. Mutta jos haluat testata uutta lääkettäsi eläimillä tai ihmisillä, sinun on pyydettävä hallitukselta lupaa ja todistettava, että se on valmis testattavaksi.

Kyse on siitä, kuinka päätät käyttää ohjelmistoa. Suunnittelijoiden tulisi olla vastuussa ohjelmistojen kunnollisesta rakentamisesta ja myös päättämisestä, onko heidän ohjelmistonsa valmis käytettäväksi todellisessa maailmassa vai ei.

Ja siinä kaikki! Jos pidit tästä hyödyllistä, kerro siitä kommentissa. Minusta tuntuu hyvältä siitä.

Voi auttaa sinua, jos olet tiedemies tai teknologiayritys ja tarvitset apua tieteesi selittämisessä muille kuin teknisille ihmisille markkinoinnin, PR-toiminnan tai koulutuksen järjestämistä varten. Pudota minulle viesti Twitterissä: @mngrwl