Una recensione onesta del nanodegree di auto a guida autonoma di Udacity - terzo mandato e oltre!

TLDR: va bene. Non lo consiglio davvero. Penso che ci dovrebbe essere il doppio dei contenuti e una presentazione molto migliore, a metà prezzo. Esistono molti contenuti gratuiti che offrono una presentazione molto migliore dell'argomento. Ecco un elenco compilato di risorse curate.

Se questo articolo ti ha aiutato in qualche modo, considera di comprarmi un caffè :)Indirizzo Bitcoin se vuoi donare :)

Ora per me è finita! Penso che sia ok, ma tempera le tue aspettative.

Per prima cosa, parlerò dei tre progetti. Quindi parlerò di posti di lavoro.

Percorso-Planning

L'obiettivo del primo progetto è quello di creare una pipeline di pianificazione del percorso in grado di navigare in modo intelligente, sicuro e confortevole su un'auto virtuale lungo un'autostrada virtuale con altro traffico.

La pianificazione del percorso non è così semplice come gli altri progetti. Ci sono state presentate molte idee su previsioni, generazione di traiettorie e pianificazione comportamentale, ma ci siamo lasciati al buio su come usarli effettivamente per questo specifico progetto.

LIBRO DI MIRTILLO PROFONDO: Se hai sempre voluto iniziare a imparare gratuitamente l'apprendimento profondo, potresti esserti imbattuto nel posto giusto! (fai clic su questo link)

Fortunatamente, il team di SDCND Slack era così vivace e vivace con molte persone che condividevano idee, approcci e risultati. Di conseguenza, diversi studenti hanno escogitato diversi modi per risolvere il problema, raggiungendo lo stesso obiettivo e non necessariamente utilizzando le idee tratte dalle lezioni. Penso che sia fantastico, e ricorda quella storia carina del barometro.

Tuttavia, sono rimasto deluso da quello che è successo nella Bosch Challenge. Su 66 invii, solo sei hanno terminato e per qualche motivo alcuni invii non sono stati compilati correttamente. Alcuni hanno ricevuto feedback che il loro codice non è stato compilato o che non hanno completato la traccia e altri (incluso me stesso) non hanno ricevuto alcun feedback.

Per me andava bene, dal momento che non ci ho fatto molto sforzo. C'era solo una grande differenza tra il mio progetto presentato e gli altri: invece di utilizzare il divario misurato istantaneo del mio veicolo con i veicoli più vicini in ogni corsia, per maggiore sicurezza ho usato un "divario effettivo" calcolato che aggiunge ulteriore distanza in base al velocità attuale del veicolo e latenza presunta. Ho anche apportato alcune modifiche ai parametri e modifiche nel calcolo dei costi. Mi sento male per gli altri studenti però.

Elettivo

C'erano due elettivi: segmentazione semantica e sicurezza funzionale. La sicurezza funzionale è interessante, ma ho scelto la segmentazione semantica, perché è un progetto di codifica. Il progetto di sicurezza funzionale consisteva nello scrivere un documento.

In ogni caso, ho imparato a conoscere il concetto di sicurezza funzionale, nonché i quadri di sicurezza funzionale, per garantire che il veicolo fosse sicuro, sia a livello di sistema che a livello di componenti. Per la segmentazione semantica, dovevamo usare uno script FCN (Fully-Convolutional Network) per etichettare i pixel delle strade nelle immagini.

Per completare questo progetto, ho letto alcuni materiali aggiuntivi online. Ad essere sincero, anche dopo aver letto così tanto, capisco ancora le FCN solo a un livello superficiale. Se sei propenso, ecco le risorse che ho trovato più utili:

Refreshers di TensorFlow: TensorFlow Tutorial, CNN of Image Classification, TensorFlow Tip

Concetti sulla segmentazione semantica: segmentazione semantica nel 2017, trasposizione della convoluzione in TensorFlow, video di una classe di Stanford sulla segmentazione semantica, un documento reale sulla segmentazione semantica

Transpose Convolution: A Guide to Convolution Arithmetic, Theano: Transpose Convolution, Transpose Convolution Animations

