摘要:在我已經(jīng)制作完成一輛可以運(yùn)行的遙控車時(shí),公司發(fā)布了一個(gè)自駕車項(xiàng)目,來(lái)展示自動(dòng)駕駛汽車的工作原理。需要注意的是,這里用的都是語(yǔ)言而非,其主要原因有兩個(gè)一方面,近來(lái)似乎已成為運(yùn)用機(jī)器學(xué)習(xí)技術(shù)時(shí)實(shí)際使用的語(yǔ)言。
最近,Mapbox 的 Android 工程師 Antonio 使用計(jì)算機(jī)視覺(jué)和機(jī)器學(xué)習(xí)技術(shù),為他的女兒 Violeta 重新制作了一臺(tái)遙控車。接下來(lái)我們看看 Antonio 是如何實(shí)現(xiàn)是:
今年上半年的一天,我和女兒 Violeta 在玩著她爺爺奶奶送給她的遙控車。為了學(xué)習(xí)如何操控它, Violeta “有條不紊”地開著車撞向每一個(gè)家具,結(jié)果就在某一個(gè)“砰”聲后,遙控車罷工了。我們打開了遙控車內(nèi)部,瞧瞧是哪兒出了問(wèn)題——幸好只是一根電線松了,幾分鐘后,我就搞定它了。
然而,這個(gè)小插曲卻引起了我的思考。這些用集成電路板做的小玩具生產(chǎn)成本低但是修起來(lái)卻未必那么容易。
如果下一次把車?yán)锏牧慵矇牧耍覀冇中薏涣耍窃撛趺崔k?
在那段時(shí)間,安卓剛剛發(fā)布了 Android Things, 是安卓開發(fā)的“小周邊”,在樹莓派(Raspberry Pi) 和類似的 IoT 設(shè)備上運(yùn)行。我對(duì)安卓非常熟悉,所以我做了個(gè)決定,相信你們也能猜到:我決定重新制造一臺(tái)“不怕撞”的遙控車。
硬件
硬件方面,我是用現(xiàn)成的組件組裝的,這樣如果有部件損壞,更換起來(lái)比較方便。以下是我的簡(jiǎn)短的購(gòu)物單(總價(jià)略高于100美元):
一個(gè)樹莓派(Raspberry Pi)(大約35美元);
一個(gè)馬達(dá)控制器(22美元)—— 馬達(dá)不能直接連接在樹莓派上;
一個(gè)便攜式充電器(用來(lái)為樹莓派和馬達(dá)充電)(30美元);
最后,是一個(gè)支撐框架。Junior Runt Rover 是一個(gè)不錯(cuò)的選擇(28美元),當(dāng)然你也可以從別的玩具上拆一個(gè)下來(lái)。
通過(guò)一個(gè)安卓系統(tǒng)下的配套應(yīng)用程序可以控制遙控車,該控制通過(guò)一個(gè)本地服務(wù)器實(shí)現(xiàn)。然而,我不得不告訴你,用一個(gè)復(fù)古的任天堂控制器一定會(huì)有趣的多(當(dāng)然你的預(yù)算得調(diào)高35美元)。
將這些組件直接拼裝在一起即可,拼裝過(guò)程我另有記錄。此外,還有一些注意的地方:
關(guān)于焊接:我還未找到一臺(tái)與樹莓派兼容且已焊接的馬達(dá)控制器。你可能需要從床底翻出你的焊臺(tái)或者問(wèn)朋友借一臺(tái)。焊接本身不難,但是你可能需要提前練習(xí)一下,畢竟零件都太小了。
超越樹莓派:Android Things 是 IoT 設(shè)備上一個(gè)抽象的圖層,雖然樹莓派廣受興趣愛好者的歡迎,但其它設(shè)備也同樣支持,而且不需要改一行代碼。到目前為止,我的最愛還是 NXP Pico. 它的優(yōu)勢(shì)在于高速的內(nèi)存(這樣你就不需要再額外買一張 SD 卡),并且它帶有一個(gè)模組化系統(tǒng)。如果你想要將你的硬件項(xiàng)目實(shí)體化,那么哪些實(shí)體產(chǎn)品設(shè)備會(huì)用到這種模塊(是不是似乎看到了商機(jī)……)
一開始,我以為我女兒會(huì)害怕我自制的遙控車,沒(méi)想到她毫不畏懼,還很喜歡帶著它“跌跌撞撞”闖蕩世界。看,領(lǐng)居家的貓也很喜歡它……
軟件
設(shè)計(jì)軟件時(shí),發(fā)生了一些我計(jì)劃外的事。在我已經(jīng)制作完成一輛可以運(yùn)行的遙控車時(shí),Udacity 公司發(fā)布了一個(gè)自駕車“nanodegree”項(xiàng)目,來(lái)展示自動(dòng)駕駛汽車的工作原理。
他們運(yùn)用了計(jì)算機(jī)視覺(jué)(Computer Vision)和深度學(xué)習(xí)(Deep Learning)技術(shù)來(lái)使自動(dòng)駕駛汽車識(shí)別道路和人行道。這些技術(shù)都從實(shí)用角度出發(fā),讓你在模擬器甚至在車子里都可以進(jìn)行編程。
有很長(zhǎng)一段時(shí)間,自動(dòng)駕駛汽車技術(shù)于我而言就是一個(gè)未知的匣子,我渴望探索,因此我毫不猶豫報(bào)名了相關(guān)課程并申請(qǐng)加入了遙控車項(xiàng)目。
在課程中你第一個(gè)學(xué)到的是自動(dòng)駕駛汽車識(shí)別物體的兩種方式(通常兩種方法結(jié)合使用):計(jì)算機(jī)視覺(jué)技術(shù)(Computer Vision)和機(jī)器學(xué)習(xí)技術(shù)(Machine Learning)。
無(wú)論你使用哪種技術(shù),你都需要一個(gè)攝像頭來(lái)探測(cè)車前的情況。這并不困難。現(xiàn)在你只要花30美金就能買到一個(gè)800萬(wàn)像素的可直接連接樹莓派或其它設(shè)備的攝像頭。
計(jì)算機(jī)視覺(jué)技術(shù)(Computer Vision)
計(jì)算機(jī)視覺(jué)技術(shù)是最為直觀的技術(shù)。它的主要原理是從車上的攝像頭提取關(guān)于街道的信息并進(jìn)行圖像過(guò)濾和轉(zhuǎn)化(這里就需要車內(nèi)攝像頭有足夠的高度來(lái)拍攝一個(gè)比較好的視角)。
為了使這樣的分析可行,并且使車子可以對(duì)分析結(jié)果有實(shí)時(shí)的應(yīng)對(duì),我使用了一種同地圖 SDK 很類似的方法:花了一番功夫在C++上(使用開源的計(jì)算機(jī)視覺(jué)技術(shù)代碼),并在Java端展示了所用的方法,藉此,安卓系統(tǒng)可以做出判斷是直行或轉(zhuǎn)彎。
一旦這一步完成了,我們就做得差不多了。那我們就從項(xiàng)目測(cè)試套件開始吧,下面這張圖展示了測(cè)試的一部分:
1、將獲取的畫面轉(zhuǎn)化成圖片,這張圖看起來(lái)就像是從攝像頭拍攝的照片。(如果你熟悉開源計(jì)算機(jī)視覺(jué)技術(shù)代碼的話,你就能知道這結(jié)合了 “getPerspectiveTransform” 和 “warpPerspective”)。這一步清除了畫面中所有的無(wú)關(guān)物體,從而使車子可以集中于眼前的道路:
2、進(jìn)行色差閾分析使車子從獲取的畫面中識(shí)別出路線。根據(jù)你設(shè)計(jì)的路線顏色(比如我這里是亮黃色)可以選擇不同的色彩空間。鑒于 HSV 色彩空間更符合人類識(shí)別、感知顏色的方式,你可以將開源計(jì)算機(jī)視覺(jué)技術(shù)中默認(rèn)的 BGR 色彩空間改成 HSV 色彩空間,利用 HSV 中的色相和飽和度范圍還可以更容易地過(guò)濾具體的顏色。
3、最后,我們需要繪制分布圖來(lái)找到最佳的位置定位(如下圖所示的垂直藍(lán)線):
好了,做完上面幾步,你的小車就能聽你的話看準(zhǔn)自己的車道了!
接下來(lái),我們要為小車安裝雷達(dá)定位器了 :-)
你想知道從小車的攝像頭里看出去是怎樣的嗎?那不妨來(lái)看看這個(gè)視頻吧(https://www.youtube.com/watch...).這是你在 Udacity 訓(xùn)練中要做的一個(gè)練習(xí)。
機(jī)器學(xué)習(xí)技術(shù)(Machine Learning)
另一種讓小車自動(dòng)駕駛的方法就是機(jī)器學(xué)習(xí)技術(shù)(Machine Learning)(又稱:深度學(xué)習(xí)卷積神經(jīng)網(wǎng)絡(luò))。深度學(xué)習(xí)技術(shù)目前已經(jīng)成為自動(dòng)駕駛汽車發(fā)展中十分重要的一種方法。大部分情況下,你都會(huì)用真實(shí)數(shù)據(jù)構(gòu)建一個(gè)模型來(lái)區(qū)分交通信號(hào),或是通過(guò)克隆學(xué)習(xí)真實(shí)情況下的汽車行為使自動(dòng)駕駛汽車能夠做出即時(shí)的駕駛判斷。你會(huì)找上千張照片,然后將其中你想讓汽車學(xué)習(xí)的部分進(jìn)行編碼(比如,每個(gè)車輪的轉(zhuǎn)速)。
這樣做的問(wèn)題在于設(shè)計(jì)一個(gè)卷積神經(jīng)網(wǎng)絡(luò)并不是容易事,而且對(duì)于我要達(dá)成的目標(biāo)而言太小題大做了。
所以,我換了一種方法。我參考 NVIDIA 發(fā)布的公開的相關(guān)研究報(bào)告后(點(diǎn)擊可查看完整研究報(bào)告),選用了其中一種網(wǎng)絡(luò)架構(gòu)。這種架構(gòu)由九層組成,包括一個(gè)標(biāo)準(zhǔn)化層,五個(gè)卷積層,三個(gè)全連接層:
使用 Keras 這樣的工具,只需要幾行代碼就能實(shí)現(xiàn)。
需要注意的是,這里用的都是 Python 語(yǔ)言而非 Java,其主要原因有兩個(gè):
一方面,近來(lái) Python 似乎已成為運(yùn)用機(jī)器學(xué)習(xí)技術(shù)時(shí)實(shí)際使用的語(yǔ)言。它有很大的程序庫(kù)和相關(guān)文檔記載,而且像在使用 TensorFlow 這類框架時(shí)也經(jīng)常使用它。
另一方面,誰(shuí)都不愿意在小容量的樹莓派上調(diào)試模型,實(shí)在太慢、太不方便了。所以很多人會(huì)選擇用一個(gè)更強(qiáng)大的筆記本電腦或是一個(gè)云端的服務(wù)器(比如許多 Mapboxers 會(huì)這么做:mapbox/morecs#54)。
社區(qū)
在我研究過(guò)程中最棒的就是能夠認(rèn)識(shí)這群熱衷于自己造自動(dòng)駕駛汽車(“機(jī)器車”)的狂熱愛好者。這起初只是 Chris Anderson 在加利福尼亞州奧克蘭市發(fā)起的一場(chǎng)同好聚會(huì),沒(méi)想到迅速擴(kuò)散到了其他地方。
你可能因?yàn)椤哆B線》雜志或是“開始DIY無(wú)人駕駛飛機(jī)”這樣的事情知道 Chris Anderson 的名字。他說(shuō)他的志向就是“用‘DIY’去攻克世界上所有著名的大型產(chǎn)業(yè),并看看會(huì)怎么樣”。
下面這張圖表是最近一次機(jī)器車同好小聚上,大家對(duì)比的計(jì)算機(jī)視覺(jué)技術(shù)和機(jī)器學(xué)習(xí)技術(shù)。你可以發(fā)現(xiàn),兩種技術(shù)方法表現(xiàn)都很好。雖然計(jì)算機(jī)視覺(jué)技術(shù)更快地取得優(yōu)勢(shì),但機(jī)器學(xué)習(xí)技術(shù)也不遜色,很快地追了上去:
寫在最后
如果你想了解更多關(guān)于自動(dòng)駕駛汽車,或是他們的小兄弟機(jī)器車的信息,不妨看看下面幾條:
如果你熟悉 Java/ Android, 可以參考這個(gè)說(shuō)明來(lái)搭建你自己的安卓機(jī)器車。
如果你更喜歡用 Python,那建議你可以從兒童單車項(xiàng)目開始。它的編程和搭建更加復(fù)雜(它需要可打印的3D模型),但也的確非常值得你這樣的投入。
如果你有任何問(wèn)題,或者分享有關(guān)遙控車、計(jì)算機(jī)視覺(jué)(Computer Vision)和深度學(xué)習(xí)(Deep Learning)技術(shù)方面的內(nèi)容,隨時(shí)歡迎聯(lián)系 Mapbox 公眾號(hào)。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/90072.html
摘要:深度學(xué)習(xí)在過(guò)去的幾年里取得了許多驚人的成果,均與息息相關(guān)。機(jī)器學(xué)習(xí)進(jìn)階筆記之一安裝與入門是基于進(jìn)行研發(fā)的第二代人工智能學(xué)習(xí)系統(tǒng),被廣泛用于語(yǔ)音識(shí)別或圖像識(shí)別等多項(xiàng)機(jī)器深度學(xué)習(xí)領(lǐng)域。零基礎(chǔ)入門深度學(xué)習(xí)長(zhǎng)短時(shí)記憶網(wǎng)絡(luò)。 多圖|入門必看:萬(wàn)字長(zhǎng)文帶你輕松了解LSTM全貌 作者 | Edwin Chen編譯 | AI100第一次接觸長(zhǎng)短期記憶神經(jīng)網(wǎng)絡(luò)(LSTM)時(shí),我驚呆了。原來(lái),LSTM是神...
摘要:近年來(lái),觀山湖區(qū)按照省委省政府大扶貧大數(shù)據(jù)大生態(tài)三大戰(zhàn)略行動(dòng)部署和市委市政府打造公平共享創(chuàng)新型中心城市的目標(biāo)要求,堅(jiān)定不移守底線走新路,縱深推進(jìn)大數(shù)據(jù)戰(zhàn)略行動(dòng),按照三融合六中心多板塊的思路,推進(jìn)大數(shù)據(jù)產(chǎn)業(yè)發(fā)展及中國(guó)數(shù)谷核心區(qū)建設(shè)。市民體驗(yàn)花舞林城沉浸式數(shù)字光影藝術(shù)大展。 王頊 攝位于觀山湖區(qū)的貴陽(yáng)大數(shù)據(jù)創(chuàng)新產(chǎn)業(yè)(技術(shù))發(fā)展中心。(觀山湖區(qū)大數(shù)據(jù)局供圖)一份分析報(bào)告幫你預(yù)測(cè)身體健康走勢(shì)、通過(guò)手...
閱讀 3726·2023-04-25 17:45
閱讀 3435·2021-09-04 16:40
閱讀 1003·2019-08-30 13:54
閱讀 2133·2019-08-29 12:59
閱讀 1403·2019-08-26 12:11
閱讀 3283·2019-08-23 15:17
閱讀 1525·2019-08-23 12:07
閱讀 3884·2019-08-22 18:00