Per questo progetto, ci è stato dato il codice modello e abbiamo dovuto solo compilare le parti necessarie. Mi sento come se non fossi in una buona posizione per commentare la struttura del codice, dato che non ho fatto molto con TensorFlow. Ma alcune persone che hanno codificato per molto tempo hanno menzionato che il modello per questo specifico progetto avrebbe potuto essere scritto in un modo migliore.

Progetto di integrazione di sistemi

Ciò che mi è piaciuto di più di questo progetto è stato il fatto che si trattava di un progetto di gruppo. All'inizio ero un po 'preoccupato, pensando che nessuno avrebbe voluto essere il mio compagno di squadra.

Ero elettrizzato quando Lukasz mi ha invitato a far parte del suo team, Kung-Fu-Panda Automotive. Ero entusiasta di lavorare con persone di diversi paesi e diversi ceti sociali. Io dalle Filippine, Lukasz dalla Svizzera, Kostas dalla Grecia, Maurice dalla Germania e Alexey da Londra (Alexey se ne andò, poiché aveva cose personali a cui occuparsi in quel momento e alla fine guidò la sua squadra.).

Sono stato fortunato a essere finito in un gruppo appassionato pieno di membri con cui mi sono divertito molto a lavorare. Non abbiamo avuto problemi che altri gruppi avevano, come i membri che non rispondevano, argomenti e conflitti.

Citerò il mio compagno di squadra Kostas poiché abbiamo un sentimento simile riguardo a questo progetto finale (ha scritto questo articolo) e penso che non avrebbe potuto esprimerlo meglio:

“Sfortunatamente, come parte della prima coorte, questo progetto non è così interessante come potrebbe essere. Ogni squadra di cinque (5) persone deve affrontare due problemi di base (a) programmare un controller per l'auto (b) identificare i semafori e far fermare l'auto in posizioni predefinite. Solo quello. Nessuna fusione del sensore, nessun'altra auto, nessuna pianificazione del percorso. Sembra limitato per una squadra di cinque. Spero che ciò possa cambiare nelle future iterazioni del nanodegree.
La parte più difficile di questo progetto è stata in realtà la mancanza di specifiche e le continue supposizioni, perché abbiamo potuto testare il nostro codice nel simulatore ma le specifiche dell'auto non sono state determinate completamente. Ad esempio, ci viene chiesto di fornire l'acceleratore in percentuale, ma non sappiamo a cosa corrisponda anche l'acceleratore 1.0 (100%). Normalmente quando si preme l'acceleratore fino in fondo in un'auto, si comanda al motore di fornire tutta la coppia disponibile alle ruote motrici, ma quel valore dipende dalla velocità attuale, dal cambio, dal numero di giri e forse da più valori. Non abbiamo idea di come si comporti la macchina e ogni squadra cerca di affrontare quel problema invece di avere specifiche chiare. ”- Kostas Oreopolous

Quindi, hai un lavoro SDC ora?

Va bene, prima di tutto, per favore, smetti: sto avendo un attacco di panico!

Trovare un lavoro in questo campo non è così semplice, soprattutto dalle Filippine. Ma certo, è possibile, come ha appena fatto questa donna dall'India. Diffidare del pregiudizio per la sopravvivenza, però.

Mentre ho ricevuto alcuni inviti per un lavoro, nessuno di loro era disposto a sponsorizzare il mio visto. Inoltre, non ho speso (né sto pensando di spendere) energia alla ricerca di un lavoro della DSC presto. Spiegherò perché più tardi.

Se ti iscrivi a SDCND sperando di ottenere uno stipendio di 100.000 USD (specialmente se non sei degli Stati Uniti o dell'Europa), preparati a rimanere gravemente deluso. Tuttavia, se ti stai iscrivendo perché hai un vero interesse in questo campo, allora ci sono buone probabilità che ti piacerà.

Quindi, come si ottiene un lavoro in DSC? Nella mia mente, in genere classifico i lavori della DSC in tre tipi principali:

  • Roba di percezione e apprendimento automatico
  • Roba di ingegneria software hardcore
  • Roba di ricerca e sviluppo

Naturalmente, questo non vuol dire che non ci sono altri tipi di lavori della DSC, come i lavori di ingegnere meccanico o di ingegnere elettronico. È solo che i tipi di lavori che ho menzionato prima sono quelli che vedo comunemente nelle descrizioni dei lavori della DSC. Non credo che ottenere un lavoro in nessuna di queste tre aree principali richieda l'iscrizione a Udacity;).

Parliamo di queste aree un po 'di più.

Roba di percezione e apprendimento automatico

Un'auto a guida autonoma richiede che l'auto capisca ciò che la circonda per prendere decisioni. Questo è qualcosa che i conducenti umani danno per scontato, ma le aziende a guida autonoma stanno ancora perfezionando per garantire la sicurezza dei passeggeri.

Nella mia mente, lo chiamo "George Sung Path". Ha anche preso la SDCND e alla fine è diventato un ingegnere di auto-apprendimento auto a guida autonoma presso la BMW.

Se vuoi seguire questo percorso, dovresti imparare TensorFlow. E infine applica ciò che hai appreso sul tuo progetto open source e / o partecipa alle competizioni Kaggle.

“Gran parte dell'intervista è stata anche dedicata alla discussione dei miei progetti passati in deep learning e visione artificiale: le mie motivazioni, il processo che ho attraversato, come potevo migliorare i progetti. Una domanda particolare che è stata posta più volte è stata "come hai superato i requisiti del corso?", O allo stesso modo "quale dei tuoi progetti non faceva parte dei corsi?". Una caratteristica importante è quella di essere sinceramente curioso sull'argomento, in modo da andare oltre i requisiti del progetto e / o creare i tuoi progetti interessanti ”- George Sung

Roba di ingegneria software hardcore

Secondo Paysa, oltre il 90% dei candidati a lavoro autonomo deve conoscere il C ++. Inoltre, C ++ è un linguaggio compilato e ad alte prestazioni, quindi la maggior parte del codice che viene effettivamente eseguito sul veicolo tende ad essere C ++. Dai un'occhiata a questo repository per alcune risorse C ++.

Sii molto, molto bravo e impara le sfumature del C ++ e preparati per il colloquio di programmazione. Nella mia mente, questo è il "Googley come diamine percorso". È necessario disporre di una base davvero solida in strutture di dati e algoritmi.

Da Paysa

Roba di ricerca e sviluppo

Questo è il percorso più tradizionale, che richiede un master, preferibilmente in robotica e in modo non negoziabile da un'università rispettabile. Se vuoi essere in grado di avere una solida comprensione di idee diverse da persone molto brillanti su come risolvere i problemi di ingegneria, questo è il percorso che fa per te. E se vuoi essere in grado di aggiungere al corpus di conoscenze all'avanguardia e in continua evoluzione, allora questo sarebbe il modo migliore per andare. È anche un ottimo modo per poter lavorare con persone affini in un grande laboratorio di ricerca robotica nel prossimo futuro.

Dai un'occhiata al mio repository di corsi di robotica qui.

Sommario

Questo articolo potrebbe essere un po 'complicato, ma volevo solo condividere le mie opinioni su SDCND e SDC Jobs. Il corso è stata un'esperienza ok. Tuttavia, se stai solo pensando di spendere $ 2.400 USD nella speranza di ottenere quel salario di 100k USD, probabilmente dovresti spendere i tuoi soldi per qualcos'altro (vedi i miei consigli sopra).

In sintesi, non lo consiglio davvero. Penso che ci dovrebbe essere il doppio dei contenuti e una presentazione molto migliore, a metà prezzo. Esistono molti contenuti gratuiti che offrono una presentazione molto migliore dell'argomento.

Da Paysa

Terminerò questo articolo con una citazione del mio compagno di squadra Kostas:

"Ho quasi dimenticato. La parte migliore del programma sono colleghi studenti. Tutti condividono la stessa passione per l'apprendimento, indipendentemente dall'età o dal background di apprendimento. Il canale Slack è la parte migliore del corso. Scambiate idee con altre persone, aiutate e vieni aiutato. Questo è ciò che rende l'esperienza 100 volte più interessante dal fatto di essere isolata. "
Se questo articolo ti ha aiutato in qualche modo, considera di comprarmi un caffè :)